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/package_info/
Date: Mon, 02 Jul 2012 22:25:55
Message-Id: 1341267818.49460154ef4cf94dc960948e8d75df395807bce7.bacher09@gentoo
1 commit: 49460154ef4cf94dc960948e8d75df395807bce7
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Mon Jul 2 22:23:38 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Mon Jul 2 22:23:38 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=49460154
7
8 Change revision type from CharField to PositiveIntergerField
9
10 ---
11 gpackages/apps/packages/managers.py | 2 +-
12 gpackages/apps/packages/models.py | 10 +++++++---
13 gpackages/apps/packages/scan.py | 10 +---------
14 gpackages/libs/package_info/generic.py | 9 ++++++++-
15 gpackages/libs/package_info/mixins.py | 19 +++++++++++++++++--
16 5 files changed, 34 insertions(+), 16 deletions(-)
17
18 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
19 index d3f7b21..ab8e269 100644
20 --- a/gpackages/apps/packages/managers.py
21 +++ b/gpackages/apps/packages/managers.py
22 @@ -123,7 +123,7 @@ class EbuildMixin(object):
23 else:
24 kwargs.update({'package': package})
25 kwargs.update({ 'version': ebuild.version,
26 - 'revision': ebuild.revision })
27 + 'revision': ebuild.revision_as_int })
28 return super(EbuildMixin, self).get(*args, **kwargs)
29
30 def all_by_numbers(self):
31
32 diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
33 index 624afc0..21d8c0c 100644
34 --- a/gpackages/apps/packages/models.py
35 +++ b/gpackages/apps/packages/models.py
36 @@ -389,7 +389,7 @@ class LicenseGroupModel(models.Model):
37 class EbuildModel(AbstractDateTimeModel):
38 package = models.ForeignKey(PackageModel, db_index = True)
39 version = models.CharField(max_length = 26, db_index = True)
40 - revision = models.CharField(max_length = 12, db_index = True)
41 + revision = models.PositiveIntegerField(db_index = True)
42 use_flags = models.ManyToManyField(UseFlagModel)
43 licenses = models.ManyToManyField(LicenseModel)
44 license = models.CharField(max_length = 254, blank = True )
45 @@ -423,7 +423,7 @@ class EbuildModel(AbstractDateTimeModel):
46 def update_by_ebuild(self, ebuild):
47 self.is_masked = ebuild.is_masked
48 self.version = ebuild.version
49 - self.revision = ebuild.revision
50 + self.revision = ebuild.revision_as_int
51 self.license = ebuild.license
52 self.ebuild_mtime = ebuild.mtime
53 self.ebuild_hash = ebuild.sha1
54 @@ -489,8 +489,12 @@ class EbuildModel(AbstractDateTimeModel):
55 return self.cpvr
56
57 @property
58 + def revision_str(self):
59 + return 'r%d' % self.revision
60 +
61 + @property
62 def fullversion(self):
63 - return '%s%s' % (self.version, ('-'+ self.revision if self.revision else ''))
64 + return '%s%s' % (self.version, ('-'+ self.revision_str if self.revision else ''))
65
66 def get_keywords(self, arch_list):
67 keywords_dict = self.get_keywords_dict(arch_list)
68
69 diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
70 index 52f9a12..8e4127e 100644
71 --- a/gpackages/apps/packages/scan.py
72 +++ b/gpackages/apps/packages/scan.py
73 @@ -3,7 +3,7 @@ from packages import models
74 import sys
75 from django.db import IntegrityError
76 from collections import defaultdict
77 -from package_info.generic import StrThatIgnoreCase
78 +from package_info.generic import StrThatIgnoreCase, toint
79 from package_info.porttree import porttree
80
81 import anydbm
82 @@ -84,14 +84,6 @@ def _get_items(items_list, Model, field_name, cache_var):
83 geted_items = geted_items | geted
84 return items_objects
85
86 -
87 -def toint(val, defval):
88 - try:
89 - return int(val)
90 - except ValueError:
91 - return defval
92 -
93 -
94 class Scanner(object):
95 "General class for scan and collect data from portage"
96 def __init__(self, **kwargs):
97
98 diff --git a/gpackages/libs/package_info/generic.py b/gpackages/libs/package_info/generic.py
99 index cddd46f..895b3a4 100644
100 --- a/gpackages/libs/package_info/generic.py
101 +++ b/gpackages/libs/package_info/generic.py
102 @@ -4,7 +4,8 @@ import types
103 from datetime import datetime
104
105 __all__ = ('StrThatIgnoreCase', 'ToStrMixin', 'file_get_content', 'file_sha1',\
106 - 'file_mtime', 'cached_property', 'iter_over_gen', 'lofstr_to_ig')
107 + 'file_mtime', 'cached_property', 'iter_over_gen', 'lofstr_to_ig', \
108 + 'toint')
109
110 def iter_over_gen(iterat, name):
111 for obj in iterat:
112 @@ -32,6 +33,12 @@ def get_from_kwargs_and_del(list_what, kwargs):
113 else:
114 return ret_list
115
116 +def toint(val, defval):
117 + try:
118 + return int(val)
119 + except ValueError:
120 + return defval
121 +
122 class StrThatIgnoreCase(unicode):
123 __slots__ = ('_forcmp',)
124
125
126 diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
127 index c3c5cec..36afb10 100644
128 --- a/gpackages/libs/package_info/mixins.py
129 +++ b/gpackages/libs/package_info/mixins.py
130 @@ -1,6 +1,6 @@
131 from __future__ import absolute_import
132 from .generic import ToStrMixin, file_sha1, file_mtime, cached_property, \
133 - file_get_content, iter_over_gen, lofstr_to_ig
134 + file_get_content, iter_over_gen, lofstr_to_ig, toint
135
136 from .generic_metadata.use_info import get_uses_info, get_local_uses_info
137 # Repo info
138 @@ -22,6 +22,7 @@ from .abstract import AbstractPortage, AbstractPortTree, AbstractCategory, \
139 AbstarctPackage, AbstractEbuild
140
141 import os.path
142 +import re
143
144 def _file_path(file_name):
145 return lambda self: os.path.join(self.package_path, file_name)
146 @@ -218,6 +219,20 @@ class EbuildBaseMixin(ToStrMixin):
147 def __unicode__(self):
148 return unicode(self.cpv)
149
150 +REV_STR_RE = '^r(?P<rev>\d+)$'
151 +rev_re = re.compile(REV_STR_RE)
152 +
153 +class EbuildRevMixin(object):
154 +
155 + @cached_property
156 + def revision_as_int(self):
157 + d = 0 # Maybe None ?
158 + m = rev_re.match(self.revision)
159 + if m is not None:
160 + d = m.groupdict().get('rev')
161 + d = toint(d, 0)
162 + return d
163 +
164 class EbuildHomepageMixin(object):
165
166 @cached_property
167 @@ -306,7 +321,7 @@ class EbuildUseMixin(object):
168 return frozenset(self.get_uses())
169
170 class EbuildGenericProp(EbuildHomepageMixin, EbuildLicenseMixin, \
171 - EbuildKeywordsMixin, EbuildUseMixin):
172 + EbuildKeywordsMixin, EbuildUseMixin, EbuildRevMixin):
173 pass
174
175 class PortageGenericMixin(PortageBaseMixin, PortageHerdsMixin):