diff options
author | Priit Laes <plaes@plaes.org> | 2010-08-03 17:05:09 +0300 |
---|---|---|
committer | Priit Laes <plaes@plaes.org> | 2010-08-03 17:06:06 +0300 |
commit | a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df (patch) | |
tree | e7dd022d6d920e616208f29c68e653d3d5b0c955 | |
parent | Re-implement herds management for package (diff) | |
download | gsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.tar.gz gsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.tar.bz2 gsoc2010-grumpy-a1c8788fbaa2f26bfaf190e4d00b9ad65f7380df.zip |
Implement maintainer management for packages
-rw-r--r-- | grumpy/models.py | 22 | ||||
-rw-r--r-- | grumpy/testsuite/pkgmodel.py | 5 |
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)) |