public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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):



             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