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/apps/packages/management/commands/, ...
@ 2012-06-25 22:23 Slava Bacherikov
  0 siblings, 0 replies; only message in thread
From: Slava Bacherikov @ 2012-06-25 22:23 UTC (permalink / raw
  To: gentoo-commits

commit:     cf9ea59200091d3a4dbad379f791d652bc1c797b
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jun 25 21:09:15 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jun 25 21:09:15 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=cf9ea592

Save license groups to database.

---
 .../packages/management/commands/scanpackages.py   |    5 ++++
 gpackages/apps/packages/scan.py                    |   22 ++++++++++++++++---
 .../generic_metadata/license_groups.py             |    5 +++-
 gpackages/libs/package_info/mixins.py              |    7 ++++++
 4 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/gpackages/apps/packages/management/commands/scanpackages.py b/gpackages/apps/packages/management/commands/scanpackages.py
index 3809ff4..ce694fe 100644
--- a/gpackages/apps/packages/management/commands/scanpackages.py
+++ b/gpackages/apps/packages/management/commands/scanpackages.py
@@ -39,6 +39,11 @@ class Command(BaseCommand):
             dest='delete',
             default=True,
             help='Not delete'),
+        make_option('--not-license-groups',
+            action='store_false',
+            dest='scan_license_groups',
+            default=True,
+            help='Not scan license groups'),
         #make_option('-r', '--repo',
             #action='store',
             #type="string",

diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 0b68c19..b19958d 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -133,6 +133,7 @@ class Scanner(object):
         self.scan_repos_name = tuple(kwargs.get('repos',[]))
         self.scan_global_use_descr = bool_get('scan_global_use', False)
         self.scan_local_use_descr = bool_get('scan_local_use', False)
+        self.is_scan_license_groups = bool_get('scan_license_groups', False)
 
     def show_time(self):
         end = datetime.now()
@@ -163,6 +164,9 @@ class Scanner(object):
         if self.scan_local_use_descr:
             self.scan_all_uses_description()
 
+        if self.is_scan_license_groups:
+            self.scan_license_groups()
+
         if self.is_show_time:
             self.show_time()
 
@@ -232,8 +236,19 @@ class Scanner(object):
 
         self.maintainers_cache = mo_dict
         self.maitainers_cache_loaded = True
-            
 
+    def scan_license_groups(self):
+        self.write('Scaning license groups\n', 3)
+        for group, licenses in portage.license_groups.groups_dict.iteritems():
+            licenses_obj = self.get_licenses_objects(licenses)
+            group_obj, created = models.LicenseGroupModel.objects. \
+                get_or_create(name = group)
+
+            group_obj.licenses.clear()
+            group_obj.licenses.add(*licenses_obj)
+
+            self.output("update license group '%s'\n", group, 2)
+            
     def scan_herds(self):
         self.write('Scaning herds\n', 3)
         existent_herds = self.get_existent_herds()
@@ -365,8 +380,7 @@ class Scanner(object):
         self.scanpackages(repo, repo_obj, **kwargs)
         
 
-    def get_licenses_objects(self, ebuild):
-        licenses = ebuild.licenses
+    def get_licenses_objects(self, licenses):
         return _get_items(licenses, models.LicenseModel, 'name', self.licenses_cache)
 
     def get_uses_objects(self, ebuild):
@@ -424,7 +438,7 @@ class Scanner(object):
 
     def add_related_to_ebuild(self, ebuild, ebuild_object):
         # Add licenses
-        ebuild_object.licenses.add(*self.get_licenses_objects(ebuild))
+        ebuild_object.licenses.add(*self.get_licenses_objects(ebuild.licenses))
         ebuild_object.use_flags.add(*self.get_uses_objects(ebuild))
         ebuild_object.homepages.add(*self.get_homepages_objects(ebuild))
         self.create_keywords_objects(ebuild, ebuild_object)

diff --git a/gpackages/libs/package_info/generic_metadata/license_groups.py b/gpackages/libs/package_info/generic_metadata/license_groups.py
index dc86f1b..ba4255d 100644
--- a/gpackages/libs/package_info/generic_metadata/license_groups.py
+++ b/gpackages/libs/package_info/generic_metadata/license_groups.py
@@ -1,5 +1,6 @@
 from collections import defaultdict
-from ..generic import file_get_content, StrThatIgnoreCase, ToStrMixin
+from ..generic import file_get_content, StrThatIgnoreCase, ToStrMixin, \
+                      file_sha1
 
 DEFAULT_FILE_PATH = '/usr/portage/profiles/license_groups'
 
@@ -100,6 +101,8 @@ class LicenseGroups(ToStrMixin):
         """
         return self.reverse_group_dict[license_name]
 
+    def sha1(self):
+        return file_sha1(self.groups_path)
 
     def __unicode__(self):
         return unicode(self.groups_path)

diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
index 92188ed..610e89e 100644
--- a/gpackages/libs/package_info/mixins.py
+++ b/gpackages/libs/package_info/mixins.py
@@ -11,6 +11,8 @@ from .generic_metadata.herds import Herds
 from .generic_metadata.category_metadata import CategoryMetadata
 #Package metadata
 from .generic_metadata.package_metadata import PackageMetaData
+#License group metadata
+from .generic_metadata.license_groups import LicenseGroups
 # Validators
 from .validators import validate_url, validate_email, ValidationError
 #Generic objects
@@ -85,6 +87,11 @@ class PortageHerdsMixin(object):
         "Return new `Herds` object"
         return Herds()
 
+    @cached_property
+    def license_groups(self):
+        "Return new `LicenseGroups` object"
+        return LicenseGroups()
+
 def _get_info_by_func(func, path1, path2):
         path = os.path.join(path1, path2)
         try:



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-06-25 22:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-25 22:23 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/packages/management/commands/, Slava Bacherikov

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