From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/migrations/, gpackages/apps/packages/
Date: Wed, 18 Jul 2012 23:03:58 +0000 (UTC) [thread overview]
Message-ID: <1342651989.99f631f323a58789af2c57d45e4435829c8f1da2.bacher09@gentoo> (raw)
commit: 99f631f323a58789af2c57d45e4435829c8f1da2
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul 18 22:53:09 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul 18 22:53:09 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=99f631f3
Add latest ebuild field to PackagesModels
---
...2_auto__add_field_packagemodel_latest_ebuild.py | 200 ++++++++++++++++++++
gpackages/apps/packages/models.py | 15 ++-
2 files changed, 214 insertions(+), 1 deletions(-)
diff --git a/gpackages/apps/packages/migrations/0002_auto__add_field_packagemodel_latest_ebuild.py b/gpackages/apps/packages/migrations/0002_auto__add_field_packagemodel_latest_ebuild.py
new file mode 100644
index 0000000..3d82609
--- /dev/null
+++ b/gpackages/apps/packages/migrations/0002_auto__add_field_packagemodel_latest_ebuild.py
@@ -0,0 +1,200 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'PackageModel.latest_ebuild'
+ db.add_column('packages_packagemodel', 'latest_ebuild', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['packages.EbuildModel'], null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'PackageModel.latest_ebuild'
+ db.delete_column('packages_packagemodel', 'latest_ebuild_id')
+
+
+ models = {
+ 'packages.archesmodel': {
+ 'Meta': {'object_name': 'ArchesModel'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '22', 'db_index': 'True'})
+ },
+ 'packages.categorymodel': {
+ 'Meta': {'object_name': 'CategoryModel'},
+ 'category': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '70', 'db_index': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'metadata_hash': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'packages_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'repositories_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'virtual_packages_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'packages.ebuildmodel': {
+ 'Meta': {'ordering': "('-updated_datetime',)", 'unique_together': "(('package', 'version', 'revision'),)", 'object_name': 'EbuildModel'},
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'eapi': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
+ 'ebuild_hash': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'ebuild_mtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'homepages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.HomepageModel']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_hard_masked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '254', 'blank': 'True'}),
+ 'licenses': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.LicenseModel']", 'symmetrical': 'False'}),
+ 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.PackageModel']"}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slot': ('django.db.models.fields.CharField', [], {'default': "'0'", 'max_length': '32', 'null': 'True', 'db_index': 'True'}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'use_flags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.UseFlagModel']", 'symmetrical': 'False'}),
+ 'version': ('django.db.models.fields.CharField', [], {'max_length': '26', 'db_index': 'True'})
+ },
+ 'packages.herdsmodel': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'HerdsModel'},
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.MaintainerModel']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'maintainers_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '150', 'db_index': 'True'}),
+ 'packages_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'repositories_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'packages.homepagemodel': {
+ 'Meta': {'object_name': 'HomepageModel'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'url': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'packages.keyword': {
+ 'Meta': {'unique_together': "(('ebuild', 'arch'),)", 'object_name': 'Keyword'},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.ArchesModel']"}),
+ 'ebuild': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.EbuildModel']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.PositiveSmallIntegerField', [], {})
+ },
+ 'packages.licensegroupmodel': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'LicenseGroupModel'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'licenses': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.LicenseModel']", 'symmetrical': 'False'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'packages.licensemodel': {
+ 'Meta': {'object_name': 'LicenseModel'},
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'})
+ },
+ 'packages.maintainermodel': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'MaintainerModel'},
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '75', 'db_index': 'True'}),
+ 'herds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'news_author_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'news_translator_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'packages_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'repositories_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'packages.packagemodel': {
+ 'Meta': {'ordering': "('-updated_datetime',)", 'unique_together': "(('virtual_package', 'repository'),)", 'object_name': 'PackageModel'},
+ 'changelog': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'changelog_hash': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'changelog_mtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.HerdsModel']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'latest_ebuild': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.EbuildModel']", 'null': 'True', 'blank': 'True'}),
+ 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['packages.MaintainerModel']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'manifest_hash': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'manifest_mtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'metadata_hash': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'mtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'repository': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.RepositoryModel']"}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'virtual_package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.VirtualPackageModel']"})
+ },
+ 'packages.portagenewsmodel': {
+ 'Meta': {'ordering': "('-date',)", 'unique_together': "(('name', 'lang'),)", 'object_name': 'PortageNewsModel'},
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'author_news_set'", 'symmetrical': 'False', 'to': "orm['packages.MaintainerModel']"}),
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateField', [], {}),
+ 'hash': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'lang': ('django.db.models.fields.CharField', [], {'max_length': '5', 'db_index': 'True'}),
+ 'message': ('django.db.models.fields.TextField', [], {}),
+ 'message_as_html': ('django.db.models.fields.TextField', [], {}),
+ 'name': ('django.db.models.fields.SlugField', [], {'max_length': '200', 'db_index': 'True'}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'translators': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'translator_news_set'", 'symmetrical': 'False', 'to': "orm['packages.MaintainerModel']"}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'packages.repositoryfeedmodel': {
+ 'Meta': {'unique_together': "(('repository', 'feed'),)", 'object_name': 'RepositoryFeedModel'},
+ 'feed': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'repository': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.RepositoryModel']"})
+ },
+ 'packages.repositorymodel': {
+ 'Meta': {'object_name': 'RepositoryModel'},
+ 'categories_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'created_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'homepage': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'maintainers_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'}),
+ 'official': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'owner_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'owner_name': ('django.db.models.fields.CharField', [], {'max_length': '65', 'null': 'True', 'blank': 'True'}),
+ 'packages_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'quality': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
+ 'updated_datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ 'packages.repositorysourcemodel': {
+ 'Meta': {'object_name': 'RepositorySourceModel'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'repo_type': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
+ 'repository': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.RepositoryModel']"}),
+ 'subpath': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'packages.useflagdescriptionmodel': {
+ 'Meta': {'unique_together': "(('use_flag', 'package'),)", 'object_name': 'UseFlagDescriptionModel'},
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.VirtualPackageModel']"}),
+ 'use_flag': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.UseFlagModel']"})
+ },
+ 'packages.useflagmodel': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'UseFlagModel'},
+ 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'ebuilds_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'packages.virtualpackagemodel': {
+ 'Meta': {'unique_together': "(('name', 'category'),)", 'object_name': 'VirtualPackageModel'},
+ 'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['packages.CategoryModel']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '254', 'db_index': 'True'})
+ }
+ }
+
+ complete_apps = ['packages']
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 35d8b90..bb8a67f 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -3,7 +3,7 @@ from package_info.abstract import AbstractCategory, AbstarctPackage, \
AbstractEbuild, AbstractNewsItem
from package_info.utils import ciavc_link, email_parse
import managers
-from package_info.generic import get_from_kwargs_and_del
+from package_info.generic import get_from_kwargs_and_del, cached_property
from package_info.generic_metadata.repo_const import REPOS_TYPE
# relative
from .keywords import KeywordRepr
@@ -12,6 +12,8 @@ from model_stats.models import StatsModel
from package_info.validators import validate_url, validate_email, \
validate_name
+from package_info.parse_cp import VersionParse
+
from django.utils.html import urlize, linebreaks
@@ -416,6 +418,9 @@ class PackageModel(StatsModel, AbstractDateTimeModel):
# Autogenerated fields for fast stats
# ebuilds_count = models.PositiveIntegerField(default = 0)
+
+ # latest ebuild info
+ latest_ebuild = models.ForeignKey('EbuildModel', blank = True, null = True)
objects = managers.PackageManager()
@@ -663,6 +668,14 @@ class EbuildModel(AbstractDateTimeModel):
def revision_str(self):
return 'r%d' % self.revision
+ @cached_property
+ def version_parse(self):
+ return VersionParse(self.version)
+
+ @cached_property
+ def version_cmp(self):
+ return (self.version_parse, self.revision)
+
@property
def fullversion(self):
rev_p = '-'+ self.revision_str if self.revision else ''
next reply other threads:[~2012-07-18 23:04 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-18 23:03 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-07-25 22:47 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/migrations/, gpackages/apps/packages/ Slava Bacherikov
2012-08-07 0:10 Slava Bacherikov
2012-08-11 22:30 Slava Bacherikov
2012-08-20 22:40 Slava Bacherikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1342651989.99f631f323a58789af2c57d45e4435829c8f1da2.bacher09@gentoo \
--to=slava@bacherikov.org.ua \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox