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 16:19:39
Message-Id: 1338735302.4f431675ab386384e49b5187a6a81b373aa8f255.bacher09@gentoo
1 commit: 4f431675ab386384e49b5187a6a81b373aa8f255
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Sun Jun 3 14:55:02 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Sun Jun 3 14:55:02 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=4f431675
7
8 Refactoring in managers.
9
10 ---
11 gpackages/apps/packages/managers.py | 53 +++++++++++++++++------------------
12 1 files changed, 26 insertions(+), 27 deletions(-)
13
14 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
15 index f613df2..d7caaf1 100644
16 --- a/gpackages/apps/packages/managers.py
17 +++ b/gpackages/apps/packages/managers.py
18 @@ -10,7 +10,19 @@ def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
19 })
20 return QueryClass, ManagerClass
21
22 -class PackageMixin(object):
23 +def _gen_all_query_and_manager(mixin_name, name_for_query, name_for_manager, *args):
24 + for arg in args:
25 + basename = arg.__name__
26 + if basename.endswith(mixin_name):
27 + end_index = len(basename) - len(mixin_name)
28 + basename = basename[ : end_index]
29 + q_name = basename + name_for_query
30 + m_name = basename + name_for_manager
31 + q, m = _gen_query_and_manager(arg, q_name, m_name)
32 + globals()[q_name], globals()[m_name] = q, m
33 +
34 +
35 +class PackageMixin(object):#{{{
36 def get(self, package = None, *args, **kwargs):
37 if package is not None and isinstance(package, Package):
38 if 'category' not in kwargs:
39 @@ -22,13 +34,10 @@ class PackageMixin(object):
40 args[1] = category
41 else:
42 kwargs.update({'name': name})
43 - return super(PackageMixin, self).get(*args, **kwargs)
44 + return super(PackageMixin, self).get(*args, **kwargs)#}}}
45
46 -PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
47 - 'PackageQuerySet',
48 - 'PackageManager')
49
50 -class KeywordMixin(object):
51 +class KeywordMixin(object):#{{{
52 def get_or_create(self, keyword=None, **kwargs):
53 if keyword is not None:
54 if isinstance(keyword, Keyword):
55 @@ -37,13 +46,10 @@ class KeywordMixin(object):
56 else:
57 raise ValueError("Bad keyword object")
58
59 - return super(KeywordMixin, self).get_or_create(**kwargs)
60 + return super(KeywordMixin, self).get_or_create(**kwargs)#}}}
61
62 -KeywordQuerySet, KeywordManager = _gen_query_and_manager(KeywordMixin,
63 - 'KeywordQuerySet',
64 - 'KeywordManager')
65
66 -class EbuildMixin(object):
67 +class EbuildMixin(object):#{{{
68 def create(self, **kwargs):
69 if 'ebuild' in kwargs:
70 obj = self.model(**kwargs)
71 @@ -94,34 +100,27 @@ class EbuildMixin(object):
72 revision = ebuild.revision
73 kwargs.update({ 'version': version,
74 'revision': revision })
75 - return super(EbuildMixin, self).get(*args, **kwargs)
76 -
77 -
78 + return super(EbuildMixin, self).get(*args, **kwargs)#}}}
79
80 -EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
81 - 'EbuildQuerySet',
82 - 'EbuildManager')
83
84 -class HerdsMixin(object):
85 +class HerdsMixin(object):#{{{
86 def filter(self, *args, **kwargs):
87 if 'herd__in' in kwargs:
88 herds = kwargs['herd__in']
89 del kwargs['herd__in']
90 kwargs['name__in'] = herds
91 - return super(HerdsMixin, self).filter(*args, **kwargs)
92 + return super(HerdsMixin, self).filter(*args, **kwargs)#}}}
93
94 -HerdsQuerySet, HerdsManager = _gen_query_and_manager(HerdsMixin,
95 - 'HerdsQuerySet',
96 - 'HerdsManager')
97
98 -class MaintainerMixin(object):
99 +class MaintainerMixin(object):#{{{
100 def filter(self, *args, **kwargs):
101 if 'maintainer__in' in kwargs:
102 maintars = kwargs['maintainer__in']
103 del kwargs['maintainer__in']
104 kwargs['email__in'] = maintars
105 - return super(MaintainerMixin, self).filter(*args, **kwargs)
106 + return super(MaintainerMixin, self).filter(*args, **kwargs)#}}}
107 +
108
109 -MaintainerQuerySet, MaintainerManager = _gen_query_and_manager(MaintainerMixin,
110 - 'MaintainerQuerySet',
111 - 'MaintainerManager')
112 +_gen_all_query_and_manager('Mixin', 'QuerySet', 'Manager',
113 + PackageMixin, KeywordMixin, EbuildMixin, HerdsMixin,
114 + MaintainerMixin)