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/, gpackages/apps/generic/
Date: Mon, 27 Aug 2012 21:19:31 +0000 (UTC) [thread overview]
Message-ID: <1346082623.9041adff94fb2a6e78bdb6481b803ace4306465d.bacher09@gentoo> (raw)
commit: 9041adff94fb2a6e78bdb6481b803ace4306465d
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Aug 27 15:43:06 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Aug 27 15:50:23 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=9041adff
Extend filtering mixin
---
gpackages/apps/generic/views.py | 26 ++++++++++++++++++++++++++
gpackages/apps/packages/views.py | 18 ++++++++++--------
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index faf8559..da0048e 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -96,6 +96,32 @@ class MultipleFilterListViewMixin(object):
with ``distinct`` attribute.
"""
+ @classmethod
+ def get_url_kwargs(cls, filters, order = None, rev = False):
+ kwargs = {}
+ for name, value in filters.iteritems():
+ if not value or name not in cls.allowed_filter:
+ continue
+
+ if name in cls.boolean_filters:
+ value = 'yes' if value else 'no'
+ elif name in cls.allowed_many:
+ if not isinstance(value, (str, unicode)):
+ count = cls.allowed_many[name]
+ if count > 0:
+ value = value[:count]
+ value = ','.join(value)
+
+ kwargs[name] = value
+
+ if order is not None and order in self.allowed_order:
+ kwargs['order'] = order
+
+ if rev:
+ kwargs['rev'] = 'rev'
+
+ return kwargs
+
def get_context_data(self, **kwargs):
"""In addition to default context value will return all filters as
:py:class:`.dict`.
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 5167a31..b597a12 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -115,7 +115,7 @@ class MaintainersListView(CacheFilterListView, ContextListView):
cache_time = 560
allowed_filter = { 'dev' : 'is_dev',
'herd' : 'herdsmodel__name'}
- allowed_order = { None: 'name'}
+ allowed_order = { None: 'name', 'dev' : 'is_dev'}
boolean_filters = ('dev',)
paginate_by = 40
extra_context = {'page_name': 'Maintainers',}
@@ -213,14 +213,16 @@ class PackagesListsView(CacheFilterListView, ContextArchListView):
'herd':'herds__name',
'maintainer': 'maintainers__pk',
'license': 'ebuildmodel__licenses__name',
- 'use': 'ebuildmodel__use_flags__name'
+ 'use': 'ebuildmodel__use_flags__name',
+ # it's too slow
+ #'arch' : 'ebuildmodel__keyword__arch__name'
}
m2m_filter = set(['herd', 'maintainer', 'license', 'use'])
allowed_order = { 'create': 'created_datetime',
'update': 'updated_datetime',
- 'rand':'?', # it slow
+ #'rand':'?', # it is slow
None: '-updated_datetime'
}
allowed_many = {'repo': 5, 'use' : 3, 'herd': 4, 'category': 4, 'license': 3}
@@ -361,11 +363,11 @@ class FilteringView(FormView):
def get_success_url(self):
dct = {}
- for k, v in self.params_dict.iteritems():
- vv = self.form_data[k]
- if vv:
- dct[v] = ','.join(vv)
- return reverse('packages', kwargs = dct)
+ for k,v in self.params_dict.iteritems():
+ dct[v] = self.form_data[k]
+
+ kwargs = PackagesListsView.get_url_kwargs(dct)
+ return reverse('packages', kwargs = kwargs)
class RepoDetailView(ArchesCacheViewMixin, DetailView):
cache_time = 900
next reply other threads:[~2012-08-27 21:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-27 21:19 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-07-30 12:59 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/ Slava Bacherikov
2012-07-14 20:15 Slava Bacherikov
2012-07-10 23:13 Slava Bacherikov
2012-07-10 23:13 Slava Bacherikov
2012-06-30 21:02 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=1346082623.9041adff94fb2a6e78bdb6481b803ace4306465d.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