aboutsummaryrefslogtreecommitdiff
path: root/grumpy
diff options
context:
space:
mode:
authorPriit Laes <plaes@plaes.org>2010-08-03 17:05:09 +0300
committerPriit Laes <plaes@plaes.org>2010-08-03 17:06:06 +0300
commita1c8788fbaa2f26bfaf190e4d00b9ad65f7380df (patch)
treee7dd022d6d920e616208f29c68e653d3d5b0c955 /grumpy
parentRe-implement herds management for package (diff)
downloadgsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.tar.gz
gsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.tar.bz2
gsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.zip
Implement maintainer management for packages
Diffstat (limited to 'grumpy')
-rw-r--r--grumpy/models.py22
-rw-r--r--grumpy/testsuite/pkgmodel.py5
2 files changed, 25 insertions, 2 deletions
diff --git a/grumpy/models.py b/grumpy/models.py
index 1c582e4..4de3b80 100644
--- a/grumpy/models.py
+++ b/grumpy/models.py
@@ -169,12 +169,32 @@ class Package(db.Model):
self.mtime = datetime.fromtimestamp(mtime)
# shared pkg data (from metadata.xml)
self.ldesc = ebuild_src.longdescription
- self.devs = []
+ self.devs = self._parse_maintainers(ebuild_src)
self.herds = self._parse_herds(ebuild_src)
def __repr__(self):
return '<%s> - %s' % (self.__class__.__name__, self.key)
+ def _parse_maintainers(self, ebuild_src):
+ """Update package maintainers."""
+ devs = []
+ for dev in ebuild_src.maintainers:
+ if not dev.email:
+ continue
+ devs.append(dev.email.strip())
+ devs = set(devs)
+ if not devs:
+ return []
+ # Sync developers with database
+ out = []
+ for dev in Developer.query.filter(Developer.email.in_(devs)).all():
+ if dev.email in devs:
+ out.append(dev)
+ devs.remove(dev.email)
+ for dev in devs:
+ out.append(Developer(dev))
+ return out
+
def _parse_herds(self, ebuild_src):
"""Update package herds."""
herds = []
diff --git a/grumpy/testsuite/pkgmodel.py b/grumpy/testsuite/pkgmodel.py
index 9492423..f7e1564 100644
--- a/grumpy/testsuite/pkgmodel.py
+++ b/grumpy/testsuite/pkgmodel.py
@@ -10,6 +10,7 @@
"""
from . import GrumpyTestCase
+from pkgcore.ebuild.repo_objs import Maintainer
from grumpy.models import Category, Ebuild, Herd, Package
import copy, time, unittest
@@ -27,7 +28,9 @@ class PkgModelTestCase(GrumpyTestCase):
'KEYWORDS':'x86 amd64', \
'IUSE':'test +positive flags -negative split-flag'}
sdata = {'longdescription': 'this is longdescription', \
- 'herds': (None, '', 'kala', 'test')}
+ 'herds': (None, '', 'kala', 'test'), \
+ 'maintainers': (Maintainer('test@gentoo.org'), Maintainer('nobody@gentoo.org'))
+ }
p1 = self.get_pkg('%s/testpkg-1.0-r3' % C1, sdata, copy.copy(data))
data['KEYWORDS'] = 'x86 ~amd64'
p2 = self.get_pkg('%s/testpkg-1.0-r4' % C1, sdata, copy.copy(data))