summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2013-04-22 10:50:03 -0500
committerDan McGee <dan@archlinux.org>2013-04-22 10:50:03 -0500
commit6fa6a8db0787fa40fa1c88b725b0bce184903c4c (patch)
treeb2cf3c23035ba994c947086f6ae5eec869f3aec3
parent007b8d7573b64fd7f17023fa0288ba79e05683c4 (diff)
Use required_signoffs value when creating signoff specs
And respect it elsewhere when we create a fake default specification because a real one does not exist yet. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--packages/management/commands/populate_signoffs.py6
-rw-r--r--packages/models.py12
-rw-r--r--packages/utils.py4
-rw-r--r--templates/packages/signoffs.html2
4 files changed, 16 insertions, 8 deletions
diff --git a/packages/management/commands/populate_signoffs.py b/packages/management/commands/populate_signoffs.py
index 97ba4146..a9c1c81c 100644
--- a/packages/management/commands/populate_signoffs.py
+++ b/packages/management/commands/populate_signoffs.py
@@ -29,7 +29,8 @@ logging.basicConfig(
logger = logging.getLogger()
class Command(NoArgsCommand):
- help = "Pull the latest commit message from SVN for a given package that is signoff-eligible and does not have an existing comment attached"
+ help = """Pull the latest commit message from SVN for a given package that
+is signoff-eligible and does not have an existing comment attached"""
def handle_noargs(self, **options):
v = int(options.get('verbosity', None))
@@ -74,10 +75,11 @@ cached_svn_log.cache = {}
def create_specification(package, log, finder):
trimmed_message = log['message'].strip()
+ required = package.arch.required_signoffs
spec = SignoffSpecification(pkgbase=package.pkgbase,
pkgver=package.pkgver, pkgrel=package.pkgrel,
epoch=package.epoch, arch=package.arch, repo=package.repo,
- comments=trimmed_message)
+ comments=trimmed_message, required=required)
spec.user = finder.find_by_username(log['author'])
return spec
diff --git a/packages/models.py b/packages/models.py
index f830aade..6477d412 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -60,7 +60,8 @@ class SignoffSpecificationManager(models.Manager):
pkgbase=pkg.pkgbase, pkgver=pkg.pkgver, pkgrel=pkg.pkgrel,
epoch=pkg.epoch, arch=pkg.arch, repo=pkg.repo)
except SignoffSpecification.DoesNotExist:
- return DEFAULT_SIGNOFF_SPEC
+ return fake_signoff_spec(pkg.arch)
+
class SignoffSpecification(models.Model):
'''
@@ -97,10 +98,15 @@ class SignoffSpecification(models.Model):
return u'%s-%s' % (self.pkgbase, self.full_version)
-# fake default signoff spec when we don't have a persisted one in the database
+# Fake signoff specs for when we don't have persisted ones in the database.
+# These have all necessary attributes of the real thing but are lighter weight
+# and have no chance of being persisted.
FakeSignoffSpecification = namedtuple('FakeSignoffSpecification',
('required', 'enabled', 'known_bad', 'comments'))
-DEFAULT_SIGNOFF_SPEC = FakeSignoffSpecification(2, True, False, u'')
+
+
+def fake_signoff_spec(arch):
+ return FakeSignoffSpecification(arch.required_signoffs, True, False, u'')
class SignoffManager(models.Manager):
diff --git a/packages/utils.py b/packages/utils.py
index 4f3b8665..b8d1504d 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -14,7 +14,7 @@ from main.utils import (database_vendor,
groupby_preserve_order, PackageStandin)
from .models import (PackageGroup, PackageRelation,
License, Depend, Conflict, Provision, Replacement,
- SignoffSpecification, Signoff, DEFAULT_SIGNOFF_SPEC)
+ SignoffSpecification, Signoff, fake_signoff_spec)
VERSION_RE = re.compile(r'^((\d+):)?(.+)-([^-]+)$')
@@ -297,7 +297,6 @@ class PackageSignoffGroup(object):
self.user = None
self.target_repo = None
self.signoffs = set()
- self.specification = DEFAULT_SIGNOFF_SPEC
self.default_spec = True
first = packages[0]
@@ -308,6 +307,7 @@ class PackageSignoffGroup(object):
self.last_update = first.last_update
self.packager = first.packager
self.maintainers = first.maintainers
+ self.specification = fake_signoff_spec(first.arch)
version = first.full_version
if all(version == pkg.full_version for pkg in packages):
diff --git a/templates/packages/signoffs.html b/templates/packages/signoffs.html
index 6fbbd00e..807b613b 100644
--- a/templates/packages/signoffs.html
+++ b/templates/packages/signoffs.html
@@ -68,7 +68,7 @@
{% endif %}
<td>{% include "packages/signoff_cell.html" %}</td>
<td class="wrap note">{% if not group.default_spec %}{% with group.specification as spec %}{% comment %}
- {% endcomment %}{% if spec.required != 2 %}Required signoffs: {{ spec.required }}<br/>{% endif %}{% comment %}
+ {% endcomment %}{% if spec.required != spec.arch.required_signoffs %}Required signoffs: {{ spec.required }}<br/>{% endif %}{% comment %}
{% endcomment %}{% if not spec.enabled %}Signoffs are not currently enabled<br/>{% endif %}{% comment %}
{% endcomment %}{% if spec.known_bad %}Package is known to be bad<br/>{% endif %}{% comment %}
{% endcomment %}{{ spec.comments|default:""|linebreaksbr }}