diff options
author | Dan McGee <dan@archlinux.org> | 2013-02-27 01:45:14 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2013-02-27 01:45:14 +0100 |
commit | f85cc0482a44ced9aed372b8972d31040ed4043b (patch) | |
tree | f0790247018bfa5c243fff623f917d7a7a8bf0cf /packages | |
parent | 1457f78594a25f8cfb8ad1f9b3cd6d071a3d6a93 (diff) | |
parent | a25cc4ff459ab0070ce48730f6c6fdc227860f08 (diff) | |
download | archweb-f85cc0482a44ced9aed372b8972d31040ed4043b.tar.gz archweb-f85cc0482a44ced9aed372b8972d31040ed4043b.tar.xz |
Merge branch 'django-1.5'
Conflicts:
requirements.txt
requirements_prod.txt
Diffstat (limited to 'packages')
-rw-r--r-- | packages/models.py | 20 | ||||
-rw-r--r-- | packages/views/signoff.py | 2 |
2 files changed, 9 insertions, 13 deletions
diff --git a/packages/models.py b/packages/models.py index ff67788..7bcdc00 100644 --- a/packages/models.py +++ b/packages/models.py @@ -357,16 +357,14 @@ class RelatedToBase(models.Model): name = models.CharField(max_length=255, db_index=True) version = models.CharField(max_length=255, default='') - def get_best_satisfier(self, main_pkg=None): + def get_best_satisfier(self): '''Find a satisfier for this related package that best matches the given criteria. It will not search provisions, but will find packages named and matching repo characteristics if possible.''' - if main_pkg is None: - main_pkg = self.pkg pkgs = Package.objects.normal().filter(pkgname=self.name) - if not main_pkg.arch.agnostic: + if not self.pkg.arch.agnostic: # make sure we match architectures if possible - arches = main_pkg.applicable_arches() + arches = self.pkg.applicable_arches() pkgs = pkgs.filter(arch__in=arches) # if we have a comparison operation, make sure the packages we grab # actually satisfy the requirements @@ -386,27 +384,25 @@ class RelatedToBase(models.Model): pkg = pkgs[0] # prevents yet more DB queries, these lists should be short; # after each grab the best available in case we remove all entries - pkgs = [p for p in pkgs if p.repo.staging == main_pkg.repo.staging] + pkgs = [p for p in pkgs if p.repo.staging == self.pkg.repo.staging] if len(pkgs) > 0: pkg = pkgs[0] - pkgs = [p for p in pkgs if p.repo.testing == main_pkg.repo.testing] + pkgs = [p for p in pkgs if p.repo.testing == self.pkg.repo.testing] if len(pkgs) > 0: pkg = pkgs[0] return pkg - def get_providers(self, main_pkg=None): + def get_providers(self): '''Return providers of this related package. Does *not* include exact matches as it checks the Provision names only, use get_best_satisfier() instead for exact matches.''' - if main_pkg is None: - main_pkg = self.pkg pkgs = Package.objects.normal().filter( provides__name=self.name).order_by().distinct() - if not main_pkg.arch.agnostic: + if not self.pkg.arch.agnostic: # make sure we match architectures if possible - arches = main_pkg.applicable_arches() + arches = self.pkg.applicable_arches() pkgs = pkgs.filter(arch__in=arches) # If we have a comparison operation, make sure the packages we grab diff --git a/packages/views/signoff.py b/packages/views/signoff.py index 17f3095..c37aa0f 100644 --- a/packages/views/signoff.py +++ b/packages/views/signoff.py @@ -45,7 +45,7 @@ def signoff_package(request, name, repo, arch, revoke=False): except Signoff.DoesNotExist: raise Http404 signoff.revoked = now() - signoff.save() + signoff.save(update_fields=('revoked',)) created = False else: # ensure we should even be accepting signoffs |