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) |