public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-07-12 22:16 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-12 22:16 UTC (permalink / raw
  To: gentoo-commits

commit:     454459bd91a8e8664376e0cacd21ec473cdc4a56
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 11 16:35:54 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 11 16:35:54 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=454459bd

Add cia.vc links for MaintainerModel

---
 gpackages/apps/packages/models.py    |   11 ++++++++++-
 gpackages/libs/package_info/utils.py |   12 ++++++++++++
 2 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index b90049f..c7ee65f 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -1,6 +1,7 @@
 from django.db import models
 from package_info.abstract import AbstractCategory, AbstarctPackage, \
                                   AbstractEbuild, AbstractNewsItem
+from package_info.utils import ciavc_link, email_parse
 import managers
 from package_info.generic import get_from_kwargs_and_del
 from package_info.generic_metadata.repo_const import REPOS_TYPE
@@ -272,7 +273,15 @@ class MaintainerModel(StatsModel, AbstractDateTimeModel):
     def check_or_need_update(self, maintainer):
         return not (self.name == maintainer.name and \
                     self.email == maintainer.email)
-    
+
+    @property
+    def ciavc_link(self):
+        return ciavc_link(self.email_name)
+
+    @property
+    def email_name(self):
+        return email_parse(self.email)[0]
+        
     def __unicode__(self):
         return ':'.join((unicode(self.name), self.email))
 

diff --git a/gpackages/libs/package_info/utils.py b/gpackages/libs/package_info/utils.py
new file mode 100644
index 0000000..934b263
--- /dev/null
+++ b/gpackages/libs/package_info/utils.py
@@ -0,0 +1,12 @@
+ciavc_author_template = 'http://cia.vc/stats/author/%s/'
+def ciavc_link(name):
+    return ciavc_author_template % name
+
+def email_parse(email):
+    e_l = email.split('@')
+    if len(e_l) == 1:
+        return (e_l[0], '')
+    elif len(e_l) > 1:
+        return (e_l[0], e_l[1])
+    else:
+        return ('','')



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-08-11 22:30 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-08-11 22:30 UTC (permalink / raw
  To: gentoo-commits

commit:     a0bb82158b882e0304274b7998e5961438182d99
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Aug  7 15:02:28 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Aug  7 15:02:28 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=a0bb8215

More pretty urls

---
 gpackages/apps/packages/models.py         |    8 +++---
 gpackages/apps/packages/urls.py           |    8 ++++--
 gpackages/apps/packages/views.py          |   33 +++++++++++++++++++++++-----
 gpackages/libs/package_info/validators.py |    2 +-
 4 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index bc592cd..702f3a5 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -526,8 +526,8 @@ class PackageModel(StatsModel, AbstractDateTimeModel):
     @models.permalink
     def get_absolute_url(self):
         # It coold been in many repositories
-        kwargs = { 'cpr': self.cp_or_cpr() }
-        return ('package',(), kwargs )
+        kwargs = { 'atom': self.cp_or_cpr() }
+        return ('auto',(), kwargs )
             
     class Meta:
         unique_together = ('virtual_package', 'repository')
@@ -797,8 +797,8 @@ class EbuildModel(AbstractDateTimeModel):
     @models.permalink
     def get_absolute_url(self):
         # It coold been in many repositories
-        kwargs = { 'cpvr': self.cpv_or_cpvr() }
-        return ('ebuild',(), kwargs )
+        kwargs = { 'atom': self.cpv_or_cpvr() }
+        return ('auto',(), kwargs )
 
     class Meta:
         unique_together = ('package', 'version', 'revision')

diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index 1a59669..a970777 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -5,7 +5,7 @@ from views import CategoriesListView, HerdsListView, MaintainersListView, \
                   GlobalUseListView, NewsListView, NewsDetailView, \
                   LicenseDetailView, ArchChoiceView, LicensesListView, \
                   LocalUseListView, FilteringView, RepoDetailView, \
-                  MainPageFeed, MainPageFeedAtom
+                  MainPageFeed, MainPageFeedAtom, auto_package_or_ebuild
 
 urlpatterns = patterns('',
     url(r'^categories/$', CategoriesListView.as_view(), name = 'categories'),
@@ -17,13 +17,13 @@ urlpatterns = patterns('',
     url(r'^license-groups/$', LicenseGroupsView.as_view(), name = 'license_groups'),
     url(r'^$', EbuildsListView.as_view(), name = 'ebuilds'),
     url(r'^ebuild/(?P<pk>\d+)/$', EbuildDetailView.as_view(), name = 'ebuild'),
-    url(r'^ebuild/(?P<cpvr>[^/]+/[^/]+)/$', EbuildDetailView.as_view(), name = 'ebuild'),
+    url(r'^ebuild/(?P<atom>[^/]+/[^/]+)/$', EbuildDetailView.as_view(), name = 'ebuild'),
     url(r'^packages/{0}$'.format(PackagesListsView.get_url_part()), PackagesListsView.as_view(), name = 'packages'),
     url(r'^newpackages/$', PackagesListsView.as_view(), kwargs = {'order': 'create', 'rev': 'rev'},name = 'newpackages'),
 
     #url(r'^package/(?:(?P<pk>\d+)|(?P<category>[^/]+)/(?P<name>[^/]+))/$', PackageDetailView.as_view(), name = 'package'),
     url(r'^package/(?P<pk>\d+)/$', PackageDetailView.as_view(), name = 'package'),
-    url(r'^package/(?P<cpr>[^/]+/[^/]+)/$', PackageDetailView.as_view(), name = 'package'),
+    url(r'^package/(?P<atom>[^/]+/[^/]+)/$', PackageDetailView.as_view(), name = 'package'),
     url(r'^news/$', NewsListView.as_view(), name = 'news'),
     url(r'^news/(?P<pk>\d+)/$', NewsDetailView.as_view(), name = 'news_item'),
     url(r'^news/(?P<slug>[^/]+)/$', NewsDetailView.as_view(), name = 'news_item'),
@@ -34,4 +34,6 @@ urlpatterns = patterns('',
     url(r'^repository/(?P<slug>[^/]+)/$', RepoDetailView.as_view(), name = 'repository'),
     url(r'^rss/$', MainPageFeed()),
     url(r'^atom/$', MainPageFeedAtom()),
+    url(r'^(?P<atom>[^/]+/[^/]+)/$', auto_package_or_ebuild, name = 'auto'),
+    url(r'^(?P<category>[^/]+)/$', PackagesListsView.as_view(), name = 'packages'),
 )

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 4a5d509..5a286ac 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -78,7 +78,18 @@ class EbuildsListView(ContextArchListView):
                        'package__virtual_package__category'). \
                        prefetch_related('package__repository')
 
-class EbuildDetailView(ArchesContexView, DetailView):
+class AtomDetailViewMixin(ArchesContexView, DetailView):
+    parsing_class = EbuildParseCPVR
+
+    def get_parsed(self):
+        parsed, atom = self.kwargs.get('parsed'), self.kwargs.get('atom')
+        if parsed is not None:
+            return parsed
+        else:
+            return self.parsing_class(atom)
+
+class EbuildDetailView(AtomDetailViewMixin):
+    parsing_class = EbuildParseCPVR
     template_name = 'ebuild.html'
     extra_context = {'page_name': 'Ebuild', 'arches': arches}
     context_object_name = 'ebuild'
@@ -87,6 +98,7 @@ class EbuildDetailView(ArchesContexView, DetailView):
                        'package__virtual_package',
                        'package__virtual_package__category')
 
+
     def get_object(self, queryset = None):
         pk = self.kwargs.get('pk')
         if pk is not None:
@@ -94,8 +106,7 @@ class EbuildDetailView(ArchesContexView, DetailView):
         if queryset is None:
             queryset = self.get_queryset()
 
-        cpvr = self.kwargs.get('cpvr')
-        eo = EbuildParseCPVR(cpvr)
+        eo = self.get_parsed()
         category, name = eo.category, eo.name
         version, revision = eo.version, eo.revision_for_q
         repository = eo.repository_for_q
@@ -142,7 +153,8 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
         prefetch_related('repository', 'herds', 
                          'maintainers', 'latest_ebuild__homepages')
 
-class PackageDetailView(ArchesContexView, DetailView):
+class PackageDetailView(AtomDetailViewMixin):
+    parsing_class = PackageParseCPR
     template_name = 'package.html'
     extra_context = {'page_name': 'Package', 'arches': arches}
     context_object_name = 'package'
@@ -158,8 +170,7 @@ class PackageDetailView(ArchesContexView, DetailView):
         if queryset is None:
             queryset = self.get_queryset()
 
-        cpr = self.kwargs.get('cpr')
-        po = PackageParseCPR(cpr)
+        po = self.get_parsed()
         if not po.is_valid:
             raise Http404
         category, name = po.category, po.name
@@ -301,3 +312,13 @@ class PackageSitemap(Sitemap):
 
     def lastmod(self, obj):
         return obj.updated_datetime
+
+def auto_package_or_ebuild(request, atom):
+    v_atom = EbuildParseCPVR(atom)
+    if v_atom.is_valid:
+        return EbuildDetailView.as_view()(request, parsed = v_atom)
+    p_atom = PackageParseCPR(atom)
+    if p_atom.is_valid:
+        return PackageDetailView.as_view()(request, parsed = p_atom)
+    else:
+        raise Http404

diff --git a/gpackages/libs/package_info/validators.py b/gpackages/libs/package_info/validators.py
index 8c10326..e8be8e1 100644
--- a/gpackages/libs/package_info/validators.py
+++ b/gpackages/libs/package_info/validators.py
@@ -7,7 +7,7 @@ validate_url = URLValidator()
 __all__ = ('validate_email', 'validate_url', 'ValidationError')
 
 REVISION_RE = r'r\d+'
-VERSION_RE = r'[\w.]+'
+VERSION_RE = r'\d[\w\.]*'
 NAME_RE = r'[\w+-]+?'
 
 validate_revision = RegexValidator('^%s$' % REVISION_RE)


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-08-02 22:44 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-08-02 22:44 UTC (permalink / raw
  To: gentoo-commits

commit:     7bdd6a80b21627f3e576e0f1bf6d879aa137e71b
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Aug  2 00:25:58 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Aug  2 00:25:58 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=7bdd6a80

Save special use descr to database

---
 gpackages/apps/packages/scan.py       |   11 ++++++++---
 gpackages/libs/package_info/mixins.py |   19 +++++++++++++++++--
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index d7c2f63..e42b7fc 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -657,6 +657,9 @@ class Scanner(object):
 
     def update_all_globals_uses_descriptions(self):
         self.update_globals_uses_descriptions(portage.get_all_use_desc())
+        # special use flags are like globals !!!
+        self.update_globals_uses_descriptions(portage. \
+            get_all_special_use_desc())
 
     def scan_all_uses_description(self):
         self.scan_uses_description(portage.get_all_use_local_desc())
@@ -672,7 +675,9 @@ class Scanner(object):
         # Cache existent Use Local Descr
         use_local_cache = defaultdict(dict)
         for use_obj in existent_use_local_descr:
-            use_local_cache[use_obj.use_flag.name][use_obj.package.cp] = use_obj
+            f_key = use_obj.use_flag.name.lower()
+            use_local_cache[f_key][use_obj.package.cp] = use_obj
+
 
         package_cache = dict()
         for use_flag, packages_dict in use_local_desc.iteritems():
@@ -684,7 +689,7 @@ class Scanner(object):
                 # Add to cache
                 cache_uses[use_flag.lower()] = use_flag_object
             else:
-                use_flag_object = cache_uses[use_flag]
+                use_flag_object = cache_uses[use_flag.lower()]
 
             to_create = []
             for package, description in packages_dict.iteritems():
@@ -700,7 +705,7 @@ class Scanner(object):
                     else:
                         package_cache[package] = package_object
 
-                if package not in use_local_cache[use_flag]:
+                if package not in use_local_cache[use_flag.lower()]:
                     to_create.append(
                     models.UseFlagDescriptionModel(package = package_object,
                                                    use_flag = use_flag_object,

diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
index d699468..f80edd8 100644
--- a/gpackages/libs/package_info/mixins.py
+++ b/gpackages/libs/package_info/mixins.py
@@ -2,7 +2,8 @@ from __future__ import absolute_import
 from .generic import ToStrMixin, file_sha1, file_mtime, cached_property, \
                     file_get_content, iter_over_gen, lofstr_to_ig, toint
 
-from .generic_metadata.use_info import get_uses_info, get_local_uses_info
+from .generic_metadata.use_info import get_uses_info, get_local_uses_info, \
+                                       get_use_special_info
 # Repo info
 from .generic_metadata.repo_info import TreeMetadata
 # Herds
@@ -74,6 +75,10 @@ class PortageBaseMixin(ToStrMixin):
         for tree in self.iter_trees():
             yield tree.use_desc
 
+    def iter_special_use_desc(self):
+        for tree in self.iter_trees():
+            yield tree.use_special_desc
+
     def iter_use_local_desc(self):
         for tree in self.iter_trees():
             yield tree.use_local_desc
@@ -81,6 +86,10 @@ class PortageBaseMixin(ToStrMixin):
     def get_all_use_desc(self):
         return _gen_all_use(lambda x,y: x.update(y), self.iter_use_desc())
 
+    def get_all_special_use_desc(self):
+        return _gen_all_use(lambda x,y: x.update(y),
+                            self.iter_special_use_desc())
+
     def get_all_use_local_desc(self):
         def action(all_dict, use_dict):
             for key, value in use_dict.iteritems():
@@ -112,7 +121,7 @@ def _get_info_by_func(func, path1, path2):
         path = os.path.join(path1, path2)
         try:
             return func(path)
-        except IOError:
+        except (IOError, OSError):
             return None
 
 class PortTreeBaseMixin(ToStrMixin):
@@ -133,6 +142,12 @@ class PortTreeBaseMixin(ToStrMixin):
                                  self.porttree_path,
                                  'profiles/use.local.desc')
 
+    @cached_property
+    def use_special_desc(self):
+        return _get_info_by_func(get_use_special_info,
+                                 self.porttree_path,
+                                 'profiles/desc/')
+
     def __unicode__(self):
         return self.name
 


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-07-05 23:27 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-05 23:27 UTC (permalink / raw
  To: gentoo-commits

commit:     534a5f0fa7c37ce9ab45ac964c63f6e319034a4e
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jul  5 13:56:06 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jul  5 13:56:06 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=534a5f0f

Save eapi and slot info to database

---
 gpackages/apps/packages/models.py     |    7 +++++--
 gpackages/libs/package_info/mixins.py |   17 ++++++++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index c5a51e3..51b839e 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -463,8 +463,9 @@ class EbuildModel(AbstractDateTimeModel):
     homepages = models.ManyToManyField(HomepageModel, blank = True)
     description = models.TextField(blank = True, null = True)
 
-    #eapi = models.PositiveSmallIntegerField(default = 0)
-    #slot = models.PositiveSmallIntegerField(default = 0)
+    eapi = models.PositiveSmallIntegerField(default = 0)
+    slot = models.CharField(max_length = 32, null = True,
+                            db_index = True, default = '0')
     
 
     objects = managers.EbuildManager()
@@ -490,6 +491,8 @@ class EbuildModel(AbstractDateTimeModel):
         self.ebuild_mtime = ebuild.mtime
         self.ebuild_hash = ebuild.sha1
         self.description = ebuild.description
+        self.eapi = ebuild.eapi_as_int
+        self.slot = ebuild.slot_for_q
 
     def check_or_need_update(self, ebuild):
         return self.ebuild_hash != ebuild.sha1

diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
index 0ef9b4d..c18607e 100644
--- a/gpackages/libs/package_info/mixins.py
+++ b/gpackages/libs/package_info/mixins.py
@@ -245,6 +245,20 @@ class EbuildRevMixin(object):
                 d = toint(d, 0)
         return d
 
+class EbuildEapiMixin(object):
+    
+    @cached_property
+    def eapi_as_int(self):
+        return toint(self.eapi, 0)
+
+class EbuildSlotMixin(object):
+    
+    @cached_property
+    def slot_for_q(self):
+        if not self.slot:
+            return None
+        return self.slot
+
 class EbuildHomepageMixin(object):
 
     @cached_property
@@ -333,7 +347,8 @@ class EbuildUseMixin(object):
         return frozenset(self.get_uses())
 
 class EbuildGenericProp(EbuildHomepageMixin, EbuildLicenseMixin, \
-                        EbuildKeywordsMixin, EbuildUseMixin, EbuildRevMixin):
+                        EbuildKeywordsMixin, EbuildUseMixin, EbuildRevMixin,
+                        EbuildSlotMixin, EbuildEapiMixin):
     pass
 
 class PortageGenericMixin(PortageBaseMixin, PortageHerdsMixin):



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-07-03 21:08 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-03 21:08 UTC (permalink / raw
  To: gentoo-commits

commit:     150755168a0391d6238e194b06f8b88bfd063043
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul  3 17:13:11 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul  3 17:13:11 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=15075516

Updte validators

---
 gpackages/apps/packages/models.py         |    6 ++++--
 gpackages/libs/package_info/validators.py |    6 +++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index a5ad484..966e4db 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -7,7 +7,8 @@ from package_info.repo_info import REPOS_TYPE
 # relative
 from .keywords import KeywordRepr
 #from utils import get_link
-from package_info.validators import validate_url, validate_email
+from package_info.validators import validate_url, validate_email, \
+                                    validate_name
 
 
 class AbstractDateTimeModel(models.Model):
@@ -220,7 +221,8 @@ class HerdsModel(AbstractDateTimeModel):
         ordering = ('name',)
 
 class VirtualPackageModel(models.Model):
-    name = models.CharField(max_length = 254, db_index = True)
+    name = models.CharField(max_length = 254, db_index = True,
+                            validators = [validate_name])
     category = models.ForeignKey(CategoryModel)
 
     objects = managers.VirtualPackageManager()

diff --git a/gpackages/libs/package_info/validators.py b/gpackages/libs/package_info/validators.py
index 0b1fbc6..fbfed5e 100644
--- a/gpackages/libs/package_info/validators.py
+++ b/gpackages/libs/package_info/validators.py
@@ -1,5 +1,5 @@
 # Validators
-from django.core.validators import URLValidator, validate_email 
+from django.core.validators import URLValidator, validate_email, RegexValidator
 from django.core.exceptions import ValidationError
 
 validate_url = URLValidator()
@@ -9,3 +9,7 @@ __all__ = ('validate_email', 'validate_url', 'ValidationError')
 REVISION_RE = r'r\d+'
 VERSION_RE = r'[\w.]+'
 NAME_RE = r'[\w+-]+'
+
+validate_revision = RegexValidator('^%s$' % REVISION_RE)
+validate_version = RegexValidator('^%s$' % VERSION_RE)
+validate_name = RegexValidator('^%s$' % NAME_RE)



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/
@ 2012-07-02 22:25 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-02 22:25 UTC (permalink / raw
  To: gentoo-commits

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):



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-08-11 22:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-12 22:16 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/ Slava Bacherikov
  -- strict thread matches above, loose matches on Subject: below --
2012-08-11 22:30 Slava Bacherikov
2012-08-02 22:44 Slava Bacherikov
2012-07-05 23:27 Slava Bacherikov
2012-07-03 21:08 Slava Bacherikov
2012-07-02 22:25 Slava Bacherikov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox