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: Tue, 29 May 2012 12:24:51
Message-Id: 1338294240.c8c247a88f4def5b7203da619cb5247204000f4a.bacher09@gentoo
1 commit: c8c247a88f4def5b7203da619cb5247204000f4a
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Tue May 29 12:24:00 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Tue May 29 12:24:00 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c8c247a8
7
8 Rewrite managers.
9
10 ---
11 gpackages/apps/packages/managers.py | 35 ++++++++++++++++-------------------
12 1 files changed, 16 insertions(+), 19 deletions(-)
13
14 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
15 index 2d01508..dd9c2cb 100644
16 --- a/gpackages/apps/packages/managers.py
17 +++ b/gpackages/apps/packages/managers.py
18 @@ -3,6 +3,13 @@ from porttree import Category, Package, Ebuild, Keyword
19 import packages.models
20
21
22 +def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
23 + QueryClass = type(QueryClassName, (MixinClass, models.query.QuerySet), {})
24 + ManagerClass = type(ManagerClassName, (MixinClass, models.Manager),{
25 + 'get_query_set': lambda self: QueryClass(self.model, using=self._db)
26 + })
27 + return QueryClass, ManagerClass
28 +
29 class PackageMixin(object):
30 def get(self, package = None, *args, **kwargs):
31 if package is not None and isinstance(package, Package):
32 @@ -19,13 +26,9 @@ class PackageMixin(object):
33 kwargs.update({'name': name, 'category': category})
34 return super(PackageMixin, self).get(*args, **kwargs)
35
36 -class PackageQuerySet(PackageMixin, models.query.QuerySet):
37 - pass
38 -
39 -class PackageManager(PackageMixin, models.Manager):
40 - def get_query_set(self):
41 - return PackageQuerySet(self.model, using=self._db)
42 -
43 +PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
44 + 'PackageQuerySet',
45 + 'PackageManager')
46
47 class KeywordMixin(object):
48 def get_or_create(self, keyword=None, **kwargs):
49 @@ -38,13 +41,9 @@ class KeywordMixin(object):
50
51 return super(KeywordMixin, self).get_or_create(**kwargs)
52
53 -class KeywordQuerySet(KeywordMixin, models.query.QuerySet):
54 - pass
55 -
56 -class KeywordManager(KeywordMixin, models.Manager):
57 - def get_query_set(self):
58 - return KeywordQuerySet(self.model, using=self._db)
59 -
60 +KeywordQuerySet, KeywordManager = _gen_query_and_manager(KeywordMixin,
61 + 'KeywordQuerySet',
62 + 'KeywordManager')
63
64 class EbuildMixin(object):
65 def get(self, ebuild=None, *args, **kwargs):
66 @@ -61,9 +60,7 @@ class EbuildMixin(object):
67 return super(EbuildMixin, self).get(*args, **kwargs)
68
69
70 -class EbuildQuerySet(EbuildMixin, models.query.QuerySet):
71 - pass
72
73 -class EbuildManager(EbuildMixin, models.Manager):
74 - def get_query_set(self):
75 - return EbuildQuerySet(self.model, using=self._db)
76 +EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
77 + 'EbuildQuerySet',
78 + 'EbuildManager')