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/
Date: Tue, 29 May 2012 12:24:14 +0000 (UTC) [thread overview]
Message-ID: <1338275028.14341591e6b6bc0d6699ba81ddea8cf26df45384.bacher09@gentoo> (raw)
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)
next reply other threads:[~2012-05-29 12:24 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-29 12:24 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-09-23 19:35 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/ 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 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-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
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=1338275028.14341591e6b6bc0d6699ba81ddea8cf26df45384.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