From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1SeVwE-0001Vw-Qd for garchives@archives.gentoo.org; Tue, 12 Jun 2012 18:35:35 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E698FE0603; Tue, 12 Jun 2012 18:34:57 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id A787CE0603 for ; Tue, 12 Jun 2012 18:34:52 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 6DA731B4023 for ; Tue, 12 Jun 2012 18:34:51 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 12F0FE543E for ; Tue, 12 Jun 2012 18:34:48 +0000 (UTC) From: "Slava Bacherikov" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Slava Bacherikov" Message-ID: <1339509595.4eb31f7e064d09f5173c16c7334811da78dcb768.bacher09@gentoo> Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/ X-VCS-Repository: proj/gentoo-packages X-VCS-Files: gpackages/apps/packages/models.py gpackages/apps/packages/scan.py gpackages/libs/porttree.py X-VCS-Directories: gpackages/apps/packages/ gpackages/libs/ X-VCS-Committer: bacher09 X-VCS-Committer-Name: Slava Bacherikov X-VCS-Revision: 4eb31f7e064d09f5173c16c7334811da78dcb768 X-VCS-Branch: master Date: Tue, 12 Jun 2012 18:34:48 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 67ec7e14-4d31-4af7-bccc-db69ca07fe6e X-Archives-Hash: 35dd37fb94ab67536816224d64bf46f5 commit: 4eb31f7e064d09f5173c16c7334811da78dcb768 Author: Slava Bacherikov bacher09 org> AuthorDate: Tue Jun 12 13:59:55 2012 +0000 Commit: Slava Bacherikov bacherikov org ua> CommitDate: Tue Jun 12 13:59:55 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoo-packag= es.git;a=3Dcommit;h=3D4eb31f7e Save category description to database. --- gpackages/apps/packages/models.py | 15 +++++++++++++++ gpackages/apps/packages/scan.py | 8 +++++++- gpackages/libs/porttree.py | 10 +++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/= models.py index 77519bc..b91673e 100644 --- a/gpackages/apps/packages/models.py +++ b/gpackages/apps/packages/models.py @@ -37,8 +37,23 @@ class RepositoryModel(models.Model): return self.name =20 class CategoryModel(models.Model): + def __init__(self, *args, **kwargs): + super(CategoryModel, self).__init__(*args, **kwargs) + + category =3D kwargs.get('category') + if isinstance(category, Category): =20 + self.update_by_category(category) + + def update_by_category(self, category): + self.description =3D category.metadata.default_descr + self.metadata_hash =3D category.metadata_sha1 + + def check_or_need_update(self, category): + return self.metadata_hash =3D=3D category.metadata_sha1 =20 category =3D models.CharField(unique =3D True, max_length =3D 70) + description =3D models.TextField(blank =3D True, null =3D True) + metadata_hash =3D models.CharField(max_length =3D 128, null =3D True= ) =20 def __unicode__(self): return unicode(self.category) diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/sc= an.py index 82c8a91..c725951 100644 --- a/gpackages/apps/packages/scan.py +++ b/gpackages/apps/packages/scan.py @@ -448,7 +448,13 @@ class Scanner(object): for category in porttree.iter_categories(): existend_packages =3D [] category_object, category_created =3D models.CategoryModel \ - .objects.get_or_create(category =3D category) + .objects.only('category','metadata_hash') \ + .get_or_create(category =3D category) + + if not category_created: + if category_object.check_or_need_update(category): + category_object.update_by_category(category) + category_object.save(force_update =3D True) =20 existend_categorys.append(category_object.pk) for package in category.iter_packages(): diff --git a/gpackages/libs/porttree.py b/gpackages/libs/porttree.py index 933ceeb..c33c159 100644 --- a/gpackages/libs/porttree.py +++ b/gpackages/libs/porttree.py @@ -271,9 +271,10 @@ class PortTree(ToStrMixin): self.porttree_path, 'profiles/use.local.desc') =20 -class CategoryMetadata(object): +class CategoryMetadata(ToStrMixin): =20 def __init__(self, metadata_path): + self._metadata_path =3D metadata_path self._metadata_xml =3D etree.parse(metadata_path) self._descrs =3D {} self._parse_descrs() @@ -291,6 +292,9 @@ class CategoryMetadata(object): def default_descr(self): return self._descrs.get('en') =20 + def __unicode__(self): + return unicode(self._metadata_path) + =20 class Category(ToStrMixin): "Represent category of portage tree as object" @@ -331,6 +335,10 @@ class Category(ToStrMixin): return os.path.join(self.category_path, 'metadata.xml') =20 @cached_property + def metadata_sha1(self): + return file_sha1(self.metadata_path) + + @cached_property def metadata(self): return CategoryMetadata(self.metadata_path) =20