summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devel/utils.py16
-rw-r--r--packages/management/commands/populate_signoffs.py13
2 files changed, 22 insertions, 7 deletions
diff --git a/devel/utils.py b/devel/utils.py
index d7a154a8..62b12cd5 100644
--- a/devel/utils.py
+++ b/devel/utils.py
@@ -47,6 +47,7 @@ SELECT pr.user_id, COUNT(*), COUNT(p.flag_date)
class UserFinder(object):
def __init__(self):
self.cache = {}
+ self.username_cache = {}
@staticmethod
def user_email(name, email):
@@ -111,7 +112,22 @@ class UserFinder(object):
self.cache[userstring] = user
return user
+ def find_by_username(self, username):
+ if not username:
+ return None
+ if username in self.username_cache:
+ return self.username_cache[username]
+
+ try:
+ user = User.objects.get(username=username)
+ except User.DoesNotExist:
+ user = None
+
+ self.username_cache[username] = user
+ return user
+
def clear_cache(self):
self.cache = {}
+ self.username_cache = {}
# vim: set ts=4 sw=4 et:
diff --git a/packages/management/commands/populate_signoffs.py b/packages/management/commands/populate_signoffs.py
index 5b5acbaf..ce5ec734 100644
--- a/packages/management/commands/populate_signoffs.py
+++ b/packages/management/commands/populate_signoffs.py
@@ -20,6 +20,7 @@ from django.core.management.base import NoArgsCommand
from ...models import SignoffSpecification
from ...utils import get_signoff_groups
+from devel.utils import UserFinder
logging.basicConfig(
level=logging.INFO,
@@ -58,17 +59,13 @@ def svn_log(pkgbase, repo):
'message': xml.findtext('logentry/msg'),
}
-def create_specification(package, log):
+def create_specification(package, log, finder):
trimmed_message = log['message'].strip()
spec = SignoffSpecification(pkgbase=package.pkgbase,
pkgver=package.pkgver, pkgrel=package.pkgrel,
epoch=package.epoch, arch=package.arch, repo=package.repo,
comments=trimmed_message)
- try:
- spec.user = User.objects.get(username=log['author'])
- except User.DoesNotExist:
- pass
-
+ spec.user = finder.find_by_username(log['author'])
return spec
def add_signoff_comments():
@@ -76,6 +73,8 @@ def add_signoff_comments():
groups = get_signoff_groups()
logger.info("%d signoff groups found", len(groups))
+ finder = UserFinder()
+
for group in groups:
if not group.default_spec:
continue
@@ -83,7 +82,7 @@ def add_signoff_comments():
logger.debug("getting SVN log for %s (%s)", group.pkgbase, group.repo)
log = svn_log(group.pkgbase, group.repo)
logger.info("creating spec with SVN message for %s", group.pkgbase)
- spec = create_specification(group.packages[0], log)
+ spec = create_specification(group.packages[0], log, finder)
spec.save()
# vim: set ts=4 sw=4 et: