From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
Date: Mon, 2 Jul 2012 22:25:34 +0000 (UTC) [thread overview]
Message-ID: <1341267818.49460154ef4cf94dc960948e8d75df395807bce7.bacher09@gentoo> (raw)
commit: 49460154ef4cf94dc960948e8d75df395807bce7
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul 2 22:23:38 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul 2 22:23:38 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=49460154
Change revision type from CharField to PositiveIntergerField
---
gpackages/apps/packages/managers.py | 2 +-
gpackages/apps/packages/models.py | 10 +++++++---
gpackages/apps/packages/scan.py | 10 +---------
gpackages/libs/package_info/generic.py | 9 ++++++++-
gpackages/libs/package_info/mixins.py | 19 +++++++++++++++++--
5 files changed, 34 insertions(+), 16 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index d3f7b21..ab8e269 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -123,7 +123,7 @@ class EbuildMixin(object):
else:
kwargs.update({'package': package})
kwargs.update({ 'version': ebuild.version,
- 'revision': ebuild.revision })
+ 'revision': ebuild.revision_as_int })
return super(EbuildMixin, self).get(*args, **kwargs)
def all_by_numbers(self):
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 624afc0..21d8c0c 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -389,7 +389,7 @@ class LicenseGroupModel(models.Model):
class EbuildModel(AbstractDateTimeModel):
package = models.ForeignKey(PackageModel, db_index = True)
version = models.CharField(max_length = 26, db_index = True)
- revision = models.CharField(max_length = 12, db_index = True)
+ revision = models.PositiveIntegerField(db_index = True)
use_flags = models.ManyToManyField(UseFlagModel)
licenses = models.ManyToManyField(LicenseModel)
license = models.CharField(max_length = 254, blank = True )
@@ -423,7 +423,7 @@ class EbuildModel(AbstractDateTimeModel):
def update_by_ebuild(self, ebuild):
self.is_masked = ebuild.is_masked
self.version = ebuild.version
- self.revision = ebuild.revision
+ self.revision = ebuild.revision_as_int
self.license = ebuild.license
self.ebuild_mtime = ebuild.mtime
self.ebuild_hash = ebuild.sha1
@@ -489,8 +489,12 @@ class EbuildModel(AbstractDateTimeModel):
return self.cpvr
@property
+ def revision_str(self):
+ return 'r%d' % self.revision
+
+ @property
def fullversion(self):
- return '%s%s' % (self.version, ('-'+ self.revision if self.revision else ''))
+ return '%s%s' % (self.version, ('-'+ self.revision_str if self.revision else ''))
def get_keywords(self, arch_list):
keywords_dict = self.get_keywords_dict(arch_list)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 52f9a12..8e4127e 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -3,7 +3,7 @@ from packages import models
import sys
from django.db import IntegrityError
from collections import defaultdict
-from package_info.generic import StrThatIgnoreCase
+from package_info.generic import StrThatIgnoreCase, toint
from package_info.porttree import porttree
import anydbm
@@ -84,14 +84,6 @@ def _get_items(items_list, Model, field_name, cache_var):
geted_items = geted_items | geted
return items_objects
-
-def toint(val, defval):
- try:
- return int(val)
- except ValueError:
- return defval
-
-
class Scanner(object):
"General class for scan and collect data from portage"
def __init__(self, **kwargs):
diff --git a/gpackages/libs/package_info/generic.py b/gpackages/libs/package_info/generic.py
index cddd46f..895b3a4 100644
--- a/gpackages/libs/package_info/generic.py
+++ b/gpackages/libs/package_info/generic.py
@@ -4,7 +4,8 @@ import types
from datetime import datetime
__all__ = ('StrThatIgnoreCase', 'ToStrMixin', 'file_get_content', 'file_sha1',\
- 'file_mtime', 'cached_property', 'iter_over_gen', 'lofstr_to_ig')
+ 'file_mtime', 'cached_property', 'iter_over_gen', 'lofstr_to_ig', \
+ 'toint')
def iter_over_gen(iterat, name):
for obj in iterat:
@@ -32,6 +33,12 @@ def get_from_kwargs_and_del(list_what, kwargs):
else:
return ret_list
+def toint(val, defval):
+ try:
+ return int(val)
+ except ValueError:
+ return defval
+
class StrThatIgnoreCase(unicode):
__slots__ = ('_forcmp',)
diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
index c3c5cec..36afb10 100644
--- a/gpackages/libs/package_info/mixins.py
+++ b/gpackages/libs/package_info/mixins.py
@@ -1,6 +1,6 @@
from __future__ import absolute_import
from .generic import ToStrMixin, file_sha1, file_mtime, cached_property, \
- file_get_content, iter_over_gen, lofstr_to_ig
+ file_get_content, iter_over_gen, lofstr_to_ig, toint
from .generic_metadata.use_info import get_uses_info, get_local_uses_info
# Repo info
@@ -22,6 +22,7 @@ from .abstract import AbstractPortage, AbstractPortTree, AbstractCategory, \
AbstarctPackage, AbstractEbuild
import os.path
+import re
def _file_path(file_name):
return lambda self: os.path.join(self.package_path, file_name)
@@ -218,6 +219,20 @@ class EbuildBaseMixin(ToStrMixin):
def __unicode__(self):
return unicode(self.cpv)
+REV_STR_RE = '^r(?P<rev>\d+)$'
+rev_re = re.compile(REV_STR_RE)
+
+class EbuildRevMixin(object):
+
+ @cached_property
+ def revision_as_int(self):
+ d = 0 # Maybe None ?
+ m = rev_re.match(self.revision)
+ if m is not None:
+ d = m.groupdict().get('rev')
+ d = toint(d, 0)
+ return d
+
class EbuildHomepageMixin(object):
@cached_property
@@ -306,7 +321,7 @@ class EbuildUseMixin(object):
return frozenset(self.get_uses())
class EbuildGenericProp(EbuildHomepageMixin, EbuildLicenseMixin, \
- EbuildKeywordsMixin, EbuildUseMixin):
+ EbuildKeywordsMixin, EbuildUseMixin, EbuildRevMixin):
pass
class PortageGenericMixin(PortageBaseMixin, PortageHerdsMixin):
next reply other threads:[~2012-07-02 22:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-02 22:25 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-07-03 21:08 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/ Slava Bacherikov
2012-07-05 23:27 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-08-11 22:30 Slava Bacherikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1341267818.49460154ef4cf94dc960948e8d75df395807bce7.bacher09@gentoo \
--to=slava@bacherikov.org.ua \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox