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/, gpackages/apps/generic/
Date: Mon, 27 Aug 2012 21:21:10
Message-Id: 1346082623.9041adff94fb2a6e78bdb6481b803ace4306465d.bacher09@gentoo
1 commit: 9041adff94fb2a6e78bdb6481b803ace4306465d
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Mon Aug 27 15:43:06 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Mon Aug 27 15:50:23 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=9041adff
7
8 Extend filtering mixin
9
10 ---
11 gpackages/apps/generic/views.py | 26 ++++++++++++++++++++++++++
12 gpackages/apps/packages/views.py | 18 ++++++++++--------
13 2 files changed, 36 insertions(+), 8 deletions(-)
14
15 diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
16 index faf8559..da0048e 100644
17 --- a/gpackages/apps/generic/views.py
18 +++ b/gpackages/apps/generic/views.py
19 @@ -96,6 +96,32 @@ class MultipleFilterListViewMixin(object):
20 with ``distinct`` attribute.
21 """
22
23 + @classmethod
24 + def get_url_kwargs(cls, filters, order = None, rev = False):
25 + kwargs = {}
26 + for name, value in filters.iteritems():
27 + if not value or name not in cls.allowed_filter:
28 + continue
29 +
30 + if name in cls.boolean_filters:
31 + value = 'yes' if value else 'no'
32 + elif name in cls.allowed_many:
33 + if not isinstance(value, (str, unicode)):
34 + count = cls.allowed_many[name]
35 + if count > 0:
36 + value = value[:count]
37 + value = ','.join(value)
38 +
39 + kwargs[name] = value
40 +
41 + if order is not None and order in self.allowed_order:
42 + kwargs['order'] = order
43 +
44 + if rev:
45 + kwargs['rev'] = 'rev'
46 +
47 + return kwargs
48 +
49 def get_context_data(self, **kwargs):
50 """In addition to default context value will return all filters as
51 :py:class:`.dict`.
52
53 diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
54 index 5167a31..b597a12 100644
55 --- a/gpackages/apps/packages/views.py
56 +++ b/gpackages/apps/packages/views.py
57 @@ -115,7 +115,7 @@ class MaintainersListView(CacheFilterListView, ContextListView):
58 cache_time = 560
59 allowed_filter = { 'dev' : 'is_dev',
60 'herd' : 'herdsmodel__name'}
61 - allowed_order = { None: 'name'}
62 + allowed_order = { None: 'name', 'dev' : 'is_dev'}
63 boolean_filters = ('dev',)
64 paginate_by = 40
65 extra_context = {'page_name': 'Maintainers',}
66 @@ -213,14 +213,16 @@ class PackagesListsView(CacheFilterListView, ContextArchListView):
67 'herd':'herds__name',
68 'maintainer': 'maintainers__pk',
69 'license': 'ebuildmodel__licenses__name',
70 - 'use': 'ebuildmodel__use_flags__name'
71 + 'use': 'ebuildmodel__use_flags__name',
72 + # it's too slow
73 + #'arch' : 'ebuildmodel__keyword__arch__name'
74 }
75
76 m2m_filter = set(['herd', 'maintainer', 'license', 'use'])
77
78 allowed_order = { 'create': 'created_datetime',
79 'update': 'updated_datetime',
80 - 'rand':'?', # it slow
81 + #'rand':'?', # it is slow
82 None: '-updated_datetime'
83 }
84 allowed_many = {'repo': 5, 'use' : 3, 'herd': 4, 'category': 4, 'license': 3}
85 @@ -361,11 +363,11 @@ class FilteringView(FormView):
86
87 def get_success_url(self):
88 dct = {}
89 - for k, v in self.params_dict.iteritems():
90 - vv = self.form_data[k]
91 - if vv:
92 - dct[v] = ','.join(vv)
93 - return reverse('packages', kwargs = dct)
94 + for k,v in self.params_dict.iteritems():
95 + dct[v] = self.form_data[k]
96 +
97 + kwargs = PackagesListsView.get_url_kwargs(dct)
98 + return reverse('packages', kwargs = kwargs)
99
100 class RepoDetailView(ArchesCacheViewMixin, DetailView):
101 cache_time = 900