Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
Date: Thu, 31 May 2012 13:35:08
Message-Id: 1338379709.cd6f1e10b426ab50ae4d0d9040adf3e07f6747b1.bacher09@gentoo
1 commit: cd6f1e10b426ab50ae4d0d9040adf3e07f6747b1
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Wed May 30 12:08:29 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Wed May 30 12:08:29 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=cd6f1e10
7
8 Optimize getting by object.
9
10 ---
11 gpackages/apps/packages/managers.py | 25 ++++++++++++-------------
12 1 files changed, 12 insertions(+), 13 deletions(-)
13
14 diff --git a/gpackages/apps/packages/managers.py b/gpackages/apps/packages/managers.py
15 index 6e69007..464b6ce 100644
16 --- a/gpackages/apps/packages/managers.py
17 +++ b/gpackages/apps/packages/managers.py
18 @@ -13,17 +13,15 @@ def _gen_query_and_manager(MixinClass, QueryClassName, ManagerClassName):
19 class PackageMixin(object):
20 def get(self, package = None, *args, **kwargs):
21 if package is not None and isinstance(package, Package):
22 - try:
23 - category = packages.models.CategoryModel.objects.get(category = package.category)
24 - except packages.models.CategoryModel.DoesNotExist:
25 - raise self.model.DoesNotExist
26 + if 'category' not in kwargs:
27 + kwargs.update({'category__category' : package.category})
28 name = package.name
29 if len(args)>=1:
30 args[0] = name
31 if len(args)>=2:
32 args[1] = category
33 else:
34 - kwargs.update({'name': name, 'category': category})
35 + kwargs.update({'name': name})
36 return super(PackageMixin, self).get(*args, **kwargs)
37
38 PackageQuerySet, PackageManager = _gen_query_and_manager(PackageMixin,
39 @@ -68,10 +66,10 @@ class EbuildMixin(object):
40 try:
41 params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
42 params.update(defaults)
43 + sid = transaction.savepoint(using=self.db)
44 obj = self.model(**params)
45 if 'ebuild' not in kwargs:
46 obj.save(force_insert=True, using=self.db)
47 - sid = transaction.savepoint(using=self.db)
48 transaction.savepoint_commit(sid, using=self.db)
49 return obj, True
50 except IntegrityError as e:
51 @@ -84,17 +82,18 @@ class EbuildMixin(object):
52 raise exc_info[1], None, exc_info[2]
53
54
55 - def get(self, ebuild=None, *args, **kwargs):
56 + def get(self, ebuild=None,package = None, *args, **kwargs):
57 if ebuild is not None and isinstance(ebuild, Ebuild):
58 - try:
59 - package = packages.models.PackageModel.objects.get(package = ebuild.package)
60 - except packages.models.PackageModel.DoesNotExist:
61 - raise self.model.DoesNotExist
62 + if package is None:
63 + kwargs.update({
64 + 'package__category__category': ebuild.package.category,
65 + 'package__name': ebuild.package.name })
66 + else:
67 + kwargs.update({'package': package})
68 version = ebuild.version
69 revision = ebuild.revision
70 kwargs.update({ 'version': version,
71 - 'revision': revision,
72 - 'package': package })
73 + 'revision': revision })
74 return super(EbuildMixin, self).get(*args, **kwargs)