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/, gpackages/libs/
Date: Thu, 07 Jun 2012 22:48:49
Message-Id: 1339097563.6bf1b245210d63a003efa22db88244a35cf0bfe0.bacher09@gentoo
1 commit: 6bf1b245210d63a003efa22db88244a35cf0bfe0
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Thu Jun 7 18:54:24 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Thu Jun 7 19:32:43 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=6bf1b245
7
8 Simple code
9
10 ---
11 gpackages/apps/packages/managers.py | 15 +++++++--------
12 gpackages/apps/packages/models.py | 33 +++++++--------------------------
13 gpackages/libs/generic.py | 23 +++++++++++++++++++++++
14 3 files changed, 37 insertions(+), 34 deletions(-)
15
16 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
17 index c4ab013..ed5018c 100644
18 --- a/gpackages/apps/packages/managers.py
19 +++ b/gpackages/apps/packages/managers.py
20 @@ -1,6 +1,7 @@
21 from django.db import models, connections, router, transaction, IntegrityError
22 from porttree import Category, Package, Ebuild, Keyword
23 import packages.models
24 +from generic import get_from_kwargs_and_del
25
26
27 def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
28 @@ -72,19 +73,17 @@ class EbuildMixin(object):#{{{
29
30 class HerdsMixin(object):#{{{
31 def filter(self, *args, **kwargs):
32 - if 'herd__in' in kwargs:
33 - herds = kwargs['herd__in']
34 - del kwargs['herd__in']
35 - kwargs['name__in'] = herds
36 + herd__in = get_from_kwargs_and_del('herd__in',kwargs)
37 + if herd__in is not None:
38 + kwargs['name__in'] = herd__in
39 return super(HerdsMixin, self).filter(*args, **kwargs)#}}}
40
41
42 class MaintainerMixin(object):#{{{
43 def filter(self, *args, **kwargs):
44 - if 'maintainer__in' in kwargs:
45 - maintars = kwargs['maintainer__in']
46 - del kwargs['maintainer__in']
47 - kwargs['email__in'] = maintars
48 + maintainer__in = get_from_kwargs_and_del('maintainer__in', kwargs)
49 + if maintainer__in is not None:
50 + kwargs['email__in'] = maintainer__in
51 return super(MaintainerMixin, self).filter(*args, **kwargs)#}}}
52
53
54
55 diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
56 index 3b30d6f..82d3ca5 100644
57 --- a/gpackages/apps/packages/models.py
58 +++ b/gpackages/apps/packages/models.py
59 @@ -2,6 +2,7 @@ from django.db import models
60
61 from porttree import Category, Package, Ebuild
62 import managers
63 +from generic import get_from_kwargs_and_del
64
65 class AbstractDateTimeModel(models.Model):
66 created_datetime = models.DateTimeField(auto_now_add = True)
67 @@ -40,11 +41,7 @@ class CategoryModel(models.Model):
68 class MaintainerModel(AbstractDateTimeModel):
69
70 def __init__(self, *args, **kwargs):
71 - #TODO: Bad code, maybe use some libraries for overload methods
72 - maintainer = None
73 - if 'maintainer' in kwargs:
74 - maintainer = kwargs['maintainer']
75 - del kwargs['maintainer']
76 + maintainer = get_from_kwargs_and_del('maintainer', kwargs)
77 super(MaintainerModel, self).__init__(*args, **kwargs)
78 if maintainer is not None:
79 self.init_by_maintainer(maintainer)
80 @@ -73,10 +70,7 @@ class MaintainerModel(AbstractDateTimeModel):
81 class HerdsModel(AbstractDateTimeModel):
82
83 def __init__(self, *args, **kwargs):
84 - herd = None
85 - if 'herd' in kwargs:
86 - herd = kwargs['herd']
87 - del kwargs['herd']
88 + herd = get_from_kwargs_and_del('herd', kwargs)
89 super(HerdsModel, self).__init__(*args, **kwargs)
90 if herd is not None:
91 self.init_by_herd(herd)
92 @@ -106,20 +100,11 @@ class HerdsModel(AbstractDateTimeModel):
93
94 class PackageModel(AbstractDateTimeModel):
95 def __init__(self, *args, **kwargs):
96 - # TODO: Bad code, maybe use some library to overload method
97 - package_object = None
98 - if len(args)>=1:
99 - package_object = args[0]
100 + package_object = get_from_kwargs_and_del('package', kwargs)
101
102 - if 'package' in kwargs:
103 - package_object = kwargs['package']
104 - del kwargs['package']
105 -
106 + super(PackageModel, self).__init__(*args, **kwargs)
107 if isinstance(package_object, Package):
108 - super(PackageModel, self).__init__(*args, **kwargs)
109 self.init_by_package(package_object, category = kwargs.get('category'))
110 - else:
111 - super(PackageModel, self).__init__(*args, **kwargs)
112
113
114
115 @@ -221,7 +206,6 @@ class EbuildModel(AbstractDateTimeModel):
116 is_deleted = models.BooleanField(default = False)
117 is_masked = models.BooleanField(default = False)
118
119 - #homepage = models.URLField(blank = True, null = True, max_length=255)
120 homepages = models.ManyToManyField(HomepageModel, blank = True)
121 description = models.TextField(blank = True, null = True)
122
123 @@ -233,12 +217,9 @@ class EbuildModel(AbstractDateTimeModel):
124 objects = managers.EbuildManager()
125
126 def __init__(self, *args, **kwargs ):
127 - ebuild = None
128 - if 'ebuild' in kwargs:
129 - ebuild = kwargs['ebuild']
130 - del kwargs['ebuild']
131 + ebuild = get_from_kwargs_and_del('ebuild', kwargs)
132 super(EbuildModel, self).__init__(*args, **kwargs)
133 - if ebuild is not None and isinstance(ebuild, Ebuild):
134 + if isinstance(ebuild, Ebuild):
135 self.init_by_ebuild(ebuild)
136
137 def __unicode__(self):
138
139 diff --git a/gpackages/libs/generic.py b/gpackages/libs/generic.py
140 index bc1cd55..0629ed6 100644
141 --- a/gpackages/libs/generic.py
142 +++ b/gpackages/libs/generic.py
143 @@ -1,10 +1,33 @@
144 import os.path
145 import hashlib
146 +import types
147 from datetime import datetime
148
149 __all__ = ('StrThatIgnoreCase', 'ToStrMixin', 'file_get_content', 'file_sha1', \
150 'file_mtime', 'cached_property' )
151
152 +def del_from_dict(what_list, dict_todel):
153 + for item in what_list:
154 + if item in dict_todel:
155 + del dict_todel[item]
156 + #dict_todel already modified
157 + return dict_todel
158 +
159 +def get_from_kwargs_and_del(list_what, kwargs):
160 + ret_list = []
161 + if isinstance(list_what, types.StringTypes):
162 + list_what = (list_what, )
163 + for item in list_what:
164 + if item in kwargs:
165 + ret_list.append(v)
166 + else:
167 + ret_list.append(None)
168 + del_from_dict(ret_list, kwargs)
169 + if len(ret_list)==1:
170 + return ret_list[0]
171 + else:
172 + return ret_list
173 +
174 class StrThatIgnoreCase(unicode):
175 __slots__ = ('_forcmp',)