summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/models.py20
-rw-r--r--packages/views/signoff.py2
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