* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-27 22:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-27 22:48 UTC (permalink / raw
To: gentoo-commits
commit: 3469cbea1cb9b0c17fc656b6925be562dd019b5d
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun May 27 22:25:04 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun May 27 22:25:04 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3469cbea
Add simple admin.
---
gpackages/apps/packages/admin.py | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
new file mode 100644
index 0000000..11a804e
--- /dev/null
+++ b/gpackages/apps/packages/admin.py
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from models import EbuildModel
+
+admin.site.register(EbuildModel)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 10:39 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 10:39 UTC (permalink / raw
To: gentoo-commits
commit: 38db588b16d5baddc79b9c6472132b4afc069dc7
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 10:23:13 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 10:23:13 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=38db588b
changes in packages models
---
gpackages/apps/packages/models.py | 59 ++++++++++++++++++++++++++++---------
1 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 491fb85..5278709 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -3,47 +3,78 @@ from django.db import models
class ArchesModel(models.Model):
name = models.CharField(max_length = 12)
-class Repository(models.Model):
+class RepositoryModel(models.Model):
name = models.CharField(max_length = 60)
- description = models.TextField()
+ description = models.TextField(blank = True, null = True)
# And other fields
class CategoryModel(models.Model):
- category = models.CharField(max_length = 70)
+ category = models.CharField(unique = True, max_length = 70)
+
+ def __unicode__(self):
+ return self.category
+
+ @classmethod
+ def create_by_category(cls, category):
+ category_model = cls.objects.get_or_create(category = category.category)
+ return category_model
class PackageModel(models.Model):
- name = models.CharField(unique = True, max_length = 254)
- category = models.ForeignKey(CategoryModel)
- # Different versions can have different licenses, or homepages.
+ name = models.CharField(unique = True, max_length = 254)
+ category = models.ForeignKey(CategoryModel)
+ changelog = models.TextField(blank = True)
+ changelog_hash = models.CharField(max_length = 128)
+ manifest_hash = models.CharField(max_length = 128)
+ # Different versions can have different licenses, or homepages.
+ def __unicode__(self):
+ return '%s/%s' % (self.category, self.name)
+
+ #@classmethod
+ #def create_by_pakcage(cls, package):
+ #category_object = CategoryModel.create_by_category(package.category)
+ #package_model = c
class UseFlagModel(models.Model):
name = models.CharField(unique = True, max_length = 28)
- description = models.TextField()
+ description = models.TextField(blank = True)
class LicensModel(models.Model):
name = models.CharField(max_length = 40)
#description = TextField()
+
+ def __unicode__(self):
+ return self.name
class MetaDataModel(models.Model):
homepage = models.URLField()
- description = models.TextField()
- changelog = models.TextField()
- changelog_hash = models.CharField(max_length = 128)
- manifest_hash = models.CharField(max_length = 128)
+ description = models.TextField(blank = True, null = True)
# Some other info
class EbuildModel(models.Model):
package = models.ForeignKey(PackageModel)
- repository = models.ForeignKey(Repository)
- version = models.CharField(max_length = 24)
+ repository = models.ForeignKey(RepositoryModel)
+ version = models.CharField(max_length = 16)
+ revision = models.CharField(max_length = 6)
metadata = models.ForeignKey(MetaDataModel)
use_flags = models.ManyToManyField(UseFlagModel)
licenses = models.ManyToManyField(LicensModel)
+ license = models.CharField(max_length = 254, blank = True )
ebuild_hash = models.CharField(max_length = 128)
ebuld_datetime = models.DateTimeField(auto_now = True)
is_deleted = models.BooleanField(default = False)
+ is_masked = models.BooleanField(default = False)
+
+ def __unicode__(self):
+ return '%s-%s' % (self.package, self.version)
+
+ #@classmethod
+ #def create_by_ebuild(cls, ebuild):
+ #ebuild_model = cls()
+ #ebuild_model.is_masked = ebuild.is_masked
+ #ebuild_model.version = ebuild.version
+ #ebuild_model.revision = ebuild.revision
class Keyword(models.Model):
ebuild = models.ForeignKey(EbuildModel)
arch = models.ForeignKey(ArchesModel)
- status = models.SmallIntegerField() # Stable or not, masked
+ is_stable = models.BooleanField()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 10:39 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 10:39 UTC (permalink / raw
To: gentoo-commits
commit: 988cf938917e73db1c4a680283fe399e8e7ed81d
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 10:22:48 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 10:22:48 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=988cf938
Add more models to admin.
---
gpackages/apps/packages/admin.py | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 11a804e..e61e613 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -1,4 +1,11 @@
from django.contrib import admin
-from models import EbuildModel
+from models import EbuildModel, PackageModel, LicensModel, CategoryModel, \
+ UseFlagModel, MetaDataModel, RepositoryModel
admin.site.register(EbuildModel)
+admin.site.register(PackageModel)
+admin.site.register(LicensModel)
+admin.site.register(CategoryModel)
+admin.site.register(UseFlagModel)
+admin.site.register(RepositoryModel)
+admin.site.register(MetaDataModel)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 17:00 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 17:00 UTC (permalink / raw
To: gentoo-commits
commit: 5982c7ecb766ab0c9ebfda896bfb1a8e77806074
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 16:08:04 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 16:08:04 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=5982c7ec
Changes in packages model
---
gpackages/apps/packages/models.py | 37 +++++++++++++++++++++++++++++++------
1 files changed, 31 insertions(+), 6 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index b620dcb..a60f6ce 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -1,6 +1,6 @@
from django.db import models
-from porttree import Category
+from porttree import Category, Package
class ArchesModel(models.Model):
name = models.CharField(max_length = 12)
@@ -34,7 +34,23 @@ class CategoryModel(models.Model):
class PackageModel(models.Model):
- name = models.CharField(unique = True, max_length = 254)
+ def __init__(self, *args, **kwargs):
+ # TODO: Bad code, maybe use some library to overload method
+ if len(args)>=1:
+ package_object = args[0]
+
+ if 'package' in kwargs:
+ package_object = kwargs['package']
+
+ if isinstance(package_object, Package):
+ super(PackageModel, self).__init__()
+ self.init_by_package(package_object)
+ else:
+ super(PackageModel, self).__init__(*args, **kwargs)
+
+
+
+ name = models.CharField(max_length = 254)
category = models.ForeignKey(CategoryModel)
changelog = models.TextField(blank = True)
changelog_hash = models.CharField(max_length = 128)
@@ -43,10 +59,17 @@ class PackageModel(models.Model):
def __unicode__(self):
return '%s/%s' % (self.category, self.name)
- #@classmethod
- #def create_by_pakcage(cls, package):
- #category_object = CategoryModel.create_by_category(package.category)
- #package_model = c
+ def init_by_package(self, package):
+ self.name = package.name
+ self.update_info(package)
+ self.category, created = CategoryModel.objects.get_or_create(category = package.category)
+
+ def update_info(self, package):
+ self.changelog_hash = package.changelog_sha1
+ self.manifest_hash = package.manifest_sha1
+
+ class Meta:
+ unique_together = ('name', 'category')
class UseFlagModel(models.Model):
name = models.CharField(unique = True, max_length = 28)
@@ -92,3 +115,5 @@ class Keyword(models.Model):
ebuild = models.ForeignKey(EbuildModel)
arch = models.ForeignKey(ArchesModel)
is_stable = models.BooleanField()
+ class Meta:
+ unique_together = ('ebuild', 'arch')
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 17:00 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 17:00 UTC (permalink / raw
To: gentoo-commits
commit: f0421b0de870645a8a509a841821fc0c98fa14cb
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 11:19:18 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 11:19:18 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=f0421b0d
Change CategoryModel __nit__
---
gpackages/apps/packages/models.py | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 5278709..ce05e2c 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -1,5 +1,7 @@
from django.db import models
+from porttree import Category
+
class ArchesModel(models.Model):
name = models.CharField(max_length = 12)
@@ -9,15 +11,25 @@ class RepositoryModel(models.Model):
# And other fields
class CategoryModel(models.Model):
+ def __init__(self, *args, **kwargs):
+ category_object = None
+
+ if len(args)>=1:
+ category_object = args[0]
+ if 'category_object' in kwargs:
+ category_object = kwargs['category_object']
+
+ if isinstance(category_object, Category):
+ return super(CategoryModel, self).__init__(category = category_object.category)
+ else:
+ return super(CategoryModel, self).__init__(*args, **kwargs)
+
+
category = models.CharField(unique = True, max_length = 70)
def __unicode__(self):
return self.category
- @classmethod
- def create_by_category(cls, category):
- category_model = cls.objects.get_or_create(category = category.category)
- return category_model
class PackageModel(models.Model):
name = models.CharField(unique = True, max_length = 254)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 17:00 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 17:00 UTC (permalink / raw
To: gentoo-commits
commit: 1b0de88d6aff6c96dfa1e818bf3037a5dda07531
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 17:00:43 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 17:00:43 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=1b0de88d
Add get_or_create to manager of PackageModel
---
gpackages/apps/packages/managers.py | 28 ++++++++++++++++++++++++++++
gpackages/apps/packages/models.py | 5 +++++
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
new file mode 100644
index 0000000..f44ee34
--- /dev/null
+++ b/gpackages/apps/packages/managers.py
@@ -0,0 +1,28 @@
+from django.db import models
+from porttree import Category, Package
+import packages.models
+
+
+class PackageMixin(object):
+ def get_or_create(self, **kwargs):
+ if 'package' in kwargs:
+ po = kwargs['package']
+ if isinstance(po, Package):
+ del kwargs['package']
+ if 'category' not in kwargs:
+ co, created = packages.models.CategoryModel. \
+ objects.get_or_create(category = po.category)
+ kwargs.update({'category': co})
+
+ kwargs.update({'name': po.name})
+ else:
+ raise ValueError("Bad package object")
+
+ return super(PackageMixin, self).get_or_create(**kwargs)
+
+class PackageQuerySet(PackageMixin, models.query.QuerySet):
+ pass
+
+class PackageManager(PackageMixin, models.Manager):
+ def get_query_set(self):
+ return PackageQuerySet(self.model, using=self._db)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index a60f6ce..e51f62f 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -1,6 +1,7 @@
from django.db import models
from porttree import Category, Package
+import managers
class ArchesModel(models.Model):
name = models.CharField(max_length = 12)
@@ -36,6 +37,7 @@ class CategoryModel(models.Model):
class PackageModel(models.Model):
def __init__(self, *args, **kwargs):
# TODO: Bad code, maybe use some library to overload method
+ package_object = None
if len(args)>=1:
package_object = args[0]
@@ -56,6 +58,9 @@ class PackageModel(models.Model):
changelog_hash = models.CharField(max_length = 128)
manifest_hash = models.CharField(max_length = 128)
# Different versions can have different licenses, or homepages.
+
+ objects = managers.PackageManager()
+
def __unicode__(self):
return '%s/%s' % (self.category, self.name)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-28 20:32 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-28 20:32 UTC (permalink / raw
To: gentoo-commits
commit: 3e640062498819c97b9bef24e8dbbc04f847177c
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon May 28 19:09:53 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon May 28 19:09:53 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3e640062
Add init_by_ebuild method to EbuildModel
---
gpackages/apps/packages/admin.py | 3 +-
gpackages/apps/packages/models.py | 49 +++++++++++++++++++++++++++----------
2 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index e61e613..9f76014 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -1,6 +1,6 @@
from django.contrib import admin
from models import EbuildModel, PackageModel, LicensModel, CategoryModel, \
- UseFlagModel, MetaDataModel, RepositoryModel
+ UseFlagModel, RepositoryModel
admin.site.register(EbuildModel)
admin.site.register(PackageModel)
@@ -8,4 +8,3 @@ admin.site.register(LicensModel)
admin.site.register(CategoryModel)
admin.site.register(UseFlagModel)
admin.site.register(RepositoryModel)
-admin.site.register(MetaDataModel)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index e51f62f..8e50eea 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -81,23 +81,18 @@ class UseFlagModel(models.Model):
description = models.TextField(blank = True)
class LicensModel(models.Model):
- name = models.CharField(max_length = 40)
+ name = models.CharField(unique = True, max_length = 40)
#description = TextField()
def __unicode__(self):
return self.name
-class MetaDataModel(models.Model):
- homepage = models.URLField()
- description = models.TextField(blank = True, null = True)
- # Some other info
class EbuildModel(models.Model):
package = models.ForeignKey(PackageModel)
- repository = models.ForeignKey(RepositoryModel)
+ #repository = models.ForeignKey(RepositoryModel)
version = models.CharField(max_length = 16)
revision = models.CharField(max_length = 6)
- metadata = models.ForeignKey(MetaDataModel)
use_flags = models.ManyToManyField(UseFlagModel)
licenses = models.ManyToManyField(LicensModel)
license = models.CharField(max_length = 254, blank = True )
@@ -105,16 +100,44 @@ class EbuildModel(models.Model):
ebuld_datetime = models.DateTimeField(auto_now = True)
is_deleted = models.BooleanField(default = False)
is_masked = models.BooleanField(default = False)
+
+ homepage = models.URLField()
+ description = models.TextField(blank = True, null = True)
def __unicode__(self):
return '%s-%s' % (self.package, self.version)
- #@classmethod
- #def create_by_ebuild(cls, ebuild):
- #ebuild_model = cls()
- #ebuild_model.is_masked = ebuild.is_masked
- #ebuild_model.version = ebuild.version
- #ebuild_model.revision = ebuild.revision
+ def init_by_ebuild(self, ebuild):
+ self.is_masked = ebuild.is_masked
+ self.version = ebuild.version
+ self.revision = ebuild.revision
+ self.license = ebuild.license
+ self.ebuild_hash = ebuild.sha1
+ self.homepage = ebuild.homepage
+ self.description = ebuild.description
+ self.package = PackageModel.objects.get_or_create(package = ebuild.package)[0]
+ self.save()
+ l = []
+ for license in ebuild.licenses:
+ k, created = LicensModel.objects.get_or_create(name = license)
+ if created:
+ k.save()
+ l.append(k)
+
+ self.licenses.add(*l)
+ l = []
+ # TODO: Bad code
+ for use in ebuild.iter_uses():
+ k, created = UseFlagModel.objects.get_or_create(name = use)
+ if created:
+ k.save()
+ l.append(k)
+ self.use_flags.add(*l)
+
+ class Meta:
+ unique_together = ('package', 'version', 'revision')
+
+
class Keyword(models.Model):
ebuild = models.ForeignKey(EbuildModel)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-29 12:24 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-29 12:24 UTC (permalink / raw
To: gentoo-commits
commit: 14341591e6b6bc0d6699ba81ddea8cf26df45384
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue May 29 07:03:48 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue May 29 07:03:48 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=14341591
Add get_or_create for EbuildModel
---
gpackages/apps/packages/managers.py | 50 +++++++++++++++++++++++++----------
gpackages/apps/packages/models.py | 12 ++++++++
2 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index ec3a55b..2d01508 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -4,21 +4,20 @@ import packages.models
class PackageMixin(object):
- def get_or_create(self, **kwargs):
- if 'package' in kwargs:
- po = kwargs['package']
- if isinstance(po, Package):
- del kwargs['package']
- if 'category' not in kwargs:
- co, created = packages.models.CategoryModel. \
- objects.get_or_create(category = po.category)
- kwargs.update({'category': co})
-
- kwargs.update({'name': po.name})
+ def get(self, package = None, *args, **kwargs):
+ if package is not None and isinstance(package, Package):
+ try:
+ category = packages.models.CategoryModel.objects.get(category = package.category)
+ except packages.models.CategoryModel.DoesNotExist:
+ raise self.model.DoesNotExist
+ name = package.name
+ if len(args)>=1:
+ args[0] = name
+ if len(args)>=2:
+ args[1] = category
else:
- raise ValueError("Bad package object")
-
- return super(PackageMixin, self).get_or_create(**kwargs)
+ kwargs.update({'name': name, 'category': category})
+ return super(PackageMixin, self).get(*args, **kwargs)
class PackageQuerySet(PackageMixin, models.query.QuerySet):
pass
@@ -45,3 +44,26 @@ class KeywordQuerySet(KeywordMixin, models.query.QuerySet):
class KeywordManager(KeywordMixin, models.Manager):
def get_query_set(self):
return KeywordQuerySet(self.model, using=self._db)
+
+
+class EbuildMixin(object):
+ def get(self, ebuild=None, *args, **kwargs):
+ if ebuild is not None and isinstance(ebuild, Ebuild):
+ try:
+ package = packages.models.PackageModel.objects.get(package = ebuild.package)
+ except packages.models.PackageModel.DoesNotExist:
+ raise self.model.DoesNotExist
+ version = ebuild.version
+ revision = ebuild.revision
+ kwargs.update({ 'version': version,
+ 'revision': revision,
+ 'package': package })
+ return super(EbuildMixin, self).get(*args, **kwargs)
+
+
+class EbuildQuerySet(EbuildMixin, models.query.QuerySet):
+ pass
+
+class EbuildManager(EbuildMixin, models.Manager):
+ def get_query_set(self):
+ return EbuildQuerySet(self.model, using=self._db)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index e64fcc1..313e77c 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -106,6 +106,18 @@ class EbuildModel(models.Model):
homepage = models.URLField()
description = models.TextField(blank = True, null = True)
+
+ objects = managers.EbuildManager()
+
+ def __init__(self, *args, **kwargs ):
+ # TODO: Bug fix
+ ebuild = None
+ if 'ebuild' in kwargs:
+ ebuild = kwargs['ebuild']
+ del kwargs['ebuild']
+ super(EbuildModel, self).__init__(*args, **kwargs)
+ if ebuild is not None and isinstance(ebuild, Ebuild):
+ self.init_with_keywords(ebuild)
def __unicode__(self):
return '%s-%s' % (self.package, self.version)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-29 12:24 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-29 12:24 UTC (permalink / raw
To: gentoo-commits
commit: fbe0aa4edb0816db1a72fb45b0f581f9a84e9261
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue May 29 07:03:05 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue May 29 07:03:05 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=fbe0aa4e
Litle fixest in model
---
gpackages/apps/packages/models.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 2cf377c..e64fcc1 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -100,7 +100,7 @@ class EbuildModel(models.Model):
licenses = models.ManyToManyField(LicensModel)
license = models.CharField(max_length = 254, blank = True )
ebuild_hash = models.CharField(max_length = 128)
- ebuld_datetime = models.DateTimeField(auto_now = True)
+ ebuild_datetime = models.DateTimeField(auto_now = True)
is_deleted = models.BooleanField(default = False)
is_masked = models.BooleanField(default = False)
@@ -160,7 +160,7 @@ class Keyword(models.Model):
objects = managers.KeywordManager()
def __unicode__(self):
- return ('' if self.is_stable else '~' ) + self.arch
+ return ('' if self.is_stable else '~' ) + str(self.arch)
def init_by_keyword(self, keyword, ebuild):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-29 12:24 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-29 12:24 UTC (permalink / raw
To: gentoo-commits
commit: c8c247a88f4def5b7203da619cb5247204000f4a
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue May 29 12:24:00 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue May 29 12:24:00 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c8c247a8
Rewrite managers.
---
gpackages/apps/packages/managers.py | 35 ++++++++++++++++-------------------
1 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 2d01508..dd9c2cb 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -3,6 +3,13 @@ from porttree import Category, Package, Ebuild, Keyword
import packages.models
+def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
+ QueryClass = type(QueryClassName, (MixinClass, models.query.QuerySet), {})
+ ManagerClass = type(ManagerClassName, (MixinClass, models.Manager),{
+ 'get_query_set': lambda self: QueryClass(self.model, using=self._db)
+ })
+ return QueryClass, ManagerClass
+
class PackageMixin(object):
def get(self, package = None, *args, **kwargs):
if package is not None and isinstance(package, Package):
@@ -19,13 +26,9 @@ class PackageMixin(object):
kwargs.update({'name': name, 'category': category})
return super(PackageMixin, self).get(*args, **kwargs)
-class PackageQuerySet(PackageMixin, models.query.QuerySet):
- pass
-
-class PackageManager(PackageMixin, models.Manager):
- def get_query_set(self):
- return PackageQuerySet(self.model, using=self._db)
-
+PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
+ 'PackageQuerySet',
+ 'PackageManager')
class KeywordMixin(object):
def get_or_create(self, keyword=None, **kwargs):
@@ -38,13 +41,9 @@ class KeywordMixin(object):
return super(KeywordMixin, self).get_or_create(**kwargs)
-class KeywordQuerySet(KeywordMixin, models.query.QuerySet):
- pass
-
-class KeywordManager(KeywordMixin, models.Manager):
- def get_query_set(self):
- return KeywordQuerySet(self.model, using=self._db)
-
+KeywordQuerySet, KeywordManager = _gen_query_and_manager(KeywordMixin,
+ 'KeywordQuerySet',
+ 'KeywordManager')
class EbuildMixin(object):
def get(self, ebuild=None, *args, **kwargs):
@@ -61,9 +60,7 @@ class EbuildMixin(object):
return super(EbuildMixin, self).get(*args, **kwargs)
-class EbuildQuerySet(EbuildMixin, models.query.QuerySet):
- pass
-class EbuildManager(EbuildMixin, models.Manager):
- def get_query_set(self):
- return EbuildQuerySet(self.model, using=self._db)
+EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
+ 'EbuildQuerySet',
+ 'EbuildManager')
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-29 13:38 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-29 13:38 UTC (permalink / raw
To: gentoo-commits
commit: ad99f68732cca8ee6a530a006896d90e91f6c33c
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue May 29 13:06:24 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue May 29 13:06:24 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=ad99f687
Change limits for long arches like sparc64-solaris
---
gpackages/apps/packages/models.py | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 313e77c..1d2fbe7 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -4,7 +4,7 @@ from porttree import Category, Package, Ebuild
import managers
class ArchesModel(models.Model):
- name = models.CharField(unique = True, max_length = 12)
+ name = models.CharField(unique = True, max_length = 22)
def __unicode__(self):
return self.name
@@ -80,8 +80,11 @@ class PackageModel(models.Model):
unique_together = ('name', 'category')
class UseFlagModel(models.Model):
- name = models.CharField(unique = True, max_length = 28)
+ name = models.CharField(unique = True, max_length = 32)
description = models.TextField(blank = True)
+
+ def __unicode__(self):
+ return self.name
class LicensModel(models.Model):
name = models.CharField(unique = True, max_length = 40)
@@ -104,7 +107,7 @@ class EbuildModel(models.Model):
is_deleted = models.BooleanField(default = False)
is_masked = models.BooleanField(default = False)
- homepage = models.URLField()
+ homepage = models.URLField(blank = True, null = True)
description = models.TextField(blank = True, null = True)
objects = managers.EbuildManager()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-29 21:34 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-29 21:34 UTC (permalink / raw
To: gentoo-commits
commit: b19a891069ed4b9bfa909e00501c47443e3710ff
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue May 29 17:37:48 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue May 29 17:37:48 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=b19a8910
Extend manager.
---
gpackages/apps/packages/managers.py | 40 ++++++++++++++++++++++++++++++++++-
1 files changed, 39 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index a9b514b..6e69007 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -1,4 +1,4 @@
-from django.db import models
+from django.db import models, connections, router, transaction, IntegrityError
from porttree import Category, Package, Ebuild, Keyword
import packages.models
@@ -46,6 +46,44 @@ KeywordQuerySet, KeywordManager = _gen_query_and_manager(KeywordMixin,
'KeywordManager')
class EbuildMixin(object):
+ def create(self, **kwargs):
+ if 'ebuild' in kwargs:
+ obj = self.model(**kwargs)
+ else:
+ obj = super(EbuildMixin, self).create(**kwargs)
+ return obj
+
+ def get_or_create(self, **kwargs):
+ assert kwargs, \
+ 'get_or_create() must be passed at least one keyword argument'
+ defaults = kwargs.pop('defaults', {})
+ lookup = kwargs.copy()
+ for f in self.model._meta.fields:
+ if f.attname in lookup:
+ lookup[f.name] = lookup.pop(f.attname)
+ try:
+ self._for_write = True
+ return self.get(**lookup), False
+ except self.model.DoesNotExist:
+ try:
+ params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
+ params.update(defaults)
+ obj = self.model(**params)
+ if 'ebuild' not in kwargs:
+ obj.save(force_insert=True, using=self.db)
+ sid = transaction.savepoint(using=self.db)
+ transaction.savepoint_commit(sid, using=self.db)
+ return obj, True
+ except IntegrityError as e:
+ transaction.savepoint_rollback(sid, using=self.db)
+ exc_info = sys.exc_info()
+ try:
+ return self.get(**lookup), False
+ except self.model.DoesNotExist:
+ # Re-raise the IntegrityError with its original traceback.
+ raise exc_info[1], None, exc_info[2]
+
+
def get(self, ebuild=None, *args, **kwargs):
if ebuild is not None and isinstance(ebuild, Ebuild):
try:
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-05-31 13:34 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-05-31 13:34 UTC (permalink / raw
To: gentoo-commits
commit: cd6f1e10b426ab50ae4d0d9040adf3e07f6747b1
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed May 30 12:08:29 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed May 30 12:08:29 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=cd6f1e10
Optimize getting by object.
---
gpackages/apps/packages/managers.py | 25 ++++++++++++-------------
1 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 6e69007..464b6ce 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -13,17 +13,15 @@ def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
class PackageMixin(object):
def get(self, package = None, *args, **kwargs):
if package is not None and isinstance(package, Package):
- try:
- category = packages.models.CategoryModel.objects.get(category = package.category)
- except packages.models.CategoryModel.DoesNotExist:
- raise self.model.DoesNotExist
+ if 'category' not in kwargs:
+ kwargs.update({'category__category' : package.category})
name = package.name
if len(args)>=1:
args[0] = name
if len(args)>=2:
args[1] = category
else:
- kwargs.update({'name': name, 'category': category})
+ kwargs.update({'name': name})
return super(PackageMixin, self).get(*args, **kwargs)
PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
@@ -68,10 +66,10 @@ class EbuildMixin(object):
try:
params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
params.update(defaults)
+ sid = transaction.savepoint(using=self.db)
obj = self.model(**params)
if 'ebuild' not in kwargs:
obj.save(force_insert=True, using=self.db)
- sid = transaction.savepoint(using=self.db)
transaction.savepoint_commit(sid, using=self.db)
return obj, True
except IntegrityError as e:
@@ -84,17 +82,18 @@ class EbuildMixin(object):
raise exc_info[1], None, exc_info[2]
- def get(self, ebuild=None, *args, **kwargs):
+ def get(self, ebuild=None,package = None, *args, **kwargs):
if ebuild is not None and isinstance(ebuild, Ebuild):
- try:
- package = packages.models.PackageModel.objects.get(package = ebuild.package)
- except packages.models.PackageModel.DoesNotExist:
- raise self.model.DoesNotExist
+ if package is None:
+ kwargs.update({
+ 'package__category__category': ebuild.package.category,
+ 'package__name': ebuild.package.name })
+ else:
+ kwargs.update({'package': package})
version = ebuild.version
revision = ebuild.revision
kwargs.update({ 'version': version,
- 'revision': revision,
- 'package': package })
+ 'revision': revision })
return super(EbuildMixin, self).get(*args, **kwargs)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-03 13:19 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-03 13:19 UTC (permalink / raw
To: gentoo-commits
commit: 0d92c5b317de7af064dea7b14c0cce0b4b926430
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jun 3 12:47:16 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jun 3 12:47:16 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=0d92c5b3
Changes in models HerdsModel and MaintainerModel
---
gpackages/apps/packages/managers.py | 24 +++++++++++++++++++
gpackages/apps/packages/models.py | 44 +++++++++++++++++++++++++++++++++-
2 files changed, 66 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 464b6ce..f613df2 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -101,3 +101,27 @@ class EbuildMixin(object):
EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
'EbuildQuerySet',
'EbuildManager')
+
+class HerdsMixin(object):
+ def filter(self, *args, **kwargs):
+ if 'herd__in' in kwargs:
+ herds = kwargs['herd__in']
+ del kwargs['herd__in']
+ kwargs['name__in'] = herds
+ return super(HerdsMixin, self).filter(*args, **kwargs)
+
+HerdsQuerySet, HerdsManager = _gen_query_and_manager(HerdsMixin,
+ 'HerdsQuerySet',
+ 'HerdsManager')
+
+class MaintainerMixin(object):
+ def filter(self, *args, **kwargs):
+ if 'maintainer__in' in kwargs:
+ maintars = kwargs['maintainer__in']
+ del kwargs['maintainer__in']
+ kwargs['email__in'] = maintars
+ return super(MaintainerMixin, self).filter(*args, **kwargs)
+
+MaintainerQuerySet, MaintainerManager = _gen_query_and_manager(MaintainerMixin,
+ 'MaintainerQuerySet',
+ 'MaintainerManager')
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index e315c6b..2ad8faa 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -221,13 +221,53 @@ class Keyword(models.Model):
class MaintainerModel(models.Model):
- name = models.CharField( unique = True, max_length = 255)
- email = models.EmailField()
+
+ def __init__(self, *args, **kwargs):
+ #TODO: Bad code, maybe use some libraries for overload methods
+ maintainer = None
+ if 'maintainer' in kwargs:
+ maintainer = kwargs['maintainer']
+ del kwargs['maintainer']
+ super(MaintainerModel, self).__init__(*args, **kwargs)
+ if maintainer is not None:
+ self.init_by_maintainer(maintainer)
+
+ name = models.CharField(max_length = 255, blank = True, null = True)
+ email = models.EmailField(unique = True)
role = models.TextField(blank = True, null = True)
+ objects = managers.MaintainerManager()
+
+ def init_by_maintainer(self, maintainer):
+ self.name = maintainer.name
+ self.email = maintainer.email
+ self.role = maintainer.role
+
+ def __unicode__(self):
+ return ':'.join((unicode(self.name), self.email))
+
class HerdsModel(models.Model):
+
+ def __init__(self, *args, **kwargs):
+ herd = None
+ if 'herd' in kwargs:
+ herd = kwargs['herd']
+ del kwargs['herd']
+ super(HerdsModel, self).__init__(*args, **kwargs)
+ if herd is not None:
+ self.init_by_herd(herd)
+
name = models.CharField(unique = True, max_length = 150)
email = models.EmailField()
description = models.TextField(blank = True, null = True)
maintainers = models.ManyToManyField(MaintainerModel, blank = True)
+ objects = managers.HerdsManager()
+
+ def init_by_herd(self, herd):
+ self.name = herd.name
+ self.email = herd.email
+ self.description = herd.description
+
+ def __unicode__(self):
+ return self.name
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-03 16:19 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-03 16:19 UTC (permalink / raw
To: gentoo-commits
commit: 4f431675ab386384e49b5187a6a81b373aa8f255
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jun 3 14:55:02 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jun 3 14:55:02 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=4f431675
Refactoring in managers.
---
gpackages/apps/packages/managers.py | 53 +++++++++++++++++------------------
1 files changed, 26 insertions(+), 27 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index f613df2..d7caaf1 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -10,7 +10,19 @@ def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
})
return QueryClass, ManagerClass
-class PackageMixin(object):
+def _gen_all_query_and_manager(mixin_name, name_for_query, name_for_manager, *args):
+ for arg in args:
+ basename = arg.__name__
+ if basename.endswith(mixin_name):
+ end_index = len(basename) - len(mixin_name)
+ basename = basename[ : end_index]
+ q_name = basename + name_for_query
+ m_name = basename + name_for_manager
+ q, m = _gen_query_and_manager(arg, q_name, m_name)
+ globals()[q_name], globals()[m_name] = q, m
+
+
+class PackageMixin(object):#{{{
def get(self, package = None, *args, **kwargs):
if package is not None and isinstance(package, Package):
if 'category' not in kwargs:
@@ -22,13 +34,10 @@ class PackageMixin(object):
args[1] = category
else:
kwargs.update({'name': name})
- return super(PackageMixin, self).get(*args, **kwargs)
+ return super(PackageMixin, self).get(*args, **kwargs)#}}}
-PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
- 'PackageQuerySet',
- 'PackageManager')
-class KeywordMixin(object):
+class KeywordMixin(object):#{{{
def get_or_create(self, keyword=None, **kwargs):
if keyword is not None:
if isinstance(keyword, Keyword):
@@ -37,13 +46,10 @@ class KeywordMixin(object):
else:
raise ValueError("Bad keyword object")
- return super(KeywordMixin, self).get_or_create(**kwargs)
+ return super(KeywordMixin, self).get_or_create(**kwargs)#}}}
-KeywordQuerySet, KeywordManager = _gen_query_and_manager(KeywordMixin,
- 'KeywordQuerySet',
- 'KeywordManager')
-class EbuildMixin(object):
+class EbuildMixin(object):#{{{
def create(self, **kwargs):
if 'ebuild' in kwargs:
obj = self.model(**kwargs)
@@ -94,34 +100,27 @@ class EbuildMixin(object):
revision = ebuild.revision
kwargs.update({ 'version': version,
'revision': revision })
- return super(EbuildMixin, self).get(*args, **kwargs)
-
-
+ return super(EbuildMixin, self).get(*args, **kwargs)#}}}
-EbuildQuerySet, EbuildManager = _gen_query_and_manager(EbuildMixin,
- 'EbuildQuerySet',
- 'EbuildManager')
-class HerdsMixin(object):
+class HerdsMixin(object):#{{{
def filter(self, *args, **kwargs):
if 'herd__in' in kwargs:
herds = kwargs['herd__in']
del kwargs['herd__in']
kwargs['name__in'] = herds
- return super(HerdsMixin, self).filter(*args, **kwargs)
+ return super(HerdsMixin, self).filter(*args, **kwargs)#}}}
-HerdsQuerySet, HerdsManager = _gen_query_and_manager(HerdsMixin,
- 'HerdsQuerySet',
- 'HerdsManager')
-class MaintainerMixin(object):
+class MaintainerMixin(object):#{{{
def filter(self, *args, **kwargs):
if 'maintainer__in' in kwargs:
maintars = kwargs['maintainer__in']
del kwargs['maintainer__in']
kwargs['email__in'] = maintars
- return super(MaintainerMixin, self).filter(*args, **kwargs)
+ return super(MaintainerMixin, self).filter(*args, **kwargs)#}}}
+
-MaintainerQuerySet, MaintainerManager = _gen_query_and_manager(MaintainerMixin,
- 'MaintainerQuerySet',
- 'MaintainerManager')
+_gen_all_query_and_manager('Mixin', 'QuerySet', 'Manager',
+ PackageMixin, KeywordMixin, EbuildMixin, HerdsMixin,
+ MaintainerMixin)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-05 15:49 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-05 15:49 UTC (permalink / raw
To: gentoo-commits
commit: 2c2f169eb9bc4f8b4af246f647aa14ee0845e402
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 5 12:27:57 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 5 12:27:57 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=2c2f169e
Add metadata_hash field to PackageModel
---
gpackages/apps/packages/models.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index fbf2e15..4326a89 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -132,6 +132,7 @@ class PackageModel(models.Model):
changelog = models.TextField(blank = True)
changelog_hash = models.CharField(max_length = 128)
manifest_hash = models.CharField(max_length = 128)
+ metadata_hash = models.CharField(max_length = 128)
changelog_mtime = models.DateTimeField(blank = True, null = True)
manifest_mtime = models.DateTimeField(blank = True, null = True)
mtime = models.DateTimeField(blank = True, null = True)
@@ -160,8 +161,15 @@ class PackageModel(models.Model):
def check_or_need_update(self, package):
# Need add metadata check to
return not( self.changelog_hash == package.changelog_sha1 and \
+ self.metadata_hash == package.metadata_sha1 and \
self.manifest_hash == package.manifest_sha1)
+ def need_update_metadata(self, package):
+ return self.metadata_hash != package.metadata_sha1
+
+ def need_update_ebuilds(self, package):
+ return self.manifest_hash != package.manifest_sha1
+
def update_info(self, package):
self.mtime = package.mtime
self.changelog_mtime = package.changelog_mtime
@@ -169,6 +177,7 @@ class PackageModel(models.Model):
self.changelog_hash = package.changelog_sha1
self.manifest_mtime = package.manifest_mtime
self.manifest_hash = package.manifest_sha1
+ self.metadata_hash = package.metadata_sha1
class Meta:
unique_together = ('name', 'category')
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-05 15:49 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-05 15:49 UTC (permalink / raw
To: gentoo-commits
commit: bd97f3271c9287902bf8d3c2a2e5c39d310aad20
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 5 15:49:29 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 5 15:49:29 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=bd97f327
Change in updating info
---
gpackages/apps/packages/managers.py | 72 +++++++++++++++---------------
gpackages/apps/packages/models.py | 12 +++---
gpackages/apps/packages/scan.py | 82 ++++++++++++++++++++++++++--------
3 files changed, 104 insertions(+), 62 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 27136f8..cfde91e 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -53,42 +53,42 @@ class KeywordMixin(object):#{{{
class EbuildMixin(object):#{{{
- def create(self, **kwargs):
- if 'ebuild' in kwargs:
- obj = self.model(**kwargs)
- else:
- obj = super(EbuildMixin, self).create(**kwargs)
- return obj
-
- def get_or_create(self, **kwargs):
- assert kwargs, \
- 'get_or_create() must be passed at least one keyword argument'
- defaults = kwargs.pop('defaults', {})
- lookup = kwargs.copy()
- for f in self.model._meta.fields:
- if f.attname in lookup:
- lookup[f.name] = lookup.pop(f.attname)
- try:
- self._for_write = True
- return self.get(**lookup), False
- except self.model.DoesNotExist:
- try:
- params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
- params.update(defaults)
- sid = transaction.savepoint(using=self.db)
- obj = self.model(**params)
- if 'ebuild' not in kwargs:
- obj.save(force_insert=True, using=self.db)
- transaction.savepoint_commit(sid, using=self.db)
- return obj, True
- except IntegrityError as e:
- transaction.savepoint_rollback(sid, using=self.db)
- exc_info = sys.exc_info()
- try:
- return self.get(**lookup), False
- except self.model.DoesNotExist:
- # Re-raise the IntegrityError with its original traceback.
- raise exc_info[1], None, exc_info[2]
+ #def create(self, **kwargs):
+ #if 'ebuild' in kwargs:
+ #obj = self.model(**kwargs)
+ #else:
+ #obj = super(EbuildMixin, self).create(**kwargs)
+ #return obj
+
+ #def get_or_create(self, **kwargs):
+ #assert kwargs, \
+ #'get_or_create() must be passed at least one keyword argument'
+ #defaults = kwargs.pop('defaults', {})
+ #lookup = kwargs.copy()
+ #for f in self.model._meta.fields:
+ #if f.attname in lookup:
+ #lookup[f.name] = lookup.pop(f.attname)
+ #try:
+ #self._for_write = True
+ #return self.get(**lookup), False
+ #except self.model.DoesNotExist:
+ #try:
+ #params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
+ #params.update(defaults)
+ #sid = transaction.savepoint(using=self.db)
+ #obj = self.model(**params)
+ #if 'ebuild' not in kwargs:
+ #obj.save(force_insert=True, using=self.db)
+ #transaction.savepoint_commit(sid, using=self.db)
+ #return obj, True
+ #except IntegrityError as e:
+ #transaction.savepoint_rollback(sid, using=self.db)
+ #exc_info = sys.exc_info()
+ #try:
+ #return self.get(**lookup), False
+ #except self.model.DoesNotExist:
+ ## Re-raise the IntegrityError with its original traceback.
+ #raise exc_info[1], None, exc_info[2]
def get(self, ebuild=None,package = None, *args, **kwargs):
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 4326a89..8a52b5d 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -160,9 +160,7 @@ class PackageModel(models.Model):
def check_or_need_update(self, package):
# Need add metadata check to
- return not( self.changelog_hash == package.changelog_sha1 and \
- self.metadata_hash == package.metadata_sha1 and \
- self.manifest_hash == package.manifest_sha1)
+ return self.manifest_hash != package.manifest_sha1
def need_update_metadata(self, package):
return self.metadata_hash != package.metadata_sha1
@@ -243,23 +241,25 @@ class EbuildModel(models.Model):
del kwargs['ebuild']
super(EbuildModel, self).__init__(*args, **kwargs)
if ebuild is not None and isinstance(ebuild, Ebuild):
- self.init_with_keywords(ebuild)
+ self.init_by_ebuild(ebuild)
def __unicode__(self):
return self.cpv
def init_by_ebuild(self, ebuild):
+ self.update_by_ebuild(ebuild)
+
+ def update_by_ebuild(self, ebuild):
self.is_masked = ebuild.is_masked
self.version = ebuild.version
self.revision = ebuild.revision
self.license = ebuild.license
self.ebuild_mtime = ebuild.mtime
self.ebuild_hash = ebuild.sha1
- #self.homepage = ebuild.homepage
self.description = ebuild.description
def check_or_need_update(self, ebuild):
- return not(self.ebuild_hash == ebuild.sha1)
+ return self.ebuild_hash != ebuild.sha1
def init_related(self, ebuild, package = None):
self.init_by_ebuild(ebuild)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 8deb289..994adbf 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -257,39 +257,81 @@ def scanpackages():
herds_objects.append(herds_cache[herd])
return herds_objects
+
+ def add_related_to_ebuild(ebuild, ebuild_object):
+ # Add licenses
+ ebuild_object.licenses.add(*get_licenses_objects(ebuild))
+ ebuild_object.use_flags.add(*get_uses_objects(ebuild))
+ ebuild_object.homepages.add(*get_homepages_objects(ebuild))
+ get_keywords_objects(ebuild, ebuild_object)
+
+ def clear_related_to_ebuild(ebuild_object):
+ ebuild_object.licenses.clear()
+ ebuild_object.use_flags.clear()
+ ebuild_object.homepages.clear()
+ models.Keyword.objects.filter(ebuild = ebuild_object).delete()
+
+ def update_related_to_ebuild(ebuild, ebuild_object):
+ clear_related_to_ebuild(ebuild_object)
+ add_related_to_ebuild(ebuild, ebuild_object)
+
+ def create_ebuilds(package, package_object):
+ for ebuild in package.iter_ebuilds():
+ ebuild_object = models.EbuildModel()
+ ebuild_object.init_by_ebuild(ebuild)
+ ebuild_object.package = package_object
+ # To Add some related objects it should have pk
+ ebuild_object.save(force_insert=True)
+ add_related_to_ebuild(ebuild, ebuild_object)
+
+ def update_ebuilds(package, package_object, delete = True):
+ not_del = []
+ for ebuild in package.iter_ebuilds():
+ ebuild_object, ebuild_created = models.EbuildModel.objects.get_or_create(ebuild = ebuild, package = package_object)
+ not_del.append(ebuild_object.pk)
+ if ebuild_created:
+ add_related_to_ebuild(ebuild, ebuild_object)
+ continue
+ if ebuild_object.check_or_need_update(ebuild):
+ ebuild_object.update_by_ebuild(ebuild)
+ update_related_to_ebuild(ebuild, ebuild_object)
+ ebuild_object.save(force_update = True)
+ if delete:
+ models.EbuildModel.objects.exclude(pk__in = not_del).delete()
+
# Load homepages to cache
#for homepage in models.HomepageModel.objects.all():
#homepages_cache[homepage.url] = homepage
-
+ existend_categorys = []
+ existend_packages = []
for category in porttree.iter_categories():
category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
+ existend_categorys.append(category_object.pk)
for package in category.iter_packages():
- print package
+ #print package
package_object, package_created = models.PackageModel.objects.get_or_create(package = package, category = category_object)
+ existend_packages.append(package_object.pk)
if not package_created:
if package_object.check_or_need_update(package):
+ print package
# need update
- pass
+ if package_object.need_update_metadata(package):
+ package_object.herds.clear()
+ package_object.maintainers.clear()
+
+ if package_object.need_update_ebuilds(package):
+ update_ebuilds(package, package_object)
+
+ package_object.update_info(package)
+ package_object.save(force_update = True)
else:
+ # not need to update, ebuilds too
continue
package_object.herds.add(*get_herds_objects(package))
package_object.maintainers.add(*get_maintainers_objects(package))
- for ebuild in package.iter_ebuilds():
- ebuild_object = models.EbuildModel()
- ebuild_object.init_by_ebuild(ebuild)
- ebuild_object.package = package_object
- # To Add some related objects it should have pk
- ebuild_object.save(force_insert=True)
- # Add licenses
- ebuild_object.licenses.add(*get_licenses_objects(ebuild))
- ebuild_object.use_flags.add(*get_uses_objects(ebuild))
- ebuild_object.homepages.add(*get_homepages_objects(ebuild))
- get_keywords_objects(ebuild, ebuild_object)
- #homepages_list = []
- #for homepage in ebuild.homepages:
- #homepage_object = models.HomepageModel(url = homepage,
- #ebuild = ebuild_object)
- #homepages_list.append(homepage_object)
- #models.HomepageModel.objects.bulk_create(homepages_list)
+ if package_created:
+ create_ebuilds(package, package_object)
+ # del
+ #models.CategoryModel.objects.exclude(pk__in = existend_categorys).delete()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-05 20:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-05 20:48 UTC (permalink / raw
To: gentoo-commits
commit: 8246af3caeb234f9b739683a37ea175d81eb12a2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 5 17:32:48 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 5 17:32:48 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=8246af3c
Changes in ebuild deletetion
---
gpackages/apps/packages/scan.py | 34 ++++++++++++++++++++--------------
1 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 994adbf..f739c69 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -196,7 +196,7 @@ def scan_uses_description():
use_desc_obj.save(force_update = True)
models.UseFlagDescriptionModel.objects.bulk_create(to_create)
-def scanpackages():
+def scanpackages(delete = True, force_update = False):
licenses_cache = {}
def get_licenses_objects(ebuild):
licenses = ebuild.licenses
@@ -297,33 +297,36 @@ def scanpackages():
update_related_to_ebuild(ebuild, ebuild_object)
ebuild_object.save(force_update = True)
if delete:
- models.EbuildModel.objects.exclude(pk__in = not_del).delete()
+ models.EbuildModel.objects.filter(package = package_object).exclude(pk__in = not_del).delete()
+
+ def update_package(package, package_object, force_update = False):
+ if package_object.need_update_metadata(package) or force_update:
+ package_object.herds.clear()
+ package_object.maintainers.clear()
+
+ if package_object.need_update_ebuilds(package) or force_update:
+ update_ebuilds(package, package_object)
+
+ package_object.update_info(package)
+ package_object.save(force_update = True)
# Load homepages to cache
#for homepage in models.HomepageModel.objects.all():
#homepages_cache[homepage.url] = homepage
existend_categorys = []
- existend_packages = []
for category in porttree.iter_categories():
+ existend_packages = []
category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
existend_categorys.append(category_object.pk)
for package in category.iter_packages():
- #print package
+ print package
package_object, package_created = models.PackageModel.objects.get_or_create(package = package, category = category_object)
existend_packages.append(package_object.pk)
if not package_created:
- if package_object.check_or_need_update(package):
+ if package_object.check_or_need_update(package) or force_update:
print package
# need update
- if package_object.need_update_metadata(package):
- package_object.herds.clear()
- package_object.maintainers.clear()
-
- if package_object.need_update_ebuilds(package):
- update_ebuilds(package, package_object)
-
- package_object.update_info(package)
- package_object.save(force_update = True)
+ update_package(package, package_object)
else:
# not need to update, ebuilds too
continue
@@ -331,6 +334,9 @@ def scanpackages():
package_object.maintainers.add(*get_maintainers_objects(package))
if package_created:
create_ebuilds(package, package_object)
+
+ if delete:
+ models.PackageModel.objects.filter(category = category_object).exclude(pk__in = existend_packages).delete()
# del
#models.CategoryModel.objects.exclude(pk__in = existend_categorys).delete()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-05 20:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-05 20:48 UTC (permalink / raw
To: gentoo-commits
commit: 54b17e3390263909535dc1edd697931f96635e1f
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 5 17:21:41 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 5 17:21:41 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=54b17e33
Add abstract class for created and updated datetime.
---
gpackages/apps/packages/models.py | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 8a52b5d..fd36098 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -3,6 +3,13 @@ from django.db import models
from porttree import Category, Package, Ebuild
import managers
+class AbstractDateTimeModel(models.Model):
+ created_datetime = models.DateTimeField(auto_now_add = True)
+ updated_datetime = models.DateTimeField(auto_now = True)
+
+ class Meta:
+ abstract = True
+
class HomepageModel(models.Model):
url = models.URLField(max_length=255, unique = True)
@@ -42,7 +49,7 @@ class CategoryModel(models.Model):
def __unicode__(self):
return self.category
-class MaintainerModel(models.Model):
+class MaintainerModel(AbstractDateTimeModel):
def __init__(self, *args, **kwargs):
#TODO: Bad code, maybe use some libraries for overload methods
@@ -75,7 +82,7 @@ class MaintainerModel(models.Model):
def __unicode__(self):
return ':'.join((unicode(self.name), self.email))
-class HerdsModel(models.Model):
+class HerdsModel(AbstractDateTimeModel):
def __init__(self, *args, **kwargs):
herd = None
@@ -109,7 +116,7 @@ class HerdsModel(models.Model):
def __unicode__(self):
return self.name
-class PackageModel(models.Model):
+class PackageModel(AbstractDateTimeModel):
def __init__(self, *args, **kwargs):
# TODO: Bad code, maybe use some library to overload method
package_object = None
@@ -209,7 +216,7 @@ class LicensModel(models.Model):
return self.name
-class EbuildModel(models.Model):
+class EbuildModel(AbstractDateTimeModel):
package = models.ForeignKey(PackageModel)
#repository = models.ForeignKey(RepositoryModel)
version = models.CharField(max_length = 26)
@@ -219,7 +226,6 @@ class EbuildModel(models.Model):
license = models.CharField(max_length = 254, blank = True )
ebuild_hash = models.CharField(max_length = 128)
ebuild_mtime = models.DateTimeField(blank = True, null = True)
- ebuild_datetime = models.DateTimeField(auto_now = True)
is_deleted = models.BooleanField(default = False)
is_masked = models.BooleanField(default = False)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-05 20:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-05 20:48 UTC (permalink / raw
To: gentoo-commits
commit: 38a340cdefa85a3a5ef62d2767ae0c38f37981d7
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 5 20:38:40 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 5 20:38:40 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=38a340cd
Update admin for packages
---
gpackages/apps/packages/admin.py | 86 +++++++++++++++++++++++++++++++++++---
1 files changed, 80 insertions(+), 6 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 08df2c5..b7fe67e 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -1,11 +1,85 @@
from django.contrib import admin
+from django.db.models import Count
from models import EbuildModel, PackageModel, LicensModel, CategoryModel, \
- UseFlagModel, RepositoryModel, HomepageModel, HerdsModel, MaintainerModel
+ UseFlagModel, RepositoryModel, HomepageModel, HerdsModel, \
+ MaintainerModel, Keyword, ArchesModel, UseFlagDescriptionModel
-admin.site.register(EbuildModel)
-admin.site.register(PackageModel)
-admin.site.register(LicensModel)
+class EbuildAdmin(admin.ModelAdmin):
+ list_display = ('__unicode__', 'is_masked', )
+ list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_masked')
+ filter_horizontal = ('licenses', 'use_flags', 'homepages')
+ date_hierarchy = 'updated_datetime'
+ list_select_related = True
+
+
+class PackageAdmin(admin.ModelAdmin):
+ list_display = ('__unicode__', 'ebuilds_count')
+ list_filter = ('created_datetime', 'updated_datetime', 'herds')
+ list_select_related = True
+
+ def queryset(self, request):
+ return super(PackageAdmin, self).queryset(request).annotate(ebuilds_count = Count('ebuildmodel'))
+
+ def ebuilds_count(self, obj):
+ return obj.ebuilds_count
+
+
+class HerdsAdmin(admin.ModelAdmin):
+ list_display = ('name', 'email', 'description', 'packages_count')
+ search_fields = ('name', 'email')
+
+ def queryset(self, request):
+ return super(HerdsAdmin, self).queryset(request).annotate(packages_count = Count('packagemodel'))
+
+ def packages_count(self, obj):
+ return obj.packages_count
+
+class MaintainerAdmin(admin.ModelAdmin):
+ list_display = ('name', 'email', 'packages_count')
+ search_fields = ('name', 'email')
+
+ def queryset(self, request):
+ return super(MaintainerAdmin, self).queryset(request).annotate(packages_count = Count('packagemodel'))
+
+ def packages_count(self, obj):
+ return obj.packages_count
+
+
+class UseFlagAdmin(admin.ModelAdmin):
+ list_display = ('name', 'description', 'ebuilds_count')
+ search_fields = ('name', 'description')
+
+ def queryset(self, request):
+ return super(UseFlagAdmin, self).queryset(request).annotate(ebuilds_count = Count('ebuildmodel'))
+
+ def ebuilds_count(self, obj):
+ return obj.ebuilds_count
+
+class UseFlagDescriptionAdmin(admin.ModelAdmin):
+ list_display = ('use_flag', 'package', 'description')
+ list_select_related = True
+
+class HomepageAdmin(admin.ModelAdmin):
+ list_display = ('url',)
+ search_fields = ('url',)
+
+class LicensAdmin(admin.ModelAdmin):
+ list_display = ('name', 'licenses_count')
+ search_fields = ('name',)
+
+ def queryset(self, request):
+ return super(LicensAdmin, self).queryset(request).annotate(licenses_count = Count('ebuildmodel'))
+
+ def licenses_count(self, obj):
+ return obj.licenses_count
+
+admin.site.register(EbuildModel, EbuildAdmin)
+admin.site.register(PackageModel, PackageAdmin)
+admin.site.register(LicensModel, LicensAdmin)
admin.site.register(CategoryModel)
-admin.site.register(UseFlagModel)
+admin.site.register(UseFlagModel, UseFlagAdmin)
+admin.site.register(UseFlagDescriptionModel, UseFlagDescriptionAdmin)
admin.site.register(RepositoryModel)
-admin.site.register(HomepageModel)
+admin.site.register(HomepageModel, HomepageAdmin)
+admin.site.register(HerdsModel, HerdsAdmin)
+admin.site.register(MaintainerModel, MaintainerAdmin)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-06 22:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-06 22:48 UTC (permalink / raw
To: gentoo-commits
commit: d3f396a3f7553bf9d1007f532d67e7bddc4f72cc
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jun 6 22:48:45 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jun 6 22:48:45 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=d3f396a3
Add caching in dbm
---
gpackages/apps/packages/scan.py | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index f316900..9c5c193 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -6,6 +6,8 @@ import porttree
import herds
import use_info
+import anydbm
+
portage = porttree.Portage()
def _get_from_cache(cache, what):
@@ -207,7 +209,10 @@ arches_cache = {}
homepages_cache = {}
herds_cache = {}
maintainers_cache = {}
-def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
+
+cache_dict = None
+def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
+ update_cache = True, use_cache = True):
def get_licenses_objects(ebuild):
licenses = ebuild.licenses
return _get_items(licenses, models.LicensModel, 'name', licenses_cache)
@@ -325,8 +330,19 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
existend_categorys.append(category_object.pk)
for package in category.iter_packages():
+ if use_cache:
+ key = str(porttree.name)+'/'+str(package)
+ val = None
+ if key in cache_dict:
+ val = cache_dict[key]
+ if val is not None and val == package.manifest_sha1:
+ continue
print('%s [%s]' % (package, porttree))
package_object, package_created = models.PackageModel.objects.get_or_create(package = package, category = category_object, repository = porttree_obj)
+ if update_cache:
+ key = str(porttree.name)+'/'+str(package)
+ cache_dict[key] = package.manifest_sha1
+
existend_packages.append(package_object.pk)
if not package_created:
if package_object.check_or_need_update(package) or force_update:
@@ -347,7 +363,10 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
def scan_all_repos():
+ global cache_dict
+ cache_dict = anydbm.open('cache.db','c')
herds_cache, maintainers_cache = scan_herds()
for repo in portage.iter_trees():
repo_obj, repo_created = models.RepositoryModel.objects.get_or_create(name = repo.name)
scanpackages(repo, repo_obj)
+ cache_dict.close()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 11:27 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 11:27 UTC (permalink / raw
To: gentoo-commits
commit: 54d392ff2ead7a3f4af92805cdf6e6578869d8b2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 11:27:08 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 11:27:08 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=54d392ff
Fix bug in delete.
---
gpackages/apps/packages/scan.py | 31 ++++++++++++++++---------------
1 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 9c5c193..5bd9b0b 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -330,18 +330,19 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
existend_categorys.append(category_object.pk)
for package in category.iter_packages():
- if use_cache:
- key = str(porttree.name)+'/'+str(package)
- val = None
- if key in cache_dict:
- val = cache_dict[key]
- if val is not None and val == package.manifest_sha1:
- continue
+ #if use_cache:
+ #key = str(porttree.name)+'/'+str(package)
+ #val = None
+ #if key in cache_dict:
+ #val = cache_dict[key]
+ #if val is not None and val == package.manifest_sha1:
+ #continue
print('%s [%s]' % (package, porttree))
- package_object, package_created = models.PackageModel.objects.get_or_create(package = package, category = category_object, repository = porttree_obj)
- if update_cache:
- key = str(porttree.name)+'/'+str(package)
- cache_dict[key] = package.manifest_sha1
+ package_object, package_created = models.PackageModel.objects.only('changelog_hash', 'manifest_hash', 'metadata_hash') \
+ .get_or_create(package = package, category = category_object, repository = porttree_obj)
+ #if update_cache:
+ #key = str(porttree.name)+'/'+str(package)
+ #cache_dict[key] = package.manifest_sha1
existend_packages.append(package_object.pk)
if not package_created:
@@ -357,16 +358,16 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
create_ebuilds(package, package_object)
if delete:
- models.PackageModel.objects.filter(category = category_object).exclude(pk__in = existend_packages).delete()
+ models.PackageModel.objects.filter(category = category_object, repository = porttree_obj).exclude(pk__in = existend_packages).delete()
# del
#models.CategoryModel.objects.exclude(pk__in = existend_categorys).delete()
def scan_all_repos():
- global cache_dict
- cache_dict = anydbm.open('cache.db','c')
+ #global cache_dict
+ #cache_dict = anydbm.open('cache.db','c')
herds_cache, maintainers_cache = scan_herds()
for repo in portage.iter_trees():
repo_obj, repo_created = models.RepositoryModel.objects.get_or_create(name = repo.name)
scanpackages(repo, repo_obj)
- cache_dict.close()
+ #cache_dict.close()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 18:37 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 18:37 UTC (permalink / raw
To: gentoo-commits
commit: 7be3203e948de4fa4ea78554cf5107b79e5fddbd
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 14:05:27 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 14:05:27 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=7be3203e
Del unused code in managers.
---
gpackages/apps/packages/managers.py | 40 +---------------------------------
1 files changed, 2 insertions(+), 38 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index cfde91e..c4ab013 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -44,7 +44,8 @@ class KeywordMixin(object):#{{{
def get_or_create(self, keyword=None, **kwargs):
if keyword is not None:
if isinstance(keyword, Keyword):
- arch, created = packages.models.ArchesModel.objects.get_or_create(name = keyword.name)
+ arch, created = packages.models.ArchesModel.objects \
+ .get_or_create(name = keyword.name)
kwargs.update({'arch': arch, 'status': keyword.status})
else:
raise ValueError("Bad keyword object")
@@ -53,43 +54,6 @@ class KeywordMixin(object):#{{{
class EbuildMixin(object):#{{{
- #def create(self, **kwargs):
- #if 'ebuild' in kwargs:
- #obj = self.model(**kwargs)
- #else:
- #obj = super(EbuildMixin, self).create(**kwargs)
- #return obj
-
- #def get_or_create(self, **kwargs):
- #assert kwargs, \
- #'get_or_create() must be passed at least one keyword argument'
- #defaults = kwargs.pop('defaults', {})
- #lookup = kwargs.copy()
- #for f in self.model._meta.fields:
- #if f.attname in lookup:
- #lookup[f.name] = lookup.pop(f.attname)
- #try:
- #self._for_write = True
- #return self.get(**lookup), False
- #except self.model.DoesNotExist:
- #try:
- #params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
- #params.update(defaults)
- #sid = transaction.savepoint(using=self.db)
- #obj = self.model(**params)
- #if 'ebuild' not in kwargs:
- #obj.save(force_insert=True, using=self.db)
- #transaction.savepoint_commit(sid, using=self.db)
- #return obj, True
- #except IntegrityError as e:
- #transaction.savepoint_rollback(sid, using=self.db)
- #exc_info = sys.exc_info()
- #try:
- #return self.get(**lookup), False
- #except self.model.DoesNotExist:
- ## Re-raise the IntegrityError with its original traceback.
- #raise exc_info[1], None, exc_info[2]
-
def get(self, ebuild=None,package = None, *args, **kwargs):
if ebuild is not None and isinstance(ebuild, Ebuild):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 18:37 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 18:37 UTC (permalink / raw
To: gentoo-commits
commit: 2fea5d7405abf9549e7a281019e66077adc1c763
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 14:26:31 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 14:26:31 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=2fea5d74
Code clean-up in models
---
gpackages/apps/packages/models.py | 15 ---------------
1 files changed, 0 insertions(+), 15 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 80e4103..3b30d6f 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -31,21 +31,6 @@ class RepositoryModel(models.Model):
return self.name
class CategoryModel(models.Model):
- def __init__(self, *args, **kwargs):
- category_object = None
-
- if len(args)>=1:
- category_object = args[0]
- if 'category_object' in kwargs:
- category_object = kwargs['category_object']
- elif 'category' in kwargs:
- category_object = kwargs['category']
-
- if isinstance(category_object, Category):
- return super(CategoryModel, self).__init__(category = category_object.category)
- else:
- return super(CategoryModel, self).__init__(*args, **kwargs)
-
category = models.CharField(unique = True, max_length = 70)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 18:37 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 18:37 UTC (permalink / raw
To: gentoo-commits
commit: 54a9e0228a598e86a7d19651016c708881c90dc1
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 15:27:45 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 15:27:45 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=54a9e022
Fix bug in herds.
---
gpackages/apps/packages/scan.py | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 5bd9b0b..d437e42 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -364,6 +364,7 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
def scan_all_repos():
+ global herds_cache, maintainers_cache
#global cache_dict
#cache_dict = anydbm.open('cache.db','c')
herds_cache, maintainers_cache = scan_herds()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 18:37 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 18:37 UTC (permalink / raw
To: gentoo-commits
commit: 0ea02f6f29cbcea12e249f882f6f7b723920738b
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 15:27:26 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 15:27:26 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=0ea02f6f
Code clean-up in admin
---
gpackages/apps/packages/admin.py | 63 +++++++++++++++-----------------------
1 files changed, 25 insertions(+), 38 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index b7fe67e..b403a45 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -4,6 +4,25 @@ from models import EbuildModel, PackageModel, LicensModel, CategoryModel, \
UseFlagModel, RepositoryModel, HomepageModel, HerdsModel, \
MaintainerModel, Keyword, ArchesModel, UseFlagDescriptionModel
+class AbstractAnnotateAdmin(object):
+ annotate_dict = {}
+
+ def queryset(self, request):
+ return super(AbstractAnnotateAdmin, self).queryset(request) \
+ .annotate(**self.annotate_dict)
+
+class EbuildsCountAdmin(AbstractAnnotateAdmin):
+ annotate_dict = {'ebuilds_count': Count('ebuildmodel')}
+
+ def ebuilds_count(self, obj):
+ return obj.ebuilds_count
+
+class PackagesCountAdmin(AbstractAnnotateAdmin):
+ annotate_dict = {'packages_count': Count('packagemodel')}
+
+ def packages_count(self, obj):
+ return obj.packages_count
+
class EbuildAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'is_masked', )
list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_masked')
@@ -11,50 +30,23 @@ class EbuildAdmin(admin.ModelAdmin):
date_hierarchy = 'updated_datetime'
list_select_related = True
-
-class PackageAdmin(admin.ModelAdmin):
+class PackageAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('__unicode__', 'ebuilds_count')
list_filter = ('created_datetime', 'updated_datetime', 'herds')
list_select_related = True
- def queryset(self, request):
- return super(PackageAdmin, self).queryset(request).annotate(ebuilds_count = Count('ebuildmodel'))
-
- def ebuilds_count(self, obj):
- return obj.ebuilds_count
-
-
-class HerdsAdmin(admin.ModelAdmin):
+class HerdsAdmin(PackagesCountAdmin, admin.ModelAdmin):
list_display = ('name', 'email', 'description', 'packages_count')
search_fields = ('name', 'email')
- def queryset(self, request):
- return super(HerdsAdmin, self).queryset(request).annotate(packages_count = Count('packagemodel'))
-
- def packages_count(self, obj):
- return obj.packages_count
-
-class MaintainerAdmin(admin.ModelAdmin):
+class MaintainerAdmin(PackagesCountAdmin, admin.ModelAdmin):
list_display = ('name', 'email', 'packages_count')
search_fields = ('name', 'email')
- def queryset(self, request):
- return super(MaintainerAdmin, self).queryset(request).annotate(packages_count = Count('packagemodel'))
-
- def packages_count(self, obj):
- return obj.packages_count
-
-
-class UseFlagAdmin(admin.ModelAdmin):
+class UseFlagAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('name', 'description', 'ebuilds_count')
search_fields = ('name', 'description')
- def queryset(self, request):
- return super(UseFlagAdmin, self).queryset(request).annotate(ebuilds_count = Count('ebuildmodel'))
-
- def ebuilds_count(self, obj):
- return obj.ebuilds_count
-
class UseFlagDescriptionAdmin(admin.ModelAdmin):
list_display = ('use_flag', 'package', 'description')
list_select_related = True
@@ -63,15 +55,10 @@ class HomepageAdmin(admin.ModelAdmin):
list_display = ('url',)
search_fields = ('url',)
-class LicensAdmin(admin.ModelAdmin):
- list_display = ('name', 'licenses_count')
+class LicensAdmin(EbuildsCountAdmin, admin.ModelAdmin):
+ list_display = ('name', 'ebuilds_count')
search_fields = ('name',)
- def queryset(self, request):
- return super(LicensAdmin, self).queryset(request).annotate(licenses_count = Count('ebuildmodel'))
-
- def licenses_count(self, obj):
- return obj.licenses_count
admin.site.register(EbuildModel, EbuildAdmin)
admin.site.register(PackageModel, PackageAdmin)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-07 22:48 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-07 22:48 UTC (permalink / raw
To: gentoo-commits
commit: 0589a3ae5f667330ba55f8a3992fd4d0407be51f
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 7 21:30:20 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 7 21:30:20 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=0589a3ae
Code clean-up in managers
---
gpackages/apps/packages/managers.py | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index ed5018c..7ebde50 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -36,6 +36,7 @@ class PackageMixin(object):#{{{
else:
kwargs.update({'name': name})
elif package is not None:
+ # Bad code !!
category, name = package.split('/')
kwargs.update({'name': name, 'category__category': category})
return super(PackageMixin, self).get(*args, **kwargs)#}}}
@@ -64,10 +65,8 @@ class EbuildMixin(object):#{{{
'package__name': ebuild.package.name })
else:
kwargs.update({'package': package})
- version = ebuild.version
- revision = ebuild.revision
- kwargs.update({ 'version': version,
- 'revision': revision })
+ kwargs.update({ 'version': ebuild.version,
+ 'revision': ebuild.revision })
return super(EbuildMixin, self).get(*args, **kwargs)#}}}
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-09 18:19 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-09 18:19 UTC (permalink / raw
To: gentoo-commits
commit: 5af34c978bd73991caede9e577c75b49934cb4e2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 9 10:45:34 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 9 10:45:34 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=5af34c97
Changes in scan.py
---
gpackages/apps/packages/scan.py | 29 +++++++++++++++++++----------
1 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index d437e42..c9645fc 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -310,10 +310,23 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
if delete:
models.EbuildModel.objects.filter(package = package_object).exclude(pk__in = not_del).delete()
+ def clear_related_to_package(package_object):
+ package_object.herds.clear()
+ package_object.maintainers.clear()
+
+
+ def add_related_to_package(package, package_object):
+ package_object.herds.add(*get_herds_objects(package))
+ package_object.maintainers.add(*get_maintainers_objects(package))
+
+ def update_related_to_package(package, package_object):
+ clear_related_to_package(package_object)
+ add_related_to_package(package, package_object)
+
def update_package(package, package_object, force_update = False):
if package_object.need_update_metadata(package) or force_update:
- package_object.herds.clear()
- package_object.maintainers.clear()
+ #Updating related objects to package
+ update_related_to_package(package, package_object)
if package_object.need_update_ebuilds(package) or force_update:
update_ebuilds(package, package_object)
@@ -337,7 +350,7 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
#val = cache_dict[key]
#if val is not None and val == package.manifest_sha1:
#continue
- print('%s [%s]' % (package, porttree))
+ print('%s [%s]' % (str(package).ljust(44), porttree))
package_object, package_created = models.PackageModel.objects.only('changelog_hash', 'manifest_hash', 'metadata_hash') \
.get_or_create(package = package, category = category_object, repository = porttree_obj)
#if update_cache:
@@ -349,18 +362,14 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
if package_object.check_or_need_update(package) or force_update:
# need update
update_package(package, package_object)
- else:
- # not need to update, ebuilds too
- continue
- package_object.herds.add(*get_herds_objects(package))
- package_object.maintainers.add(*get_maintainers_objects(package))
+
+ continue
+ add_related_to_package(package, package_object)
if package_created:
create_ebuilds(package, package_object)
if delete:
models.PackageModel.objects.filter(category = category_object, repository = porttree_obj).exclude(pk__in = existend_packages).delete()
- # del
- #models.CategoryModel.objects.exclude(pk__in = existend_categorys).delete()
def scan_all_repos():
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-09 18:19 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-09 18:19 UTC (permalink / raw
To: gentoo-commits
commit: 842ed7b061795f548f76b13c3161839d032bdd19
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 9 16:18:03 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 9 16:18:03 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=842ed7b0
More refactoring in scan.py
---
gpackages/apps/packages/models.py | 1 -
gpackages/apps/packages/scan.py | 147 ++++++++++++++++++-------------------
2 files changed, 73 insertions(+), 75 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index dc2147c..713cb70 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -48,7 +48,6 @@ class MaintainerModel(AbstractDateTimeModel):
name = models.CharField(max_length = 255, blank = True, null = True)
email = models.EmailField(unique = True)
- role = models.TextField(blank = True, null = True)
objects = managers.MaintainerManager()
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index db9c0e6..d0f476e 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -66,7 +66,8 @@ def _get_items(items_list, Model, field_name, cache_var):
# Getting from cache
items_objects, geted_items = _get_from_cache(cache_var, items_set)
# Getting from database
- queryset, geted = _get_from_database_and_update_cache(Model, field_name, items_set - geted_items, cache_var)
+ queryset, geted = _get_from_database_and_update_cache(Model, field_name,
+ items_set - geted_items, cache_var)
if queryset is None:
return items_objects
geted_items = geted_items | geted
@@ -75,7 +76,8 @@ def _get_items(items_list, Model, field_name, cache_var):
items_objects.extend(queryset)
# Create not existend items fast using bulk_create, works only in django 1.4 or gt
need_create = list(items_set - geted_items)
- created, geted = _create_objects_and_update_cache(Model, field_name, need_create, cache_var)
+ created, geted = _create_objects_and_update_cache(Model, field_name,
+ need_create, cache_var)
if created is None:
return items_objects
items_objects.extend(created)
@@ -281,76 +283,73 @@ class Scanner(object):
def clean_keywords_object(self, ebuild_object):
models.Keyword.objects.filter(ebuild = ebuild_object).delete()
- def scanpackages(self, porttree, porttree_obj, delete = True,
- force_update = False, update_cache = True, use_cache = True):
-
-
-
-
- def add_related_to_ebuild(ebuild, ebuild_object):
- # Add licenses
- ebuild_object.licenses.add(*self.get_licenses_objects(ebuild))
- 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)
-
- def clear_related_to_ebuild(ebuild_object):
- ebuild_object.licenses.clear()
- ebuild_object.use_flags.clear()
- ebuild_object.homepages.clear()
- self.clean_keywords_object(ebuild_object)
-
- def update_related_to_ebuild(ebuild, ebuild_object):
- clear_related_to_ebuild(ebuild_object)
- add_related_to_ebuild(ebuild, ebuild_object)
-
- def create_ebuilds(package, package_object):
- for ebuild in package.iter_ebuilds():
- ebuild_object = models.EbuildModel()
- ebuild_object.init_by_ebuild(ebuild)
- ebuild_object.package = package_object
- # To Add some related objects it should have pk
- ebuild_object.save(force_insert=True)
- add_related_to_ebuild(ebuild, ebuild_object)
-
- def update_ebuilds(package, package_object, delete = True):
- not_del = []
- for ebuild in package.iter_ebuilds():
- ebuild_object, ebuild_created = models.EbuildModel.objects.get_or_create(ebuild = ebuild, package = package_object)
- not_del.append(ebuild_object.pk)
- if ebuild_created:
- add_related_to_ebuild(ebuild, ebuild_object)
- continue
- if ebuild_object.check_or_need_update(ebuild):
- ebuild_object.update_by_ebuild(ebuild)
- update_related_to_ebuild(ebuild, ebuild_object)
- ebuild_object.save(force_update = True)
- if delete:
- models.EbuildModel.objects.filter(package = package_object).exclude(pk__in = not_del).delete()
-
- def clear_related_to_package(package_object):
- package_object.herds.clear()
- package_object.maintainers.clear()
-
-
- def add_related_to_package(package, package_object):
- package_object.herds.add(*self.get_herds_objects(package))
- package_object.maintainers.add(*self.get_maintainers_objects(package))
-
- def update_related_to_package(package, package_object):
- clear_related_to_package(package_object)
- add_related_to_package(package, package_object)
-
- def update_package(package, package_object, force_update = False):
- if package_object.need_update_metadata(package) or force_update:
- #Updating related objects to package
- update_related_to_package(package, package_object)
+ def add_related_to_ebuild(self, ebuild, ebuild_object):
+ # Add licenses
+ ebuild_object.licenses.add(*self.get_licenses_objects(ebuild))
+ 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)
+
+ def clear_related_to_ebuild(self, ebuild_object):
+ ebuild_object.licenses.clear()
+ ebuild_object.use_flags.clear()
+ ebuild_object.homepages.clear()
+ self.clean_keywords_object(ebuild_object)
+
+ def update_related_to_ebuild(self, ebuild, ebuild_object):
+ self.clear_related_to_ebuild(ebuild_object)
+ self.add_related_to_ebuild(ebuild, ebuild_object)
+
+ def create_ebuilds(self, package, package_object):
+ for ebuild in package.iter_ebuilds():
+ ebuild_object = models.EbuildModel()
+ ebuild_object.init_by_ebuild(ebuild)
+ ebuild_object.package = package_object
+ # To Add some related objects it should have pk
+ ebuild_object.save(force_insert=True)
+ self.add_related_to_ebuild(ebuild, ebuild_object)
+
+ def clear_related_to_package(self, package_object):
+ package_object.herds.clear()
+ package_object.maintainers.clear()
+
- if package_object.need_update_ebuilds(package) or force_update:
- update_ebuilds(package, package_object)
+ def add_related_to_package(self, package, package_object):
+ package_object.herds.add(*self.get_herds_objects(package))
+ package_object.maintainers.add(*self.get_maintainers_objects(package))
+
+ def update_related_to_package(self, package, package_object):
+ self.clear_related_to_package(package_object)
+ self.add_related_to_package(package, package_object)
+
+ def update_ebuilds(self, package, package_object, delete = True):
+ not_del = []
+ for ebuild in package.iter_ebuilds():
+ ebuild_object, ebuild_created = models.EbuildModel.objects.get_or_create(ebuild = ebuild, package = package_object)
+ not_del.append(ebuild_object.pk)
+ if ebuild_created:
+ self.add_related_to_ebuild(ebuild, ebuild_object)
+ continue
+ if ebuild_object.check_or_need_update(ebuild):
+ ebuild_object.update_by_ebuild(ebuild)
+ self.update_related_to_ebuild(ebuild, ebuild_object)
+ ebuild_object.save(force_update = True)
+ if delete:
+ models.EbuildModel.objects.filter(package = package_object).exclude(pk__in = not_del).delete()
+
+ def update_package(package, package_object, force_update = False):
+ if package_object.need_update_metadata(package) or force_update:
+ #Updating related objects to package
+ self.update_related_to_package(package, package_object)
+
+ if package_object.need_update_ebuilds(package) or force_update:
+ self.update_ebuilds(package, package_object)
+
+ package_object.update_info(package)
+ package_object.save(force_update = True)
- package_object.update_info(package)
- package_object.save(force_update = True)
+ def scanpackages(self, porttree, porttree_obj, delete = True,
+ force_update = False, update_cache = True, use_cache = True):
# Load homepages to cache
#for homepage in models.HomepageModel.objects.all():
@@ -368,7 +367,7 @@ class Scanner(object):
#val = cache_dict[key]
#if val is not None and val == package.manifest_sha1:
#continue
- print('%s [%s]' % (str(package).ljust(44), porttree))
+ print('%-44s [%s]' % (package, porttree))
package_object, package_created = models.PackageModel.objects.only('changelog_hash', 'manifest_hash', 'metadata_hash') \
.get_or_create(package = package, category = category_object, repository = porttree_obj)
#if update_cache:
@@ -379,12 +378,12 @@ class Scanner(object):
if not package_created:
if package_object.check_or_need_update(package) or force_update:
# need update
- update_package(package, package_object)
+ self.update_package(package, package_object)
continue
# if package_created:
- add_related_to_package(package, package_object)
- create_ebuilds(package, package_object)
+ self.add_related_to_package(package, package_object)
+ self.create_ebuilds(package, package_object)
if delete:
models.PackageModel.objects.filter(category = category_object, repository = porttree_obj).exclude(pk__in = existend_packages).delete()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-10 17:51 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-10 17:51 UTC (permalink / raw
To: gentoo-commits
commit: de5ae2fa059a0d463283be466396a4f7093288ec
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jun 10 14:15:08 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jun 10 14:15:08 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=de5ae2fa
Fix bug in update_package
---
gpackages/apps/packages/scan.py | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index a7a77b9..37ba159 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -247,7 +247,9 @@ class Scanner(object):
for repo in portage.iter_trees():
self.output("Scaning repository '%s'\n", repo.name, 3)
- repo_obj, repo_created = models.RepositoryModel.objects.get_or_create(name = repo.name)
+ repo_obj, repo_created = models.RepositoryModel.objects \
+ .get_or_create(name = repo.name)
+
self.scanpackages(repo, repo_obj)
#cache_dict.close()
@@ -367,9 +369,10 @@ class Scanner(object):
self.output("ebuild updated '%s'\n", ebuild_object, 3)
if delete:
- models.EbuildModel.objects.filter(package = package_object).exclude(pk__in = not_del).delete()
+ models.EbuildModel.objects.filter(package = package_object) \
+ .exclude(pk__in = not_del).delete()
- def update_package(package, package_object, force_update = False):
+ def update_package(self, package, package_object, force_update = False):
if package_object.need_update_metadata(package) or force_update:
#Updating related objects to package
self.update_related_to_package(package, package_object)
@@ -386,7 +389,9 @@ class Scanner(object):
existend_categorys = []
for category in porttree.iter_categories():
existend_packages = []
- category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
+ category_object, category_created = models.CategoryModel \
+ .objects.get_or_create(category = category)
+
existend_categorys.append(category_object.pk)
for package in category.iter_packages():
#if use_cache:
@@ -397,8 +402,11 @@ class Scanner(object):
#if val is not None and val == package.manifest_sha1:
#continue
self.output('%-44s [%s]\n', (package, porttree))
- package_object, package_created = models.PackageModel.objects.only('changelog_hash', 'manifest_hash', 'metadata_hash') \
- .get_or_create(package = package, category = category_object, repository = porttree_obj)
+ package_object, package_created = models.PackageModel.objects \
+ .only('changelog_hash', 'manifest_hash', 'metadata_hash') \
+ .get_or_create(package = package,
+ category = category_object,
+ repository = porttree_obj)
#if update_cache:
#key = str(porttree.name)+'/'+str(package)
#cache_dict[key] = package.manifest_sha1
@@ -415,7 +423,9 @@ class Scanner(object):
self.create_ebuilds(package, package_object)
if delete:
- models.PackageModel.objects.filter(category = category_object, repository = porttree_obj).exclude(pk__in = existend_packages).delete()
+ models.PackageModel.objects \
+ .filter(category = category_object, repository = porttree_obj) \
+ .exclude(pk__in = existend_packages).delete()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-10 22:56 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-10 22:56 UTC (permalink / raw
To: gentoo-commits
commit: ca060436bc632080921c209d062bce107d6807b3
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jun 10 22:45:31 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jun 10 22:45:31 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=ca060436
Admin tuning
---
gpackages/apps/packages/admin.py | 9 +++++++++
gpackages/apps/packages/models.py | 4 +++-
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index b403a45..a316c72 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -23,12 +23,20 @@ class PackagesCountAdmin(AbstractAnnotateAdmin):
def packages_count(self, obj):
return obj.packages_count
+class KeywordAdmin(admin.TabularInline):
+ model = Keyword
+
+class ArchesAdmin(admin.ModelAdmin):
+ list_display = ('name',)
+ search_fields = ('name',)
+
class EbuildAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'is_masked', )
list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_masked')
filter_horizontal = ('licenses', 'use_flags', 'homepages')
date_hierarchy = 'updated_datetime'
list_select_related = True
+ inlines = (KeywordAdmin,)
class PackageAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('__unicode__', 'ebuilds_count')
@@ -70,3 +78,4 @@ admin.site.register(RepositoryModel)
admin.site.register(HomepageModel, HomepageAdmin)
admin.site.register(HerdsModel, HerdsAdmin)
admin.site.register(MaintainerModel, MaintainerAdmin)
+admin.site.register(ArchesModel, ArchesAdmin)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 3486399..b2170f1 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -136,7 +136,9 @@ class PackageModel(AbstractDateTimeModel):
self.name = package.name
self.update_info(package)
if category is None:
- self.category, created = CategoryModel.objects.get_or_create(category = package.category)
+ self.category, created = CategoryModel \
+ .objects.get_or_create(category = package.category)
+
elif isinstance(category, CategoryModel):
self.category = category
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-12 18:34 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-12 18:34 UTC (permalink / raw
To: gentoo-commits
commit: c6829e89b5652642864f0043a3b075430ada3b29
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jun 11 23:41:36 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jun 11 23:41:36 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c6829e89
Code check that keywords doesn't repeat
---
gpackages/apps/packages/scan.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index ef28293..82c8a91 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -353,7 +353,7 @@ class Scanner(object):
def create_keywords_objects(self, ebuild, ebuild_object):
keywords_list = []
- for keyword in ebuild.get_keywords():
+ for keyword in ebuild.get_uniq_keywords():
keyword_object = models.Keyword(status = keyword.status,
ebuild = ebuild_object)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-13 22:15 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-13 22:15 UTC (permalink / raw
To: gentoo-commits
commit: 954496f22408b9fd7b3960e691c8eff8e786993a
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jun 13 15:17:12 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jun 13 15:17:12 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=954496f2
Add search by category to VirtualPackageAdmin
---
gpackages/apps/packages/admin.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 42b854b..f803372 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -41,7 +41,7 @@ class EbuildAdmin(admin.ModelAdmin):
class VirtualPackageAdmin(admin.ModelAdmin):
list_display = ('__unicode__',)
- search_fields = ('name',)
+ search_fields = ('name','category__category')
class PackageAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('__unicode__', 'ebuilds_count')
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-20 23:23 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-20 23:23 UTC (permalink / raw
To: gentoo-commits
commit: 770b394d6658ed0c481d027fbe92d65691656049
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jun 20 11:38:04 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jun 20 11:38:04 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=770b394d
Add repository feed and source to admin
---
gpackages/apps/packages/admin.py | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 9ce400d..5b5c209 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -3,7 +3,8 @@ from django.db.models import Count
from models import EbuildModel, PackageModel, LicenseModel, CategoryModel, \
UseFlagModel, RepositoryModel, HomepageModel, MaintainerModel, \
Keyword, ArchesModel, UseFlagDescriptionModel, HerdsModel, \
- VirtualPackageModel
+ VirtualPackageModel, RepositoryFeedModel, \
+ RepositorySourceModel
class AbstractAnnotateAdmin(object):
annotate_dict = {}
@@ -72,6 +73,24 @@ class LicenseAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('name', 'ebuilds_count')
search_fields = ('name',)
+class RepositoryAdmin(admin.ModelAdmin):
+ list_display = ('name', 'updated_datetime', 'official', 'homepage', 'quality')
+ search_fields = ('name', 'description', 'owner_name', 'owner_email')
+ list_filter = ('created_datetime', 'updated_datetime', 'official', 'quality')
+ date_hierarchy = 'updated_datetime'
+
+class RepositoryFeedAdmin(admin.ModelAdmin):
+ list_display = ('repository', 'feed')
+ search_fields = ('repository__name', 'feed')
+ list_filter = ('repository', )
+ list_select_related = True
+
+class RepositorySourceAdmin(admin.ModelAdmin):
+ list_display = ('repository', 'repo_type', 'url', 'subpath')
+ search_fields = ('repository__name', 'url')
+ list_filter = ('repo_type', )
+ list_select_related = True
+
admin.site.register(EbuildModel, EbuildAdmin)
admin.site.register(VirtualPackageModel, VirtualPackageAdmin)
@@ -80,7 +99,9 @@ admin.site.register(LicenseModel, LicenseAdmin)
admin.site.register(CategoryModel)
admin.site.register(UseFlagModel, UseFlagAdmin)
admin.site.register(UseFlagDescriptionModel, UseFlagDescriptionAdmin)
-admin.site.register(RepositoryModel)
+admin.site.register(RepositoryModel, RepositoryAdmin)
+admin.site.register(RepositoryFeedModel, RepositoryFeedAdmin)
+admin.site.register(RepositorySourceModel, RepositorySourceAdmin)
admin.site.register(HomepageModel, HomepageAdmin)
admin.site.register(HerdsModel, HerdsAdmin)
admin.site.register(MaintainerModel, MaintainerAdmin)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-20 23:23 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-20 23:23 UTC (permalink / raw
To: gentoo-commits
commit: bf591ce7f367ac35d6c10e17049a9af45357020b
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 19 18:27:13 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 19 18:27:13 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=bf591ce7
Little refactor in scan.py
---
gpackages/apps/packages/scan.py | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 3e5cf81..48f7002 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -119,19 +119,21 @@ class Scanner(object):
self.start_time = datetime.now()
def update_options(self, **kwargs):
+ bool_get = lambda x,y: bool(kwargs.get(x, y))
+
self.verbosity = toint(kwargs.get('verbosity',1),1)
- self.traceback = bool(kwargs.get('traceback',False))
- self.s_all = bool(kwargs.get('scan_all', False))
- self.s_packages = bool(kwargs.get('packages', False))
- self.s_only_repo_info = bool(kwargs.get('only_repo_info', False))
- self.is_show_time = bool(kwargs.get('show_time', True))
- self.is_scan_herds = bool(kwargs.get('scan_herds', True))
- self.force_update = bool(kwargs.get('force_update', False))
- self.update_repo = bool(kwargs.get('update_repo', False))
- self.delete = bool(kwargs.get('delete', True))
+ self.traceback = bool_get('traceback',False)
+ self.s_all = bool_get('scan_all', False)
+ self.s_packages = bool_get('packages', False)
+ self.s_only_repo_info = bool_get('only_repo_info', False)
+ self.is_show_time = bool_get('show_time', True)
+ self.is_scan_herds = bool_get('scan_herds', True)
+ self.force_update = bool_get('force_update', False)
+ self.update_repo = bool_get('update_repo', False)
+ self.delete = bool_get('delete', True)
self.scan_repos_name = tuple(kwargs.get('repos',[]))
- self.scan_global_use_descr = bool(kwargs.get('scan_global_use', False))
- self.scan_local_use_descr = bool(kwargs.get('scan_local_use', False))
+ self.scan_global_use_descr = bool_get('scan_global_use', False)
+ self.scan_local_use_descr = bool_get('scan_local_use', False)
def show_time(self):
end = datetime.now()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-20 23:23 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-20 23:23 UTC (permalink / raw
To: gentoo-commits
commit: 997f0bca9b029d7a5d2c58327a5a3846a254fcd3
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jun 20 11:44:55 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jun 20 11:44:55 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=997f0bca
Select related for virtual packages
---
gpackages/apps/packages/admin.py | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 5b5c209..b66ef73 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -43,6 +43,7 @@ class EbuildAdmin(admin.ModelAdmin):
class VirtualPackageAdmin(admin.ModelAdmin):
list_display = ('__unicode__',)
search_fields = ('name','category__category')
+ list_select_related = True
class PackageAdmin(EbuildsCountAdmin, admin.ModelAdmin):
list_display = ('__unicode__', 'ebuilds_count')
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-24 23:21 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-24 23:21 UTC (permalink / raw
To: gentoo-commits
commit: cffe07358db18dcead5bca370b03945ae304349e
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 23 17:06:26 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 23 17:06:26 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=cffe0735
Add indexes
---
gpackages/apps/packages/models.py | 32 ++++++++++++++++----------------
1 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 614faa0..943b370 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -25,7 +25,7 @@ class HomepageModel(models.Model):
return self.url
class ArchesModel(models.Model):
- name = models.CharField(unique = True, max_length = 22)
+ name = models.CharField(unique = True, max_length = 22, db_index = True)
def __unicode__(self):
return self.name
@@ -43,7 +43,7 @@ class RepositoryModel(AbstractDateTimeModel):
if repo is not None:
self.init_by_repo(repo)
- name = models.CharField(unique = True, max_length = 60)
+ name = models.CharField(unique = True, max_length = 60, db_index = True)
# Additional info
description = models.TextField(blank = True, null = True)
@@ -114,7 +114,7 @@ class RepositoryModel(AbstractDateTimeModel):
return self.name
class RepositoryFeedModel(models.Model):
- repository = models.ForeignKey(RepositoryModel)
+ repository = models.ForeignKey(RepositoryModel, db_index = True)
feed = models.URLField()
def __unicode__(self):
@@ -129,7 +129,7 @@ class RepositorySourceModel(models.Model):
repo_type = models.PositiveSmallIntegerField(choices = REPO_TYPE)
url = models.CharField(max_length = 255)
subpath = models.CharField(max_length = 100, blank = True, null = True)
- repository = models.ForeignKey(RepositoryModel)
+ repository = models.ForeignKey(RepositoryModel, db_index = True)
def __unicode__(self):
return self.url
@@ -149,7 +149,7 @@ class CategoryModel(models.Model):
def check_or_need_update(self, category):
return self.metadata_hash == category.metadata_sha1
- category = models.CharField(unique = True, max_length = 70)
+ category = models.CharField(unique = True, max_length = 70, db_index = True)
description = models.TextField(blank = True, null = True)
metadata_hash = models.CharField(max_length = 128, null = True)
@@ -165,7 +165,7 @@ class MaintainerModel(AbstractDateTimeModel):
self.init_by_maintainer(maintainer)
name = models.CharField(max_length = 255, blank = True, null = True)
- email = models.EmailField(unique = True, validators = [validate_email])
+ email = models.EmailField(unique = True, validators = [validate_email], db_index = True)
objects = managers.MaintainerManager()
@@ -191,7 +191,7 @@ class HerdsModel(AbstractDateTimeModel):
if herd is not None:
self.init_by_herd(herd)
- name = models.CharField(unique = True, max_length = 150)
+ name = models.CharField(unique = True, max_length = 150, db_index = True)
email = models.EmailField(validators = [validate_email])
description = models.TextField(blank = True, null = True)
maintainers = models.ManyToManyField(MaintainerModel, blank = True)
@@ -218,7 +218,7 @@ class HerdsModel(AbstractDateTimeModel):
ordering = ('name',)
class VirtualPackageModel(models.Model):
- name = models.CharField(max_length = 254)
+ name = models.CharField(max_length = 254, db_index = True)
category = models.ForeignKey(CategoryModel)
objects = managers.VirtualPackageManager()
@@ -243,7 +243,7 @@ class PackageModel(AbstractDateTimeModel):
self.init_by_package(package_object, category = category)
- virtual_package = models.ForeignKey(VirtualPackageModel)
+ virtual_package = models.ForeignKey(VirtualPackageModel, db_index = True)
changelog = models.TextField(blank = True, null = True)
changelog_hash = models.CharField(max_length = 128)
manifest_hash = models.CharField(max_length = 128)
@@ -256,7 +256,7 @@ class PackageModel(AbstractDateTimeModel):
maintainers = models.ManyToManyField(MaintainerModel, blank = True)
description = models.TextField(blank = True, null = True)
- repository = models.ForeignKey(RepositoryModel)
+ repository = models.ForeignKey(RepositoryModel, db_index = True)
# Different versions can have different licenses, or homepages.
objects = managers.PackageManager()
@@ -306,14 +306,14 @@ class PackageModel(AbstractDateTimeModel):
unique_together = ('virtual_package', 'repository')
class UseFlagModel(models.Model):
- name = models.CharField(unique = True, max_length = 60)
+ name = models.CharField(unique = True, max_length = 60, db_index = True)
description = models.TextField(blank = True)
def __unicode__(self):
return self.name
class UseFlagDescriptionModel(models.Model):
- use_flag = models.ForeignKey(UseFlagModel)
+ use_flag = models.ForeignKey(UseFlagModel, db_index = True)
package = models.ForeignKey(VirtualPackageModel)
description = models.TextField()
@@ -327,7 +327,7 @@ class UseFlagDescriptionModel(models.Model):
unique_together = ('use_flag', 'package')
class LicenseModel(models.Model):
- name = models.CharField(unique = True, max_length = 60)
+ name = models.CharField(unique = True, max_length = 60, db_index = True)
#description = TextField()
def __unicode__(self):
@@ -335,9 +335,9 @@ class LicenseModel(models.Model):
class EbuildModel(AbstractDateTimeModel):
- package = models.ForeignKey(PackageModel)
- version = models.CharField(max_length = 26)
- revision = models.CharField(max_length = 12)
+ 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)
use_flags = models.ManyToManyField(UseFlagModel)
licenses = models.ManyToManyField(LicenseModel)
license = models.CharField(max_length = 254, blank = True )
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-25 22:23 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-25 22:23 UTC (permalink / raw
To: gentoo-commits
commit: ac2250f01a4656a5f703c58ae16defb501396885
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jun 25 22:23:31 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jun 25 22:23:31 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=ac2250f0
Add docstrings to scan.py file
---
gpackages/apps/packages/scan.py | 35 +++++++++++++++++++++++++++++++++++
1 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index b19958d..52f9a12 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -93,6 +93,7 @@ def toint(val, defval):
class Scanner(object):
+ "General class for scan and collect data from portage"
def __init__(self, **kwargs):
# maintainers_cache: maintainer.email as key, and maintainer object as
# value
@@ -136,11 +137,14 @@ class Scanner(object):
self.is_scan_license_groups = bool_get('scan_license_groups', False)
def show_time(self):
+ "Prints scan time"
end = datetime.now()
t_time = end - self.start_time
self.output("Scanning time is: %s secconds.\n", t_time.total_seconds())
def scan(self):
+ """General method for scan and collect data
+ It check object properties and scan only what property require"""
if self.is_scan_herds:
self.scan_herds()
@@ -171,10 +175,23 @@ class Scanner(object):
self.show_time()
def write(self, what, verbosity = 1):
+ """If object vervosity level are greate or equal to
+ method property verbosity prints param what
+ Args:
+ what -- string to print
+ vervosity -- level of verbosity that require for print string
+ """
if verbosity <= self.verbosity:
sys.stdout.write(what)
def output(self, format_str, whats, verbosity = 1):
+ """If object vervosity level are greate or equal to
+ method property verbosity prints param whats formated by param format_str
+ Args:
+ format_str -- formating string
+ what -- vals to print
+ vervosity -- level of verbosity that require for print string
+ """
# Maybe implement lazy format string ?
if verbosity <= self.verbosity:
sys.stdout.write(format_str % whats)
@@ -238,6 +255,7 @@ class Scanner(object):
self.maitainers_cache_loaded = True
def scan_license_groups(self):
+ "Scan license groups"
self.write('Scaning license groups\n', 3)
for group, licenses in portage.license_groups.groups_dict.iteritems():
licenses_obj = self.get_licenses_objects(licenses)
@@ -250,6 +268,7 @@ class Scanner(object):
self.output("update license group '%s'\n", group, 2)
def scan_herds(self):
+ "Scan herds and maintainers in herds.xml"
self.write('Scaning herds\n', 3)
existent_herds = self.get_existent_herds()
herds_dict = self.herds_object.get_herds_indict()
@@ -313,6 +332,7 @@ class Scanner(object):
return self.maintainers_cache
def scan_all_repos(self, **kwargs):
+ "Scan packages in all available trees"
#cache_dict = anydbm.open('cache.db','c')
for repo in portage.iter_trees():
@@ -336,6 +356,10 @@ class Scanner(object):
return repo
def scan_repo_by_name(self, repo_name, **kwargs):
+ """Scan repository by name, available repository names could be se
+ with manage.py listrepos command
+ Args:
+ repo_name -- repository name"""
repo = self.get_repo_by_name(repo_name)
if repo is not None:
@@ -357,6 +381,10 @@ class Scanner(object):
return repo_obj
def scan_all_repo_info(self, delete = False):
+ """Scan all info (metada) of all available repositories
+ Args:
+ delete -- if this true that repository will delete
+ if portage would be not available"""
ex_pk = []
for repo in portage.iter_trees():
repo_obj = self.get_repo_obj(repo, update_repo = True)
@@ -514,6 +542,13 @@ class Scanner(object):
def scanpackages(self, porttree, porttree_obj, delete = True,
force_update = False, update_cache = True, use_cache = True):
+ """Scan packages (and ebuilds) in porttree
+ Args:
+ porttree -- `PortTree` object from packages_info
+ porttree_obj -- `RepositoryModel` object
+ delete -- if True will delete unavailable packages and ebuilds
+ force_update -- update packages and ebuilds even if manifest not changed
+ """
existend_categorys = []
for category in porttree.iter_categories():
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-27 22:52 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-27 22:52 UTC (permalink / raw
To: gentoo-commits
commit: 6edf337fdb3ccd680c4109e6e684c36547aaad60
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jun 27 17:15:55 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jun 27 17:15:55 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=6edf337f
Set default ordering
---
gpackages/apps/packages/models.py | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 2b59deb..290516c 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -183,6 +183,9 @@ class MaintainerModel(AbstractDateTimeModel):
def __unicode__(self):
return ':'.join((unicode(self.name), self.email))
+ class Meta:
+ ordering = ('name',)
+
class HerdsModel(AbstractDateTimeModel):
def __init__(self, *args, **kwargs):
@@ -304,6 +307,7 @@ class PackageModel(AbstractDateTimeModel):
class Meta:
unique_together = ('virtual_package', 'repository')
+ ordering = ('-updated_datetime',)
class UseFlagModel(models.Model):
name = models.CharField(unique = True, max_length = 60, db_index = True)
@@ -436,6 +440,9 @@ class EbuildModel(AbstractDateTimeModel):
class Meta:
unique_together = ('package', 'version', 'revision')
+ ordering = ('-updated_datetime',)
+ #ordering = ('-updated_datetime', 'package__virtual_package__name',
+ #'-version', '-revision')
class Keyword(models.Model):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-28 23:59 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-28 23:59 UTC (permalink / raw
To: gentoo-commits
commit: 3c76d3040d63aaaa34905be0c486c8e28ae455e1
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 28 15:34:34 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 28 15:34:34 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3c76d304
Add prefetch keywords for packages manager
---
gpackages/apps/packages/managers.py | 48 ++++++++++++++++++++++++++++------
gpackages/apps/packages/models.py | 9 +++++-
gpackages/apps/packages/views.py | 4 +-
3 files changed, 48 insertions(+), 13 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 012b40d..cfe0166 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -4,6 +4,8 @@ from package_info.abstract import AbstarctPackage, AbstractEbuild, \
import packages.models
from package_info.generic import get_from_kwargs_and_del
from collections import defaultdict
+from prefetch import PrefetchManagerMixin, PrefetchManager, PrefetchQuerySet, \
+ Prefetcher, P
def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
QueryClass = type(QueryClassName, (MixinClass, models.query.QuerySet), {})
@@ -23,6 +25,19 @@ def _gen_all_query_and_manager(mixin_name, name_for_query, name_for_manager, *ar
q, m = _gen_query_and_manager(arg, q_name, m_name)
globals()[q_name], globals()[m_name] = q, m
+class EbuildsWithKeywrods(Prefetcher):
+ def __init__(self, keywords):
+ self.keywords = keywords
+
+ def filter(self, ids):
+ return packages.models.EbuildModel.objects.filter(package__in = ids).order_by('-version', '-revision').prefetch_with_keywords(self.keywords)
+
+ def reverse_mapper(self, ebuild):
+ return [ebuild.package_id]
+
+ def decorator(self, package, ebuilds = ()):
+ setattr(package, 'ebuilds', ebuilds)
+
class PackageMixin(object):
def get(self, package = None, *args, **kwargs):
@@ -54,6 +69,16 @@ class PackageMixin(object):
return super(PackageMixin, self).filter(**kwargs)
+class PackageQuerySet(PackageMixin, PrefetchQuerySet):
+ def prefetch_keywords(self, arch_list):
+ return self.prefetch(P('ebuilds', keywords = arch_list))
+
+class PackageManager(PackageMixin, PrefetchManagerMixin):
+ @classmethod
+ def get_query_set_class(cls):
+ return PackageQuerySet
+
+ prefetch_definitions = {'ebuilds': EbuildsWithKeywrods}
class KeywordMixin(object):#{{{
def get_or_create(self, keyword=None, **kwargs):
@@ -68,7 +93,7 @@ class KeywordMixin(object):#{{{
return super(KeywordMixin, self).get_or_create(**kwargs)#}}}
-class EbuildMixin(object):#{{{
+class EbuildMixin(object):
def get(self, ebuild=None, package = None, *args, **kwargs):
if ebuild is not None and isinstance(ebuild, AbstractEbuild):
@@ -80,13 +105,15 @@ class EbuildMixin(object):#{{{
kwargs.update({'package': package})
kwargs.update({ 'version': ebuild.version,
'revision': ebuild.revision })
- return super(EbuildMixin, self).get(*args, **kwargs)#}}}
+ return super(EbuildMixin, self).get(*args, **kwargs)
def all_by_numbers(self):
return super(EbuildMixin, self).order_by('version', 'revision')
+class EbuildQuerySet(EbuildMixin, models.query.QuerySet):
+
def __init__(self, *args, **kwargs):
- super(EbuildMixin, self).__init__(*args, **kwargs)
+ super(EbuildQuerySet, self).__init__(*args, **kwargs)
self._arches_set = None
self._cache_keywords = None
@@ -98,18 +125,19 @@ class EbuildMixin(object):#{{{
return self
def __old_iter__(self):
- return super(EbuildMixin, self).__iter__()
+ return super(EbuildQuerySet, self).__iter__()
def _clone(self, *args, **kwargs):
- c = super(EbuildMixin, self)._clone(*args, **kwargs)
+ c = super(EbuildQuerySet, self)._clone(*args, **kwargs)
c._arches_set = self._arches_set
return c
def _prefetch_keywords(self):
arch_set = self._arches_set
pk_keys = [ebuild.pk for ebuild in self.__old_iter__()]
- query = packages.models.Keyword.objects.filter(ebuild__in = pk_keys,
- arch__name__in = arch_set).select_related('arch')
+ query = packages.models.Keyword.objects.\
+ filter(ebuild__in = pk_keys, arch__name__in = arch_set). \
+ select_related('arch')
cache_query = defaultdict(list)
for keyword in query:
@@ -132,7 +160,9 @@ class EbuildMixin(object):#{{{
ebuild._prefetched_keywords = cache_query[ebuild.pk]
yield ebuild
-
+class EbuildManager(EbuildMixin, models.Manager):
+ def get_query_set(self):
+ return EbuildQuerySet(self.model, using = self._db)
class HerdsMixin(object):#{{{
def filter(self, *args, **kwargs):
@@ -174,6 +204,6 @@ class RepositoryMixin(object):
_gen_all_query_and_manager('Mixin', 'QuerySet', 'Manager',
- PackageMixin, KeywordMixin, EbuildMixin, HerdsMixin,
+ KeywordMixin, HerdsMixin,
MaintainerMixin, VirtualPackageMixin,
RepositoryMixin)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index caa7156..aa7bd65 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -12,6 +12,7 @@ from django.core.exceptions import ValidationError
validate_url = URLValidator()
+
class AbstractDateTimeModel(models.Model):
created_datetime = models.DateTimeField(auto_now_add = True)
updated_datetime = models.DateTimeField(auto_now = True)
@@ -308,8 +309,12 @@ class PackageModel(AbstractDateTimeModel):
def get_ebuilds_and_keywords(self, arch_list):
l = []
- for ebuild in self.ebuildmodel_set.order_by('-version', '-revision'):
- l.extend(ebuild.get_ebuilds_and_keywords(arch_list))
+ if not hasattr(self, 'ebuilds'):
+ for ebuild in self.ebuildmodel_set.order_by('-version', '-revision'):
+ l.extend(ebuild.get_ebuilds_and_keywords(arch_list))
+ else:
+ for ebuild in self.ebuilds:
+ l.extend(ebuild.get_ebuilds_and_keywords(arch_list))
return l
class Meta:
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 16c74e2..21fa07c 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -52,5 +52,5 @@ class PackagesListsView(ContextListView):
template_name = 'packages.html'
context_object_name = 'packages'
queryset = PackageModel.objects.all(). \
- select_related('virtual_package', 'virtual_package__category')
- #prefetch_related('ebuildmodel_set')
+ select_related('virtual_package', 'virtual_package__category'). \
+ prefetch_keywords(arches)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-28 23:59 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-28 23:59 UTC (permalink / raw
To: gentoo-commits
commit: ecd1dd1c2c3cc2a556bd7dd7d1367eab669bd993
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jun 28 20:20:03 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jun 28 20:45:15 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=ecd1dd1c
Use prefetcher for keywords prefetch in ebuilds
---
gpackages/apps/packages/managers.py | 81 ++++++++++++-----------------------
gpackages/apps/packages/views.py | 2 +-
2 files changed, 29 insertions(+), 54 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index cfe0166..c1fd5e9 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -30,7 +30,9 @@ class EbuildsWithKeywrods(Prefetcher):
self.keywords = keywords
def filter(self, ids):
- return packages.models.EbuildModel.objects.filter(package__in = ids).order_by('-version', '-revision').prefetch_with_keywords(self.keywords)
+ return packages.models.EbuildModel.objects. \
+ filter(package__in = ids).order_by('-version', '-revision'). \
+ prefetch_keywords(self.keywords)
def reverse_mapper(self, ebuild):
return [ebuild.package_id]
@@ -38,6 +40,21 @@ class EbuildsWithKeywrods(Prefetcher):
def decorator(self, package, ebuilds = ()):
setattr(package, 'ebuilds', ebuilds)
+class KeywordsPrefetch(Prefetcher):
+ def __init__(self, arches):
+ self.arches = arches
+
+ def filter(self, ids):
+ return packages.models.Keyword.objects. \
+ filter(ebuild__in = ids, arch__name__in = self.arches). \
+ select_related('arch')
+
+ def reverse_mapper(self, keyword):
+ return [keyword.ebuild_id]
+
+ def decorator(self, ebuild, keywords = ()):
+ setattr(ebuild, '_prefetched_keywords', keywords)
+
class PackageMixin(object):
def get(self, package = None, *args, **kwargs):
@@ -110,59 +127,17 @@ class EbuildMixin(object):
def all_by_numbers(self):
return super(EbuildMixin, self).order_by('version', 'revision')
-class EbuildQuerySet(EbuildMixin, models.query.QuerySet):
-
- def __init__(self, *args, **kwargs):
- super(EbuildQuerySet, self).__init__(*args, **kwargs)
- self._arches_set = None
- self._cache_keywords = None
-
- # Maybe use https://github.com/ionelmc/django-prefetch ?
- def prefetch_with_keywords(self, arch_list):
- arch_set = set(arch_list)
- arch_set.add('*')
- self._arches_set = arch_set
- return self
-
- def __old_iter__(self):
- return super(EbuildQuerySet, self).__iter__()
-
- def _clone(self, *args, **kwargs):
- c = super(EbuildQuerySet, self)._clone(*args, **kwargs)
- c._arches_set = self._arches_set
- return c
-
- def _prefetch_keywords(self):
- arch_set = self._arches_set
- pk_keys = [ebuild.pk for ebuild in self.__old_iter__()]
- query = packages.models.Keyword.objects.\
- filter(ebuild__in = pk_keys, arch__name__in = arch_set). \
- select_related('arch')
+class EbuildQuerySet(EbuildMixin, PrefetchQuerySet):
+
+ def prefetch_keywords(self, arch_list):
+ return self.prefetch(P('keywords', arches = arch_list))
- cache_query = defaultdict(list)
- for keyword in query:
- cache_query[keyword.ebuild_id].append(keyword)
-
- self._cache_keywords = cache_query
-
- def __iter__(self):
- arch_set = self._arches_set
- if arch_set is None:
- for ebuild in self.__old_iter__():
- yield ebuild
- else:
- if self._cache_keywords is None:
- self._prefetch_keywords()
-
- cache_query = self._cache_keywords
-
- for ebuild in self.__old_iter__():
- ebuild._prefetched_keywords = cache_query[ebuild.pk]
- yield ebuild
-
-class EbuildManager(EbuildMixin, models.Manager):
- def get_query_set(self):
- return EbuildQuerySet(self.model, using = self._db)
+class EbuildManager(EbuildMixin, PrefetchManagerMixin):
+ prefetch_definitions = {'keywords': KeywordsPrefetch}
+
+ @classmethod
+ def get_query_set_class(cls):
+ return EbuildQuerySet
class HerdsMixin(object):#{{{
def filter(self, *args, **kwargs):
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 21fa07c..4639555 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -43,7 +43,7 @@ class EbuildsListView(ContextListView):
queryset = EbuildModel.objects.all(). \
select_related('package',
'package__virtual_package',
- 'package__virtual_package__category').prefetch_with_keywords(arches)
+ 'package__virtual_package__category').prefetch_keywords(arches)
class PackagesListsView(ContextListView):
arches = ['alpha', 'amd64', 'arm', 'hppa', 'ia64', 'ppc', 'ppc64', 'sparc', 'x86']
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-29 17:29 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-29 17:29 UTC (permalink / raw
To: gentoo-commits
commit: 1534ff4c1ae792366ecdf5a426c55e32130a7722
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Fri Jun 29 00:28:28 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Fri Jun 29 00:28:28 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=1534ff4c
Litle optimize queries
---
gpackages/apps/packages/views.py | 22 ++++------------------
1 files changed, 4 insertions(+), 18 deletions(-)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 98672d4..3b4cd23 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -56,15 +56,8 @@ class PackagesListsView(ContextListView):
context_object_name = 'packages'
queryset = PackageModel.objects.all(). \
select_related('virtual_package',
- 'virtual_package__category',
- 'repository'). \
- defer('repository__description',
- 'repository__owner_name',
- 'repository__owner_email',
- 'repository__homepage',
- 'repository__official',
- 'repository__quality',
- 'changelog'). \
+ 'virtual_package__category'). \
+ prefetch_related('repository'). \
prefetch_keywords(arches)
class PackageDetailView(ContextView, DetailView):
@@ -74,15 +67,8 @@ class PackageDetailView(ContextView, DetailView):
context_object_name = 'package'
queryset = PackageModel.objects.all(). \
select_related('virtual_package',
- 'virtual_package__category',
- 'repository'). \
- defer('repository__description',
- 'repository__owner_name',
- 'repository__owner_email',
- 'repository__homepage',
- 'repository__official',
- 'repository__quality',
- 'changelog'). \
+ 'virtual_package__category'). \
+ prefetch_related('repository'). \
prefetch_keywords(arches)
def get_object(self, queryset = None):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-06-29 17:29 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-06-29 17:29 UTC (permalink / raw
To: gentoo-commits
commit: f6a01a82001fed88cfa5b767d40b824e9abd45b2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Fri Jun 29 16:54:38 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Fri Jun 29 16:56:11 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=f6a01a82
Change urls
---
gpackages/apps/packages/urls.py | 3 ++-
gpackages/apps/packages/views.py | 8 ++++++++
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index 3744802..ffb16ca 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -15,5 +15,6 @@ urlpatterns = patterns('',
# In Future I will write my onw URL Resolver !!!
#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<category>[^/]+)/(?P<name>[^/:]+)(::(?P<repository>[^/]+))?/$', PackageDetailView.as_view(), name = 'package'),
+ url(r'^package/(?P<category>[^/]+)/(?P<name>[^/:]+)/$', PackageDetailView.as_view(), name = 'package'),
+ url(r'^package/(?P<category>[^/]+)/(?P<name>[^/:]+)::(?P<repository>[^/]+)/$', PackageDetailView.as_view(), name = 'package'),
)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 3b4cd23..2ec2758 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -54,6 +54,14 @@ class PackagesListsView(ContextListView):
extra_context = {'page_name': 'Packages', 'arches': arches}
template_name = 'packages.html'
context_object_name = 'packages'
+ # Faster query !!
+ #SELECT t.id, t.virtual_package_id, t.description, t.repository_id, vp.id
+ #as virtual_package__name FROM
+ #(SELECT * FROM packages_packagemodel
+ #ORDER BY updated_datetime DESC LIMIT 3 ) as t
+ #INNER JOIN packages_virtualpackagemodel vp
+ #ON( `vp`.id = t.virtual_package_id) INNER JOIN `packages_categorymodel` cp
+ #ON (vp.category_id = cp.id);
queryset = PackageModel.objects.all(). \
select_related('virtual_package',
'virtual_package__category'). \
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-02 22:25 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-02 22:25 UTC (permalink / raw
To: gentoo-commits
commit: 2dd360558109f4ab0f201d10cd497c3d5b0cd447
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul 2 18:13:41 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul 2 18:13:41 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=2dd36055
Fix not effective query
---
gpackages/apps/packages/managers.py | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index c1fd5e9..d3f7b21 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -39,6 +39,8 @@ class EbuildsWithKeywrods(Prefetcher):
def decorator(self, package, ebuilds = ()):
setattr(package, 'ebuilds', ebuilds)
+ for ebuild in ebuilds:
+ ebuild.package = package
class KeywordsPrefetch(Prefetcher):
def __init__(self, arches):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-03 21:08 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-03 21:08 UTC (permalink / raw
To: gentoo-commits
commit: 358b177ec765d8dfae6cde6c43add6ae08979e52
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul 3 10:27:01 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul 3 10:30:02 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=358b177e
Show hardmask in keywords table
---
gpackages/apps/packages/admin.py | 2 +-
gpackages/apps/packages/keywords.py | 13 ++++++++++---
gpackages/apps/packages/models.py | 2 +-
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 04a269e..cfeeb80 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -34,7 +34,7 @@ class ArchesAdmin(admin.ModelAdmin):
class EbuildAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'is_hard_masked', )
- list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_hard_masked')
+ list_filter = ('created_datetime','updated_datetime', 'is_hard_masked', 'licenses')
filter_horizontal = ('licenses', 'use_flags', 'homepages')
date_hierarchy = 'updated_datetime'
list_select_related = True
diff --git a/gpackages/apps/packages/keywords.py b/gpackages/apps/packages/keywords.py
index 0ab1e87..8b71f77 100644
--- a/gpackages/apps/packages/keywords.py
+++ b/gpackages/apps/packages/keywords.py
@@ -3,21 +3,28 @@ from package_info.generic import ToStrMixin
class KeywordRepr(ToStrMixin):
- __slots__ = ('status', 'arch')
+ __slots__ = ('status', 'arch', 'hardmask')
status_repr_list = ('', '+', '~','-')
status_class_list = ('blank', 'stable', 'unstable', 'hardmask')
- def __init__(self, arch, status):
+ def __init__(self, arch, status, hardmask = False):
self.arch = arch
self.status = status
+ self.hardmask = hardmask
@property
def status_repr(self):
- return self.status_repr_list[self.status + 1]
+ st = self.status_repr_list[self.status + 1]
+ if self.hardmask and st:
+ st = 'M' + st
+ return st
@property
def status_class(self):
+ # Maybe set hardmask class only for status > 0
+ if self.hardmask:
+ return self.status_class_list[3]
return self.status_class_list[self.status + 1]
def __unicode__(self):
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 5ce8919..98abc79 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -498,7 +498,7 @@ class EbuildModel(AbstractDateTimeModel):
def get_keywords(self, arch_list):
keywords_dict = self.get_keywords_dict(arch_list)
- return (KeywordRepr(arch, keywords_dict[arch]) for arch in arch_list)
+ return (KeywordRepr(arch, keywords_dict[arch], self.is_hard_masked) for arch in arch_list)
def get_keywords_dict(self, arch_list):
arch_set = set(arch_list)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-04 22:13 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-04 22:13 UTC (permalink / raw
To: gentoo-commits
commit: 451a2a0a19ba23afb625b52c404f6f3e1cc1fef6
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 4 13:26:32 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 4 13:26:32 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=451a2a0a
Update maintainer name if it find
---
gpackages/apps/packages/scan.py | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 85ceb76..0fdf488 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -2,6 +2,7 @@ from datetime import datetime
from packages import models
import sys
from django.db import IntegrityError
+from django.utils.encoding import smart_unicode
from collections import defaultdict
from package_info.generic import StrThatIgnoreCase, toint
from package_info.porttree import porttree
@@ -415,18 +416,26 @@ class Scanner(object):
homepages = ebuild.homepages
return _get_items(homepages, models.HomepageModel, 'url', self.homepages_cache)
- def get_maintainers_objects(self, maintainers):
+ def get_maintainers_objects(self, maintainers, update_maintainer = False):
objects = []
#for maintainer in package.metadata.maintainers():
for maintainer in maintainers:
if maintainer.email in self.maintainers_cache:
- objects.append(self.maintainers_cache[maintainer.email])
+ m_obj = self.maintainers_cache[maintainer.email]
else:
- maintainer_object, created = models.MaintainerModel \
+ m_obj, created = models.MaintainerModel \
.objects.get_or_create(maintainer = maintainer)
- objects.append(maintainer_object)
# Add to cache
- self.maintainers_cache[maintainer_object.email] = maintainer_object
+ self.maintainers_cache[m_obj.email] = m_obj
+
+ #If we find maintainer name
+ if (update_maintainer or m_obj.name is None) and \
+ smart_unicode(m_obj.name) != smart_unicode(maintainer.name):
+
+ m_obj.name = maintainer.name
+ m_obj.save(force_update = True)
+
+ objects.append(m_obj)
return objects
def get_herds_objects(self, package):
@@ -669,9 +678,11 @@ class Scanner(object):
self.scan_news_item(news)
def add_related_to_news(self, news, news_obj):
- authors_obj = self.get_maintainers_objects(news.authors)
+ authors_obj = self.get_maintainers_objects(news.authors,
+ update_maintainer = True)
news_obj.authors.add(*authors_obj)
- translators_obj = self.get_maintainers_objects(news.translators)
+ translators_obj = self.get_maintainers_objects(news.translators,
+ update_maintainer = True)
news_obj.translators.add(*translators_obj)
def update_related_to_news(self, news, news_obj):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-05 23:27 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-05 23:27 UTC (permalink / raw
To: gentoo-commits
commit: 8124e7c496ed6ae98915aab023d8cc1075191570
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jul 5 22:33:00 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jul 5 22:33:00 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=8124e7c4
Change admin for stats.
---
gpackages/apps/packages/admin.py | 46 ++++++++++++++-----------------------
1 files changed, 18 insertions(+), 28 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 6143cd2..9cfb4ad 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -6,25 +6,6 @@ from models import EbuildModel, PackageModel, LicenseModel, CategoryModel, \
VirtualPackageModel, RepositoryFeedModel, \
RepositorySourceModel, LicenseGroupModel, PortageNewsModel
-class AbstractAnnotateAdmin(object):
- annotate_dict = {}
-
- def queryset(self, request):
- return super(AbstractAnnotateAdmin, self).queryset(request) \
- .annotate(**self.annotate_dict)
-
-class EbuildsCountAdmin(AbstractAnnotateAdmin):
- annotate_dict = {'ebuilds_count': Count('ebuildmodel')}
-
- def ebuilds_count(self, obj):
- return obj.ebuilds_count
-
-class PackagesCountAdmin(AbstractAnnotateAdmin):
- annotate_dict = {'packages_count': Count('packagemodel')}
-
- def packages_count(self, obj):
- return obj.packages_count
-
class KeywordAdmin(admin.TabularInline):
model = Keyword
@@ -45,20 +26,23 @@ class VirtualPackageAdmin(admin.ModelAdmin):
search_fields = ('name','category__category')
list_select_related = True
-class PackageAdmin(EbuildsCountAdmin, admin.ModelAdmin):
+class PackageAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'ebuilds_count')
list_filter = ('created_datetime', 'updated_datetime', 'herds')
list_select_related = True
-class HerdsAdmin(PackagesCountAdmin, admin.ModelAdmin):
- list_display = ('name', 'email', 'description', 'packages_count')
+class HerdsAdmin(admin.ModelAdmin):
+ list_display = ('name', 'email', 'description', 'packages_count',
+ 'ebuilds_count', 'maintainers_count',)
+ # 'repositories_count')
search_fields = ('name', 'email')
-class MaintainerAdmin(PackagesCountAdmin, admin.ModelAdmin):
- list_display = ('name', 'email', 'packages_count')
+class MaintainerAdmin(admin.ModelAdmin):
+ list_display = ('name', 'email', 'packages_count', 'ebuilds_count',
+ 'herds_count')
search_fields = ('name', 'email')
-class UseFlagAdmin(EbuildsCountAdmin, admin.ModelAdmin):
+class UseFlagAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'ebuilds_count')
search_fields = ('name', 'description')
@@ -70,12 +54,13 @@ class HomepageAdmin(admin.ModelAdmin):
list_display = ('url',)
search_fields = ('url',)
-class LicenseAdmin(EbuildsCountAdmin, admin.ModelAdmin):
+class LicenseAdmin(admin.ModelAdmin):
list_display = ('name', 'ebuilds_count')
search_fields = ('name',)
class RepositoryAdmin(admin.ModelAdmin):
- list_display = ('name', 'updated_datetime', 'official', 'homepage', 'quality')
+ list_display = ('name', 'updated_datetime', 'official', 'homepage',
+ 'quality', 'packages_count', 'ebuilds_count')
search_fields = ('name', 'description', 'owner_name', 'owner_email')
list_filter = ('created_datetime', 'updated_datetime', 'official', 'quality')
date_hierarchy = 'updated_datetime'
@@ -98,13 +83,18 @@ class PortageNewsAdmin(admin.ModelAdmin):
search_fields = ('name', 'title', 'message')
date_hierarchy = 'date'
+class CategoryAdmin(admin.ModelAdmin):
+ list_display = ('category', 'virtual_packages_count', 'packages_count',
+ 'ebuilds_count', 'repositories_count')
+ search_fields = ('category', 'description')
+
admin.site.register(EbuildModel, EbuildAdmin)
admin.site.register(VirtualPackageModel, VirtualPackageAdmin)
admin.site.register(PackageModel, PackageAdmin)
admin.site.register(LicenseModel, LicenseAdmin)
admin.site.register(LicenseGroupModel)
-admin.site.register(CategoryModel)
+admin.site.register(CategoryModel, CategoryAdmin)
admin.site.register(UseFlagModel, UseFlagAdmin)
admin.site.register(UseFlagDescriptionModel, UseFlagDescriptionAdmin)
admin.site.register(RepositoryModel, RepositoryAdmin)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-08 19:54 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-08 19:54 UTC (permalink / raw
To: gentoo-commits
commit: 510273d8195d12002e8e37fa5b98f5ecf307f22c
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jul 8 17:53:31 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jul 8 17:53:31 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=510273d8
Show keywords in alphabetical order
---
gpackages/apps/packages/views.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index e359bd1..32b4e7d 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -214,7 +214,7 @@ class ArchChoiceView(ContextView, ArchesViewMixin, FormView):
return {'arches': arches }
def form_valid(self, form):
- arches = form.cleaned_data['arches']
+ arches = sorted(form.cleaned_data['arches'])
# Maybe save it to cookies ?
# arches_str = ','.join(arches)
self.request.session['arches'] = arches
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-12 22:16 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-12 22:16 UTC (permalink / raw
To: gentoo-commits
commit: f694b485748519118602387dc674439b9dfa8051
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 11 11:31:43 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 11 11:31:43 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=f694b485
Add link properties to PackageModel
---
gpackages/apps/packages/models.py | 26 ++++++++++++++++++++++++--
1 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 67b59f6..b90049f 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -330,8 +330,18 @@ class VirtualPackageModel(models.Model):
objects = managers.VirtualPackageManager()
- #forum_template = /
- #"http://forums.gentoo.org/search.php?search_terms=all&show_results=topics&search_keywords=%s&mode=results"
+ forum_template = "http://forums.gentoo.org/search.php" \
+ "?search_terms=all&show_results=topics&search_keywords=%s&mode=results"
+
+ bugs_template = "https://bugs.gentoo.org/buglist.cgi" \
+ "?bug_status=UNCONFIRMED&bug_status=IN_PROGRESS&bug_status=CONFIRMED" \
+ "&query_format=&short_desc_type=allwords&short_desc=%s"
+
+ wiki_template = "http://en.gentoo-wiki.com/w/index.php" \
+ "?title=Special%%3ASearch&search=%s"
+
+ maillist_template = "http://www.mail-archive.com/search" \
+ "?q=%s&l=gentoo-user%%40lists.gentoo.org"
@property
def cp(self):
@@ -341,6 +351,18 @@ class VirtualPackageModel(models.Model):
def forum_link(self):
return self.forum_template % self.name
+ @property
+ def bugs_link(self):
+ return self.bugs_template % self.name
+
+ @property
+ def wiki_link(self):
+ return self.wiki_template % self.name
+
+ @property
+ def maillist_link(self):
+ return self.maillist_template % self.name
+
def __unicode__(self):
return unicode(self.cp)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-15 23:08 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-15 23:08 UTC (permalink / raw
To: gentoo-commits
commit: 6f5c6c5241b733b9629035a76374e354e48aeb82
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jul 15 18:12:33 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jul 15 18:12:33 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=6f5c6c52
Cache choices in filter form
---
gpackages/apps/packages/forms.py | 53 +++++++++++++++++++++++++------------
1 files changed, 36 insertions(+), 17 deletions(-)
diff --git a/gpackages/apps/packages/forms.py b/gpackages/apps/packages/forms.py
index 974eb63..4784e23 100644
--- a/gpackages/apps/packages/forms.py
+++ b/gpackages/apps/packages/forms.py
@@ -2,6 +2,7 @@ from django import forms
from .models import ArchesModel, RepositoryModel, CategoryModel, HerdsModel, \
UseFlagModel, MaintainerModel, LicenseModel
from .widgets import DivCheckboxSelectMultiple
+from django.core.cache import cache
# Need rerun if database are empty
arches = ArchesModel.objects.exclude(name = '*').order_by('name').values_list('name', 'name')
@@ -13,29 +14,47 @@ class ArchChoiceForm(forms.Form):
#widget = forms.CheckboxSelectMultiple(attrs = {'class': 'inline checkbox'}),
choices = arches)
-class FilteringForm(forms.Form):
- def __init__(self, *args, **kwargs):
- super(FilteringForm, self).__init__(*args, **kwargs)
- repos = RepositoryModel.objects.all().order_by('name'). \
- values_list('name', 'name')
+def get_all_choices():
+ repos = RepositoryModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
- categories = CategoryModel.objects.all().order_by('category'). \
- values_list('category', 'category')
+ categories = CategoryModel.objects.all().order_by('category'). \
+ values_list('category', 'category')
- herds = HerdsModel.objects.all().order_by('name'). \
- values_list('name','name')
+ herds = HerdsModel.objects.all().order_by('name'). \
+ values_list('name','name')
- uses = UseFlagModel.objects.all().order_by('name'). \
- values_list('name', 'name')
+ uses = UseFlagModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
- #maintainers = MaintainerModel.all().order_by('email'). \
- # values_list('pk', 'email')
+ #maintainers = MaintainerModel.all().order_by('email'). \
+ # values_list('pk', 'email')
- licenses = LicenseModel.objects.all().order_by('name'). \
- values_list('name', 'name')
-
+ licenses = LicenseModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
+
+ values = (repos, categories, herds, uses, licenses)
+ return values
+
+class FilteringForm(forms.Form):
+ def __init__(self, *args, **kwargs):
+ super(FilteringForm, self).__init__(*args, **kwargs)
names = ['repos', 'categories', 'herds', 'uses', 'licenses']
- values = [repos, categories, herds, uses, licenses]
+ names_cache = map(lambda x: x+'_f_list', names)
+ cache_vals = cache.get_many(names_cache)
+ f = False
+ values = []
+ for item in names_cache:
+ v = cache_vals.get(item, None)
+ if v is None:
+ f = True
+ break
+ values.append(v)
+
+ if f:
+ values = get_all_choices()
+ cache.set_many(dict(zip(names_cache, values)))
+
for k, v in zip(names, values):
self.fields[k].choices = v
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-15 23:08 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-15 23:08 UTC (permalink / raw
To: gentoo-commits
commit: 9f0e46c154cb578f3659f563a3701f5550edc371
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jul 15 17:34:17 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jul 15 17:34:17 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=9f0e46c1
Add base transactions support
---
gpackages/apps/packages/scan.py | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index e0cc09c..9135021 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -2,6 +2,7 @@ from datetime import datetime
from packages import models
import sys
from django.db import IntegrityError
+from django.db import transaction
from django.utils.encoding import smart_unicode
from collections import defaultdict
from package_info.generic import StrThatIgnoreCase, toint
@@ -255,6 +256,7 @@ class Scanner(object):
self.maintainers_cache = mo_dict
self.maitainers_cache_loaded = True
+ @transaction.commit_on_success
def scan_license_groups(self):
"Scan license groups"
self.write('Scaning license groups\n', 3)
@@ -268,6 +270,7 @@ class Scanner(object):
self.output("update license group '%s'\n", group, 2)
+ @transaction.commit_on_success
def scan_herds(self):
"Scan herds and maintainers in herds.xml"
self.write('Scaning herds\n', 3)
@@ -366,6 +369,7 @@ class Scanner(object):
if repo is not None:
self.scan_repo(repo, **kwargs)
+ @transaction.commit_on_success
def get_repo_obj(self, repo, update_repo = False):
repo_obj, repo_created = models.RepositoryModel \
.objects.get_or_create(repo = repo)
@@ -693,6 +697,7 @@ class Scanner(object):
news_obj.clear_related()
self.add_related_to_news(news, news_obj)
+ @transaction.commit_on_success
def scan_news_item(self, news_item):
for n in news_item.news.itervalues():
n_obj, created = models.PortageNewsModel.objects. \
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-18 23:20 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-18 23:20 UTC (permalink / raw
To: gentoo-commits
commit: bba55bafc9d076b29a8248fdd7c0516ab6c36f0e
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 18 23:19:41 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 18 23:19:41 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=bba55baf
Add short_description property to PackageModel
---
gpackages/apps/packages/models.py | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index bb8a67f..6eaaa1d 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -441,6 +441,10 @@ class PackageModel(StatsModel, AbstractDateTimeModel):
else:
return self.cpr
+ @property
+ def short_description(self):
+ return self.latest_ebuild.description
+
def init_by_package(self, package, category = None, virtual_package = None):
#self.name = package.name
self.update_info(package)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-18 23:20 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-18 23:20 UTC (permalink / raw
To: gentoo-commits
commit: 8e03f8abe96416287bb360fcb80764dfd392ca40
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 18 23:20:15 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 18 23:20:15 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=8e03f8ab
Prefetch latest_ebuild with all package ebuilds
---
gpackages/apps/packages/managers.py | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 82ba10a..0d586e4 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -41,6 +41,8 @@ class EbuildsWithKeywrods(Prefetcher):
setattr(package, 'ebuilds', ebuilds)
for ebuild in ebuilds:
ebuild.package = package
+ if ebuild.pk == package.latest_ebuild_id:
+ package.latest_ebuild = ebuild
class KeywordsPrefetch(Prefetcher):
def __init__(self, arches):
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-19 23:50 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-19 23:50 UTC (permalink / raw
To: gentoo-commits
commit: c450f479c85fcdbe8d10fce6feae22a2a3fc0586
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jul 19 14:59:56 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jul 19 14:59:56 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c450f479
More smart sort ebuilds by version
---
gpackages/apps/packages/managers.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 0d586e4..b0ff424 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -30,9 +30,9 @@ class EbuildsWithKeywrods(Prefetcher):
self.keywords = keywords
def filter(self, ids):
- return packages.models.EbuildModel.objects. \
- filter(package__in = ids).order_by('-version', '-revision'). \
- prefetch_keywords(self.keywords)
+ ebuilds = packages.models.EbuildModel.objects. \
+ filter(package__in = ids).prefetch_keywords(self.keywords)
+ return sorted(ebuilds, key = lambda x: x.version_cmp, reverse = True)
def reverse_mapper(self, ebuild):
return [ebuild.package_id]
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-19 23:50 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-19 23:50 UTC (permalink / raw
To: gentoo-commits
commit: 167dcb0a229edc3239a680f2cfa6ac278a36d46b
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jul 19 19:17:58 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jul 19 19:17:58 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=167dcb0a
Fix bug with updating category description
---
gpackages/apps/packages/models.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 6eaaa1d..aabf5e2 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -233,7 +233,7 @@ class CategoryModel(StatsModel):
self.metadata_hash = category.metadata_sha1
def check_or_need_update(self, category):
- return self.metadata_hash == category.metadata_sha1
+ return self.metadata_hash != category.metadata_sha1
category = models.CharField(unique = True, max_length = 70, db_index = True)
description = models.TextField(blank = True, null = True)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-22 23:46 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-22 23:46 UTC (permalink / raw
To: gentoo-commits
commit: f7b03554777bb8d71636edaa2f82286b5d5060b3
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jul 22 23:37:18 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jul 22 23:37:27 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=f7b03554
Fix bug when delete latest ebuild
---
gpackages/apps/packages/models.py | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index aabf5e2..4dc1432 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -420,7 +420,8 @@ class PackageModel(StatsModel, AbstractDateTimeModel):
# ebuilds_count = models.PositiveIntegerField(default = 0)
# latest ebuild info
- latest_ebuild = models.ForeignKey('EbuildModel', blank = True, null = True)
+ latest_ebuild = models.ForeignKey('EbuildModel', blank = True, null = True,
+ on_delete = models.SET_NULL)
objects = managers.PackageManager()
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-25 22:47 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-25 22:47 UTC (permalink / raw
To: gentoo-commits
commit: e936666996220adfc8b14c555ca4075170a7a029
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul 24 09:04:38 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul 24 09:04:38 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=e9366669
Optimize searching latest ebuild in package
---
gpackages/apps/packages/scan.py | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index a02975b..6b32418 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -8,8 +8,9 @@ from collections import defaultdict
from package_info.generic import StrThatIgnoreCase, toint
from package_info.porttree import porttree
from django.core.cache import cache as cache_backend
-
+import logging
import anydbm
+logger = logging.getLogger(__name__)
portage = porttree
@@ -730,12 +731,15 @@ class Scanner(object):
@staticmethod
def set_latest_ebuilds_to_package():
- for package in models.PackageModel.objects.only('pk').iterator():
- # search latest ebuild should done by version and revison
+ for package_id, in models.PackageModel.objects.values_list('pk'):
+ # search latest ebuild should done by version and revision
# and database could not allow smart order by version becaouse
# version are compared as string
- ebuilds = package.ebuildmodel_set.only('version', 'revision').all()
- latest_ebuild = max(ebuilds, key = lambda x: x.version_cmp)
+ ebuilds = models.EbuildModel.objects.filter(package = package_id)
+ try:
+ latest_ebuild = max(ebuilds, key = lambda x: x.version_cmp)
+ except ValueError:
+ logger.exception('Bad package without ebuilds %s' % package_id)
# Hack for not update last modified datetime
- models.PackageModel.objects.filter(pk = package.pk). \
+ models.PackageModel.objects.filter(pk = package_id). \
update(latest_ebuild = latest_ebuild)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-25 22:47 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-25 22:47 UTC (permalink / raw
To: gentoo-commits
commit: dc4adfafdddafea0b3ccd5ce7b41552191c274f8
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 25 22:42:30 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 25 22:42:30 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=dc4adfaf
More right transactions
---
gpackages/apps/packages/scan.py | 71 ++++++++++++++++++++++-----------------
1 files changed, 40 insertions(+), 31 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index c99ed85..d7c2f63 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -580,6 +580,38 @@ class Scanner(object):
package_object.update_info(package)
package_object.save(force_update = True)
+ @transaction.commit_on_success
+ def scanpackage(self, package, porttree, category_object, porttree_obj,
+ force_update = False):
+ #if use_cache:
+ #key = str(porttree.name)+'/'+str(package)
+ #val = None
+ #if key in cache_dict:
+ #val = cache_dict[key]
+ #if val is not None and val == package.manifest_sha1:
+ #continue
+ self.output('%-44s [%s]\n', (package, porttree))
+ package_object, package_created = models.PackageModel.objects \
+ .only('changelog_hash', 'manifest_hash', 'metadata_hash') \
+ .get_or_create(package = package,
+ category = category_object,
+ repository = porttree_obj)
+ #if update_cache:
+ #key = str(porttree.name)+'/'+str(package)
+ #cache_dict[key] = package.manifest_sha1
+
+ if not package_created:
+ if package_object.check_or_need_update(package) or force_update:
+ # need update
+ self.update_package(package, package_object,
+ force_update = force_update)
+
+ return package_object.pk
+ # if package_created:
+ self.add_related_to_package(package, package_object)
+ self.create_ebuilds(package, package_object)
+ return package_object.pk
+
def scanpackages(self, porttree, porttree_obj, delete = True,
force_update = False, update_cache = True, use_cache = True):
"""Scan packages (and ebuilds) in porttree
@@ -604,34 +636,10 @@ class Scanner(object):
existend_categorys.append(category_object.pk)
for package in category.iter_packages():
- #if use_cache:
- #key = str(porttree.name)+'/'+str(package)
- #val = None
- #if key in cache_dict:
- #val = cache_dict[key]
- #if val is not None and val == package.manifest_sha1:
- #continue
- self.output('%-44s [%s]\n', (package, porttree))
- package_object, package_created = models.PackageModel.objects \
- .only('changelog_hash', 'manifest_hash', 'metadata_hash') \
- .get_or_create(package = package,
- category = category_object,
- repository = porttree_obj)
- #if update_cache:
- #key = str(porttree.name)+'/'+str(package)
- #cache_dict[key] = package.manifest_sha1
-
- existend_packages.append(package_object.pk)
- if not package_created:
- if package_object.check_or_need_update(package) or force_update:
- # need update
- self.update_package(package, package_object,
- force_update = force_update)
-
- continue
- # if package_created:
- self.add_related_to_package(package, package_object)
- self.create_ebuilds(package, package_object)
+ pk = self.scanpackage(package, porttree,
+ category_object, porttree_obj,
+ force_update)
+ existend_packages.append(pk)
if delete:
models.PackageModel.objects \
@@ -755,6 +763,7 @@ class Scanner(object):
latest_ebuild = max(ebuilds, key = lambda x: x.version_cmp)
except ValueError:
logger.exception('Bad package without ebuilds %s' % package_id)
- # Hack for not update last modified datetime
- models.PackageModel.objects.filter(pk = package_id). \
- update(latest_ebuild = latest_ebuild)
+ else:
+ # Hack for not update last modified datetime
+ models.PackageModel.objects.filter(pk = package_id). \
+ update(latest_ebuild = latest_ebuild)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-30 12:59 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-30 12:59 UTC (permalink / raw
To: gentoo-commits
commit: 71cdead14c0c426989322b5b0562e312cc3ba30c
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Jul 26 23:40:00 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Jul 26 23:48:16 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=71cdead1
Add simple rss for main page
---
gpackages/apps/packages/urls.py | 4 +++-
gpackages/apps/packages/views.py | 18 ++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index d2071fb..4a04940 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -4,7 +4,8 @@ from views import CategoriesListView, HerdsListView, MaintainersListView, \
PackagesListsView, PackageDetailView, EbuildDetailView, \
GlobalUseListView, NewsListView, NewsDetailView, \
LicenseDetailView, ArchChoiceView, LicensesListView, \
- LocalUseListView, FilteringView, RepoDetailView
+ LocalUseListView, FilteringView, RepoDetailView, \
+ MainPageFeed
urlpatterns = patterns('',
url(r'^categories/$', CategoriesListView.as_view(), name = 'categories'),
@@ -31,4 +32,5 @@ urlpatterns = patterns('',
url(r'^licenses/$', LicensesListView.as_view(), name = 'licenses'),
url(r'^filter/$', FilteringView.as_view(), name = 'filter'),
url(r'^repository/(?P<slug>[^/]+)/$', RepoDetailView.as_view(), name = 'repository'),
+ url(r'^rss/$', MainPageFeed()),
)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index b7def3a..5fdde7b 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -10,6 +10,7 @@ from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
+from django.contrib.syndication.views import Feed
arches = ['alpha', 'amd64', 'arm', 'hppa', 'ia64', 'ppc', 'ppc64', 'sparc', 'x86']
@@ -252,3 +253,20 @@ class RepoDetailView(DetailView):
context_object_name = 'repository'
slug_field = 'name'
queryset = RepositoryModel.objects.all()
+
+class MainPageFeed(Feed):
+ title = 'Feed'
+ link = '/rss/'
+ description = 'Descr'
+
+ def items(self):
+ return EbuildModel.objects.all()[:40]
+
+ def item_title(self, item):
+ return item.cpv_or_cpvr()
+
+ def item_description(self, item):
+ return item.description
+
+ def item_pubdate(self, item):
+ return item.created_datetime
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-30 23:30 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-30 23:30 UTC (permalink / raw
To: gentoo-commits
commit: a43df8385ddabf7d858bb9dbc5fe3ded9a68e2e8
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul 30 23:22:14 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul 30 23:22:14 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=a43df838
Add prefetching use descr
---
gpackages/apps/packages/managers.py | 27 +++++++++++++++++++++++++++
gpackages/apps/packages/models.py | 13 +++++++++++++
2 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index b0ff424..8e00278 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -44,6 +44,22 @@ class EbuildsWithKeywrods(Prefetcher):
if ebuild.pk == package.latest_ebuild_id:
package.latest_ebuild = ebuild
+class UseWithLocalDesc(Prefetcher):
+ def __init__(self, package):
+ self.package = package
+
+ def filter(self, ids):
+ return packages.models.UseFlagDescriptionModel.objects. \
+ filter(use_flag__in = ids, package = self.package)
+
+ def reverse_mapper(self, descr):
+ return [descr.use_flag_id]
+
+ def decorator(self, use_flag, descrs = ()):
+ if len(descrs)>0:
+ descr = descrs[0]
+ use_flag.local_descr = descr.description
+
class KeywordsPrefetch(Prefetcher):
def __init__(self, arches):
self.arches = arches
@@ -101,6 +117,17 @@ class PackageManager(PackageMixin, PrefetchManagerMixin):
prefetch_definitions = {'ebuilds': EbuildsWithKeywrods}
+class UseFlagQuerySet(PrefetchQuerySet):
+ def prefetch_package_descr(self, package):
+ return self.prefetch(P('descr', package = package))
+
+class UseFlagManager(PrefetchManagerMixin):
+ @classmethod
+ def get_query_set_class(cls):
+ return UseFlagQuerySet
+
+ prefetch_definitions = {'descr': UseWithLocalDesc}
+
class KeywordMixin(object):#{{{
def get_or_create(self, keyword=None, **kwargs):
if keyword is not None:
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 90c20de..238e864 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -532,12 +532,18 @@ class RemoteId(models.Model):
return u'%s:%s' % (self.get_type_display(), self.remote_id)
class UseFlagModel(StatsModel):
+ def __init__(self, *args, **kwargs):
+ super(UseFlagModel, self).__init__(*args, **kwargs)
+ self.local_descr = None
+
stats_params = (
('ebuilds_count', 'ebuildmodel'),
)
name = models.CharField(unique = True, max_length = 60, db_index = True)
description = models.TextField(blank = True)
+
+ objects = managers.UseFlagManager()
# Autogenerated fields for fast stats
#ebuilds_count = models.PositiveIntegerField(default = 0)
@@ -545,6 +551,13 @@ class UseFlagModel(StatsModel):
def __unicode__(self):
return self.name
+ @property
+ def descr(self):
+ if self.local_descr is not None:
+ return self.local_descr
+ else:
+ return self.description
+
class Meta:
ordering = ('name',)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-07-31 23:20 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-07-31 23:20 UTC (permalink / raw
To: gentoo-commits
commit: 54c5fdee540b786c1bbf74f2fc1a67669687c6d7
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul 31 21:44:14 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul 31 21:44:14 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=54c5fdee
Fix bug with invalid package atom
---
gpackages/apps/packages/views.py | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 0d483f9..b6ddb97 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -11,6 +11,7 @@ from .forms import ArchChoiceForm, FilteringForm
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
+from django.http import Http404
from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
from django.contrib.sitemaps import Sitemap
@@ -159,6 +160,8 @@ class PackageDetailView(ArchesContexView, DetailView):
cpr = self.kwargs.get('cpr')
po = PackageParseCPR(cpr)
+ if not po.is_valid:
+ raise Http404
category, name = po.category, po.name
repository = po.repository_for_q
obj = get_object_or_404(queryset, name = name,
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-07 0:10 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-07 0:10 UTC (permalink / raw
To: gentoo-commits
commit: c3d7e3ba0363b814b21dfbe21075ac0a8df6779e
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Aug 6 16:33:55 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Aug 6 16:33:55 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c3d7e3ba
Save dependences to database
---
gpackages/apps/packages/models.py | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 0a26aaa..bc592cd 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -666,6 +666,10 @@ class EbuildModel(AbstractDateTimeModel):
self.description = ebuild.description
self.eapi = ebuild.eapi_as_int
self.slot = ebuild.slot_for_q
+ # Depends
+ self.depend = ebuild.depends
+ self.rdepend = ebuild.rdepends
+ self.pdepend = ebuild.pdepends
def check_or_need_update(self, ebuild):
return self.ebuild_hash != ebuild.sha1
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-11 22:30 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-11 22:30 UTC (permalink / raw
To: gentoo-commits
commit: 3989c5d3aeb690211452bcc2c058689f9ff1be6f
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Aug 11 15:36:44 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Aug 11 15:36:44 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3989c5d3
Add mask change methods in scan class
---
gpackages/apps/packages/scan.py | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index e42b7fc..660fcc3 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -772,3 +772,32 @@ class Scanner(object):
# Hack for not update last modified datetime
models.PackageModel.objects.filter(pk = package_id). \
update(latest_ebuild = latest_ebuild)
+
+ def add_mising_ebuilds(self):
+ for ebuild in porttree.iter_ebuilds():
+ try:
+ ebuild_obj = models.EbuildModel.objects.get(ebuild = ebuild)
+ except models.EbuildModel.DoesNotExist:
+ self.output('%-44s [%s]\n', (ebuild,
+ ebuild.package.category.porttree_name))
+ try:
+ package_obj = models.PackageModel.objects. \
+ get(package = ebuild.package)
+
+ except models.PackageModel.DoesNotExist:
+ pass
+ else:
+ self.update_ebuilds(ebuild.package, package_obj)
+
+ def update_ebuild_mask(self):
+ for ebuild in porttree.iter_ebuilds():
+ try:
+ ebuild_obj = models.EbuildModel.objects.get(ebuild = ebuild)
+ except models.EbuildModel.DoesNotExist:
+ continue
+ if ebuild_obj.is_hard_masked != ebuild.is_hard_masked:
+ self.output('%-44s [%s]\n', (ebuild,
+ ebuild.package.category.porttree_name))
+
+ ebuild_obj.is_hard_masked = ebuild.is_hard_masked
+ ebuild_obj.save(force_update = True)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-11 22:30 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-11 22:30 UTC (permalink / raw
To: gentoo-commits
commit: 3dd9acc0be41ef8c59534806fe715357733c0bef
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Aug 11 15:07:59 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Aug 11 15:07:59 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3dd9acc0
Fix managers
---
gpackages/apps/packages/managers.py | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
index 8e00278..0d82615 100644
--- a/gpackages/apps/packages/managers.py
+++ b/gpackages/apps/packages/managers.py
@@ -88,6 +88,8 @@ class PackageMixin(object):
args[1] = category
else:
kwargs.update({'name': name})
+ if 'repository' not in kwargs:
+ kwargs['repository__name'] = package.category.porttree_name
elif package is not None:
# Bad code !!
category, name = package.split('/')
@@ -147,8 +149,9 @@ class EbuildMixin(object):
if ebuild is not None and isinstance(ebuild, AbstractEbuild):
if package is None:
kwargs.update({
- 'package__category__category': ebuild.package.category,
- 'package__name': ebuild.package.name })
+ 'package__virtual_package__category__category': ebuild.package.category,
+ 'package__virtual_package__name': ebuild.package.name,
+ 'package__repository__name' : ebuild.package.category.porttree_name})
else:
kwargs.update({'package': package})
kwargs.update({ 'version': ebuild.version,
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-20 13:03 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-20 13:03 UTC (permalink / raw
To: gentoo-commits
commit: fbd46c29f259aeca7dc7e5608f30612285805c10
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Aug 13 15:52:15 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Aug 13 15:52:15 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=fbd46c29
Cache views
---
gpackages/apps/packages/views.py | 105 ++++++++++++++++++++++++++++++++-----
1 files changed, 90 insertions(+), 15 deletions(-)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 81f30e1..4e27892 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -14,14 +14,75 @@ from django.shortcuts import get_object_or_404
from django.http import Http404
from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
from django.contrib.sitemaps import Sitemap
+from django.core.cache import cache
+import hashlib
+import logging
+logger = logging.getLogger(__name__)
arches = ['alpha', 'amd64', 'arm', 'hppa', 'ia64', 'ppc', 'ppc64', 'sparc', 'x86']
+class CacheViewMixin(object):
+ cache_time = 30
+
+ def get_cache_keys(self):
+ path = self.request.path
+ lang = self.request.LANGUAGE_CODE
+ tz = self.request.session.get('django_timezone')
+ # self.request.GET
+ return (path, frozenset(self.args), self.kwargs, lang, tz)
+
+ @staticmethod
+ def hash_keys(keys):
+ str_keys = str(keys)
+ return hashlib.md5(str_keys).hexdigest()
+
+ def get_cache_key(self):
+ keys_hash = self.hash_keys(self.get_cache_keys())
+ class_name = type(self).__name__
+ return 'view_cache_%s:%s' % (class_name, keys_hash)
+
+ def get(self, request, *args, **kwargs):
+ key = self.get_cache_key()
+ response = cache.get(key)
+ class_name = type(self).__name__
+ logger.info('CacheView: %s, get from cache %s' % (class_name, key))
+ if response is not None:
+ return response
+ response = super(CacheViewMixin, self).get(request, *args, **kwargs)
+ if hasattr(response, 'render') and callable(response.render):
+ response.render()
+ cache.set(key, response, self.cache_time)
+ logger.info('CacheView: %s, set to cache %s' % (class_name, key))
+ return response
+
class ArchesViewMixin(object):
def get_arches(self):
arches_s = self.request.session.get('arches')
return arches_s or arches
-
+
+class ArchesCacheViewMixin(CacheViewMixin, ArchesViewMixin):
+
+ def get_cache_keys(self):
+ keys = super(ArchesCacheViewMixin, self).get_cache_keys()
+ arches_s = frozenset(self.get_arches())
+ return keys + (arches_s,)
+
+class PagebleCacheViewMixin(ArchesCacheViewMixin):
+
+ def get_cache_keys(self):
+ keys = super(PagebleCacheViewMixin, self).get_cache_keys()
+ page = self.request.GET.get('page')
+ return keys + (page, )
+
+class ArgsCacheViewMixin(ArchesCacheViewMixin):
+
+ def get_cache_keys(self):
+ keys = super(ArgsCacheViewMixin, self).get_cache_keys()
+ args = self.request.GET
+ return keys + (args,)
+
+class CacheFilterListView(ArgsCacheViewMixin, MultipleFilterListViewMixin):
+ pass
class ArchesContexView(ArchesViewMixin, ContextView):
def get_context_data(self, **kwargs):
@@ -36,38 +97,47 @@ class ArchesContexView(ArchesViewMixin, ContextView):
class ContextArchListView(ArchesContexView, ListView):
pass
-class CategoriesListView(ContextListView):
+class CategoriesListView(ArchesCacheViewMixin, ContextListView):
+ cache_time = 420
extra_context = {'page_name': 'Categories',}
template_name = 'categories.html'
queryset = CategoryModel.objects.defer('metadata_hash').all()
context_object_name = 'categories'
-class HerdsListView(ContextListView):
+class HerdsListView(ArchesCacheViewMixin, ContextListView):
+ cache_time = 420
extra_context = {'page_name': 'Herds',}
template_name = 'herds.html'
queryset = HerdsModel.objects.only('name', 'email', 'description').all()
context_object_name = 'herds'
-class MaintainersListView(ContextListView):
+class MaintainersListView(CacheFilterListView, ContextListView):
+ cache_time = 560
+ allowed_filter = { 'dev' : 'is_dev',
+ 'herd' : 'herdsmodel__name'}
+ allowed_order = { None: 'name'}
+ boolean_filters = ('dev',)
paginate_by = 40
extra_context = {'page_name': 'Maintainers',}
template_name = 'maintainers.html'
queryset = MaintainerModel.objects.only('name', 'email' ).all()
context_object_name = 'maintainers'
-class RepositoriesListView(ContextListView):
+class RepositoriesListView(ArchesCacheViewMixin, ContextListView):
extra_context = {'page_name': 'Repsitories',}
template_name = 'repositories.html'
queryset = RepositoryModel.objects.only('name', 'description' ).all()
context_object_name = 'repositories'
-class LicenseGroupsView(ContextListView):
+class LicenseGroupsView(ArchesCacheViewMixin, ContextListView):
+ cache_time = 820
extra_context = {'page_name': 'License Groups',}
queryset = LicenseGroupModel.objects.all().prefetch_related('licenses')
template_name = 'license_groups.html'
context_object_name = 'license_groups'
-class EbuildsListView(ContextArchListView):
+class EbuildsListView(PagebleCacheViewMixin, ContextArchListView):
+ cache_time = 420
paginate_by = 40
extra_context = {'page_name': 'Ebuilds', 'arches' : arches}
template_name = 'ebuilds.html'
@@ -78,7 +148,7 @@ class EbuildsListView(ContextArchListView):
'package__virtual_package__category'). \
prefetch_related('package__repository')
-class AtomDetailViewMixin(ArchesContexView, DetailView):
+class AtomDetailViewMixin(ArchesCacheViewMixin, ArchesContexView, DetailView):
parsing_class = EbuildParseCPVR
table_items = ['changelog', 'use_flags', 'licenses', 'dependences']
@@ -136,7 +206,8 @@ class EbuildDetailView(AtomDetailViewMixin):
revision = revision)
return obj
-class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
+class PackagesListsView(CacheFilterListView, ContextArchListView):
+ cache_time = 420
allowed_filter = { 'category':'virtual_package__category__category',
'repo':'repository__name',
'herd':'herds__name',
@@ -201,7 +272,7 @@ class PackageDetailView(AtomDetailViewMixin):
repository__name = repository)
return obj
-class GlobalUseListView(ContextListView):
+class GlobalUseListView(ArchesCacheViewMixin, ContextListView):
extra_context = {'page_name': 'Global Use', }
template_name = 'global_use.html'
context_object_name = 'uses'
@@ -214,7 +285,7 @@ class LocalUseListView(ContextListView):
queryset = UseFlagDescriptionModel.objects.all().\
select_related('use_flag', 'package', 'package__category')
-class NewsListView(ContextListView):
+class NewsListView(PagebleCacheViewMixin, ContextListView):
extra_context = {'page_name': 'News'}
template_name = 'portage_news.html'
context_object_name = 'news'
@@ -222,7 +293,7 @@ class NewsListView(ContextListView):
queryset = PortageNewsModel.objects.filter(lang = 'en'). \
prefetch_related('authors', 'translators')
-class NewsDetailView(ContextView, DetailView):
+class NewsDetailView(ArchesCacheViewMixin, ContextView, DetailView):
extra_context = {'page_name': 'News Item'}
template_name = 'portage_news_item.html'
context_object_name = 'news_item'
@@ -230,14 +301,16 @@ class NewsDetailView(ContextView, DetailView):
queryset = PortageNewsModel.objects.filter(lang = 'en'). \
prefetch_related('authors', 'translators')
-class LicensesListView(ContextListView):
+class LicensesListView(PagebleCacheViewMixin, ContextListView):
+ cache_time = 300
extra_context = {'page_name': 'Licens'}
template_name = 'licenses.html'
context_object_name = 'licenses'
paginate_by = 20
queryset = LicenseModel.objects.all()
-class LicenseDetailView(ContextView, DetailView):
+class LicenseDetailView(ArchesCacheViewMixin, ContextView, DetailView):
+ cache_time = 300
extra_context = {'page_name': 'Licens'}
template_name = 'license.html'
context_object_name = 'license'
@@ -294,7 +367,8 @@ class FilteringView(FormView):
dct[v] = ','.join(vv)
return reverse('packages', kwargs = dct)
-class RepoDetailView(DetailView):
+class RepoDetailView(ArchesCacheViewMixin, DetailView):
+ cache_time = 900
template_name = 'repository.html'
context_object_name = 'repository'
slug_field = 'name'
@@ -343,3 +417,4 @@ def auto_package_or_ebuild(request, atom, *args, **kwargs):
return PackageDetailView.as_view()(request, parsed = p_atom, *args, **kwargs)
else:
raise Http404
+
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-20 13:03 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-20 13:03 UTC (permalink / raw
To: gentoo-commits
commit: e5baa17bb7d8194dce2afb9a942eb320495d957d
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Thu Aug 16 13:21:00 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Thu Aug 16 13:21:00 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=e5baa17b
Make is_dev field not editable
---
gpackages/apps/packages/models.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 1e2cac5..43293b0 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -271,7 +271,7 @@ class MaintainerModel(StatsModel, AbstractDateTimeModel):
name = models.CharField(max_length = 255, blank = True, null = True)
email = models.EmailField(unique = True, validators = [validate_email], db_index = True)
- is_dev = models.BooleanField(default = False)
+ is_dev = models.BooleanField(default = False, editable = False)
# Autogenerated fields for fast stats
# herds_count packages_count ebuilds_count repositories_count
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-08-26 23:00 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-08-26 23:00 UTC (permalink / raw
To: gentoo-commits
commit: 9dc23c05c47729d2b41c1c52f9fdb1b91924a48b
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Aug 25 21:09:52 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Aug 25 21:09:52 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=9dc23c05
Fix typos
---
gpackages/apps/packages/views.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 4e27892..5167a31 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -303,7 +303,7 @@ class NewsDetailView(ArchesCacheViewMixin, ContextView, DetailView):
class LicensesListView(PagebleCacheViewMixin, ContextListView):
cache_time = 300
- extra_context = {'page_name': 'Licens'}
+ extra_context = {'page_name': 'Licenses'}
template_name = 'licenses.html'
context_object_name = 'licenses'
paginate_by = 20
@@ -311,7 +311,7 @@ class LicensesListView(PagebleCacheViewMixin, ContextListView):
class LicenseDetailView(ArchesCacheViewMixin, ContextView, DetailView):
cache_time = 300
- extra_context = {'page_name': 'Licens'}
+ extra_context = {'page_name': 'License'}
template_name = 'license.html'
context_object_name = 'license'
slug_field = 'name'
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-09-13 22:17 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-09-13 22:17 UTC (permalink / raw
To: gentoo-commits
commit: 553233ac4f4168fa2e5b22ef734a9abdaf2c0d12
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Aug 28 11:25:58 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Aug 28 11:25:58 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=553233ac
Change category url conf
---
gpackages/apps/packages/urls.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index c0207e9..64b6f45 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -35,5 +35,5 @@ urlpatterns = patterns('',
url(r'^rss/$', MainPageFeed()),
url(r'^atom/$', MainPageFeedAtom()),
url(r'^(?P<atom>[^/]+/[^/]+)/(?P<table_item>[^/]+)?$', auto_package_or_ebuild, name = 'auto'),
- url(r'^(?P<category>[^/]+)/$', PackagesListsView.as_view(), name = 'packages'),
+ url(r'^(?P<category>[\w-]+)/$', PackagesListsView.as_view(), name = 'packages'),
)
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
@ 2012-09-23 19:35 Slava Bacherikov
0 siblings, 0 replies; 69+ messages in thread
From: Slava Bacherikov @ 2012-09-23 19:35 UTC (permalink / raw
To: gentoo-commits
commit: 89cbe30b49424e6f454053258cfa10d79f4d37c2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Sep 23 11:52:21 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Sep 23 11:52:21 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=89cbe30b
More pretty output
---
gpackages/apps/packages/scan.py | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
index 792853b..a7100f1 100644
--- a/gpackages/apps/packages/scan.py
+++ b/gpackages/apps/packages/scan.py
@@ -215,6 +215,17 @@ class Scanner(object):
if verbosity <= self.verbosity:
sys.stdout.write(format_str % whats)
+ def print_aligment_text(self, left, right, verbosity = 1):
+ left, right = unicode(left), unicode(right)
+ # This constant should be changed
+ spaces = ' ' * (80 - (len(left) + len(right)))
+ self.output('%s%s%s\n', (left, spaces, right))
+
+ def print_package(self, left, right, end = '', verbosity = 1):
+ self.print_aligment_text('%s ' % left,
+ '[%s]%s ' % (right, end),
+ verbosity)
+
def get_existent_maintainers(self):
return models.MaintainerModel.objects.all()
@@ -607,7 +618,8 @@ class Scanner(object):
#val = cache_dict[key]
#if val is not None and val == package.manifest_sha1:
#continue
- self.output('%-44s [%s]\n', (package, porttree))
+ #self.output('%-44s [%s]\n', (package, porttree))
+ self.print_package(package, porttree)
package_object, package_created = models.PackageModel.objects \
.only('changelog_hash', 'manifest_hash', 'metadata_hash') \
.get_or_create(package = package,
@@ -800,8 +812,9 @@ class Scanner(object):
else:
# Don't run this for updated packages
if package_obj.manifest_hash == ebuild.package.manifest_sha1:
- self.output('%-44s [%s]M\n', (ebuild,
- ebuild.package.category.porttree_name))
+ self.print_package(ebuild,
+ ebuild.package.category.porttree_name, 'M')
+
self.update_ebuilds(ebuild.package, package_obj)
def add_mising_ebuilds(self):
@@ -821,8 +834,8 @@ class Scanner(object):
continue
if ebuild_obj.is_hard_masked != ebuild.is_hard_masked:
- self.output('%-44s [%s]\n', (ebuild,
- ebuild.package.category.porttree_name))
+ self.print_package(ebuild,
+ ebuild.package.category.porttree_name)
ebuild_obj.is_hard_masked = ebuild.is_hard_masked
ebuild_obj.save(force_update = True)
^ permalink raw reply related [flat|nested] 69+ messages in thread
end of thread, other threads:[~2012-09-23 19:36 UTC | newest]
Thread overview: 69+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-07 18:37 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/ Slava Bacherikov
-- strict thread matches above, loose matches on Subject: below --
2012-09-23 19:35 Slava Bacherikov
2012-09-13 22:17 Slava Bacherikov
2012-08-26 23:00 Slava Bacherikov
2012-08-20 13:03 Slava Bacherikov
2012-08-20 13:03 Slava Bacherikov
2012-08-11 22:30 Slava Bacherikov
2012-08-11 22:30 Slava Bacherikov
2012-08-07 0:10 Slava Bacherikov
2012-07-31 23:20 Slava Bacherikov
2012-07-30 23:30 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-25 22:47 Slava Bacherikov
2012-07-25 22:47 Slava Bacherikov
2012-07-22 23:46 Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-18 23:20 Slava Bacherikov
2012-07-18 23:20 Slava Bacherikov
2012-07-15 23:08 Slava Bacherikov
2012-07-15 23:08 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-05 23:27 Slava Bacherikov
2012-07-04 22:13 Slava Bacherikov
2012-07-03 21:08 Slava Bacherikov
2012-07-02 22:25 Slava Bacherikov
2012-06-29 17:29 Slava Bacherikov
2012-06-29 17:29 Slava Bacherikov
2012-06-28 23:59 Slava Bacherikov
2012-06-28 23:59 Slava Bacherikov
2012-06-27 22:52 Slava Bacherikov
2012-06-25 22:23 Slava Bacherikov
2012-06-24 23:21 Slava Bacherikov
2012-06-20 23:23 Slava Bacherikov
2012-06-20 23:23 Slava Bacherikov
2012-06-20 23:23 Slava Bacherikov
2012-06-13 22:15 Slava Bacherikov
2012-06-12 18:34 Slava Bacherikov
2012-06-10 22:56 Slava Bacherikov
2012-06-10 17:51 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-07 22:48 Slava Bacherikov
2012-06-07 18:37 Slava Bacherikov
2012-06-07 18:37 Slava Bacherikov
2012-06-07 18:37 Slava Bacherikov
2012-06-07 11:27 Slava Bacherikov
2012-06-06 22:48 Slava Bacherikov
2012-06-05 20:48 Slava Bacherikov
2012-06-05 20:48 Slava Bacherikov
2012-06-05 20:48 Slava Bacherikov
2012-06-05 15:49 Slava Bacherikov
2012-06-05 15:49 Slava Bacherikov
2012-06-03 16:19 Slava Bacherikov
2012-06-03 13:19 Slava Bacherikov
2012-05-31 13:34 Slava Bacherikov
2012-05-29 21:34 Slava Bacherikov
2012-05-29 13:38 Slava Bacherikov
2012-05-29 12:24 Slava Bacherikov
2012-05-29 12:24 Slava Bacherikov
2012-05-29 12:24 Slava Bacherikov
2012-05-28 20:32 Slava Bacherikov
2012-05-28 17:00 Slava Bacherikov
2012-05-28 17:00 Slava Bacherikov
2012-05-28 17:00 Slava Bacherikov
2012-05-28 10:39 Slava Bacherikov
2012-05-28 10:39 Slava Bacherikov
2012-05-27 22:48 Slava Bacherikov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox