Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
Date: Sun, 03 Jun 2012 13:20:02
Message-Id: 1338727636.0d92c5b317de7af064dea7b14c0cce0b4b926430.bacher09@gentoo
1 commit: 0d92c5b317de7af064dea7b14c0cce0b4b926430
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Sun Jun 3 12:47:16 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Sun Jun 3 12:47:16 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=0d92c5b3
7
8 Changes in models HerdsModel and MaintainerModel
9
10 ---
11 gpackages/apps/packages/managers.py | 24 +++++++++++++++++++
12 gpackages/apps/packages/models.py | 44 +++++++++++++++++++++++++++++++++-
13 2 files changed, 66 insertions(+), 2 deletions(-)
14
15 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
16 index 464b6ce..f613df2 100644
17 --- a/gpackages/apps/packages/managers.py
18 +++ b/gpackages/apps/packages/managers.py
19 @@ -101,3 +101,27 @@ class EbuildMixin(object):
20 EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
21 'EbuildQuerySet',
22 'EbuildManager')
23 +
24 +class HerdsMixin(object):
25 + def filter(self, *args, **kwargs):
26 + if 'herd__in' in kwargs:
27 + herds = kwargs['herd__in']
28 + del kwargs['herd__in']
29 + kwargs['name__in'] = herds
30 + return super(HerdsMixin, self).filter(*args, **kwargs)
31 +
32 +HerdsQuerySet, HerdsManager = _gen_query_and_manager(HerdsMixin,
33 + 'HerdsQuerySet',
34 + 'HerdsManager')
35 +
36 +class MaintainerMixin(object):
37 + def filter(self, *args, **kwargs):
38 + if 'maintainer__in' in kwargs:
39 + maintars = kwargs['maintainer__in']
40 + del kwargs['maintainer__in']
41 + kwargs['email__in'] = maintars
42 + return super(MaintainerMixin, self).filter(*args, **kwargs)
43 +
44 +MaintainerQuerySet, MaintainerManager = _gen_query_and_manager(MaintainerMixin,
45 + 'MaintainerQuerySet',
46 + 'MaintainerManager')
47
48 diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
49 index e315c6b..2ad8faa 100644
50 --- a/gpackages/apps/packages/models.py
51 +++ b/gpackages/apps/packages/models.py
52 @@ -221,13 +221,53 @@ class Keyword(models.Model):
53
54
55 class MaintainerModel(models.Model):
56 - name = models.CharField( unique = True, max_length = 255)
57 - email = models.EmailField()
58 +
59 + def __init__(self, *args, **kwargs):
60 + #TODO: Bad code, maybe use some libraries for overload methods
61 + maintainer = None
62 + if 'maintainer' in kwargs:
63 + maintainer = kwargs['maintainer']
64 + del kwargs['maintainer']
65 + super(MaintainerModel, self).__init__(*args, **kwargs)
66 + if maintainer is not None:
67 + self.init_by_maintainer(maintainer)
68 +
69 + name = models.CharField(max_length = 255, blank = True, null = True)
70 + email = models.EmailField(unique = True)
71 role = models.TextField(blank = True, null = True)
72
73 + objects = managers.MaintainerManager()
74 +
75 + def init_by_maintainer(self, maintainer):
76 + self.name = maintainer.name
77 + self.email = maintainer.email
78 + self.role = maintainer.role
79 +
80 + def __unicode__(self):
81 + return ':'.join((unicode(self.name), self.email))
82 +
83 class HerdsModel(models.Model):
84 +
85 + def __init__(self, *args, **kwargs):
86 + herd = None
87 + if 'herd' in kwargs:
88 + herd = kwargs['herd']
89 + del kwargs['herd']
90 + super(HerdsModel, self).__init__(*args, **kwargs)
91 + if herd is not None:
92 + self.init_by_herd(herd)
93 +
94 name = models.CharField(unique = True, max_length = 150)
95 email = models.EmailField()
96 description = models.TextField(blank = True, null = True)
97 maintainers = models.ManyToManyField(MaintainerModel, blank = True)
98
99 + objects = managers.HerdsManager()
100 +
101 + def init_by_herd(self, herd):
102 + self.name = herd.name
103 + self.email = herd.email
104 + self.description = herd.description
105 +
106 + def __unicode__(self):
107 + return self.name