public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-07-10 23:13 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-10 23:13 UTC (permalink / raw
  To: gentoo-commits

commit:     52980f52affa4849d06ee20c71b0f0f7cdff523c
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul  9 18:22:01 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul  9 18:22:01 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=52980f52

Add limit count of filtering items

---
 gpackages/apps/generic/views.py  |   12 +++++++++---
 gpackages/apps/packages/views.py |    2 +-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index 731c845..bb0b6c7 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -24,7 +24,7 @@ set_lang_view = SetLang.as_view()
 # but it is too big and i need just a litle of its functionly
 # but if this code have to be grove maybe i replace it to django-filter
 # application or another.
-def dynamic_filter(filter_set, allowed, many_set = set([])):
+def dynamic_filter(filter_set, allowed, many_set = {}):
     result = {}
     for k, v in allowed.iteritems():
         if k in filter_set:
@@ -33,10 +33,15 @@ def dynamic_filter(filter_set, allowed, many_set = set([])):
                 l = vv.split(',')
                 if len(l)>1:
                     v += '__in'
-                    vv = l
+                    vv = cut_to_len(l, many_set[k])
             result[v] = vv
     return result
 
+def cut_to_len(lst, num):
+    if not num:
+        return lst
+    return lst[:num]
+
 def filter_req(filter_set, allowed):
     result = {}
     for k in allowed.iterkeys():
@@ -64,7 +69,8 @@ def dynamic_order(args_list, allowed_list, reverse = None):
 class MultipleFilterListViewMixin(object):
     allowed_filter = {}
     allowed_order = {}
-    allowed_many = set()
+    # allowed_many = {'name': int_count}
+    allowed_many = {}
     m2m_filter = set()
 
     base_queryset = None # should be queryset

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 9fe1b94..a52e3fa 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -115,7 +115,7 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
                       'rand':'?', # it slow
                       None: '-updated_datetime'
                     }
-    allowed_many = set(['repo', 'use'])
+    allowed_many = {'repo': 5, 'use' : 3}
 
     paginate_by = 40
     extra_context = {'page_name': 'Packages', 'arches': arches}



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-08-27 21:19 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-08-27 21:19 UTC (permalink / raw
  To: gentoo-commits

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


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-07-30 12:59 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-30 12:59 UTC (permalink / raw
  To: gentoo-commits

commit:     d24e06bc575b9e6b6d71863848d64bd670c2c196
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jul 28 13:30:52 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jul 28 13:30:52 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=d24e06bc

Add atom feed with right updated datetime

---
 gpackages/apps/generic/views.py  |   27 +++++++++++++++++++++++++++
 gpackages/apps/packages/urls.py  |    3 ++-
 gpackages/apps/packages/views.py |   14 +++++++++++---
 3 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index 08bf734..165633d 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -1,6 +1,10 @@
 from django.views.generic import TemplateView, ListView
 from string import Template
 import re
+from django.contrib.syndication.views import Feed
+from django.utils.feedgenerator import Atom1Feed, rfc3339_date
+from django.utils import tzinfo
+from django.utils.timezone import is_naive
 
 class ContextView(object):
     extra_context = {}
@@ -135,4 +139,27 @@ class MultipleFilterListViewMixin(object):
             l.append(t.format(re.escape(key)))
 
         return ''.join(l) + "(?:order/(?P<order>[a-z]*)/)?(?P<rev>rev/)?"
+
+class FeedWithUpdated(Feed):
+    def item_extra_kwargs(self, item):
+        # for future
+        kwargs = super(FeedWithUpdated, self).item_extra_kwargs(item)
+        # hack for access to private method !!!
+        updated = self._Feed__get_dynamic_attr('item_update', item)
+        if updated and is_naive(updated):
+            ltz = tzinfo.LocalTimezone(updated)
+            updated = updated.replace(tzinfo=ltz)
+        kwargs['updated'] = updated
+        return kwargs
             
+# see bug https://code.djangoproject.com/ticket/14656
+class RightAtom1Feed(Atom1Feed):
+    def add_item_elements(self, handler, item):
+        if item['pubdate'] is not None:
+            handler.addQuickElement(u"published", rfc3339_date(item['pubdate']).decode('utf-8'))
+            item['pubdate'] = None
+
+        if item['updated'] is not None:
+            handler.addQuickElement(u"updated", rfc3339_date(item['updated']).decode('utf-8'))
+
+        return super(RightAtom1Feed, self).add_item_elements(handler, item)

diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index 4a04940..1a59669 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -5,7 +5,7 @@ from views import CategoriesListView, HerdsListView, MaintainersListView, \
                   GlobalUseListView, NewsListView, NewsDetailView, \
                   LicenseDetailView, ArchChoiceView, LicensesListView, \
                   LocalUseListView, FilteringView, RepoDetailView, \
-                  MainPageFeed
+                  MainPageFeed, MainPageFeedAtom
 
 urlpatterns = patterns('',
     url(r'^categories/$', CategoriesListView.as_view(), name = 'categories'),
@@ -33,4 +33,5 @@ urlpatterns = patterns('',
     url(r'^filter/$', FilteringView.as_view(), name = 'filter'),
     url(r'^repository/(?P<slug>[^/]+)/$', RepoDetailView.as_view(), name = 'repository'),
     url(r'^rss/$', MainPageFeed()),
+    url(r'^atom/$', MainPageFeedAtom()),
 )

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 5fdde7b..78ed365 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -1,6 +1,8 @@
 from django.views.generic import DetailView, FormView, ListView
 from generic.views import ContextListView, ContextTemplateView, ContextView, \
-                          MultipleFilterListViewMixin
+                          MultipleFilterListViewMixin, RightAtom1Feed, \
+                          FeedWithUpdated
+
 from .models import CategoryModel, HerdsModel, MaintainerModel, \
                     RepositoryModel, LicenseGroupModel, EbuildModel, \
                     PackageModel, UseFlagModel, PortageNewsModel, \
@@ -10,7 +12,6 @@ from django.core.urlresolvers import reverse
 
 from django.shortcuts import get_object_or_404
 from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
-from django.contrib.syndication.views import Feed
 
 arches = ['alpha', 'amd64', 'arm', 'hppa', 'ia64', 'ppc', 'ppc64', 'sparc', 'x86']
 
@@ -254,7 +255,7 @@ class RepoDetailView(DetailView):
     slug_field = 'name'
     queryset = RepositoryModel.objects.all()
 
-class MainPageFeed(Feed):
+class MainPageFeed(FeedWithUpdated):
     title = 'Feed'
     link = '/rss/'
     description = 'Descr'
@@ -270,3 +271,10 @@ class MainPageFeed(Feed):
 
     def item_pubdate(self, item):
         return item.created_datetime
+
+    def item_update(self, item):
+        return item.updated_datetime
+
+class MainPageFeedAtom(MainPageFeed):
+    link = '/atom/'
+    feed_type = RightAtom1Feed


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-07-14 20:15 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-14 20:15 UTC (permalink / raw
  To: gentoo-commits

commit:     43ed80e696fb1532ca2f6b693e4d9c9daf0fd668
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Fri Jul 13 12:15:57 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Fri Jul 13 12:33:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=43ed80e6

Fix bug with loading keywords from database

---
 gpackages/apps/generic/views.py  |    6 +++---
 gpackages/apps/packages/views.py |   19 ++++++++++---------
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index bb0b6c7..e8b5cdc 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -73,9 +73,9 @@ class MultipleFilterListViewMixin(object):
     allowed_many = {}
     m2m_filter = set()
 
-    base_queryset = None # should be queryset
-
     def get_queryset(self):
+        query = super(MultipleFilterListViewMixin, self).get_queryset()
+
         qs = filter_req(self.request.GET, self.allowed_filter)
         qs.update(filter_req(self.kwargs, self.allowed_filter))
 
@@ -92,7 +92,7 @@ class MultipleFilterListViewMixin(object):
                 raise Http404('no such order')
 
         qa = dynamic_filter(qs, self.allowed_filter, self.allowed_many)
-        queryset = self.base_queryset.filter(**qa).order_by(order)
+        queryset = query.filter(**qa).order_by(order)
 
         for q in qs.iterkeys():
             if q in self.m2m_filter:

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 4c9b113..be0ad02 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -25,6 +25,10 @@ class ArchesContexView(ArchesViewMixin, ContextView):
         ret.update({'arches': self.get_arches()})
         return ret
 
+    def get_queryset(self):
+        query = super(ArchesContexView, self).get_queryset()
+        return query.prefetch_keywords(self.get_arches())
+
 class ContextArchListView(ArchesContexView, ListView):
     pass
 
@@ -68,8 +72,7 @@ class EbuildsListView(ContextArchListView):
         select_related('package',
                        'package__virtual_package',
                        'package__virtual_package__category'). \
-                       prefetch_related('package__repository'). \
-                       prefetch_keywords(arches)
+                       prefetch_related('package__repository')
 
 class EbuildDetailView(ArchesContexView, DetailView):
     template_name = 'ebuild.html'
@@ -78,8 +81,7 @@ class EbuildDetailView(ArchesContexView, DetailView):
     queryset = EbuildModel.objects.all(). \
         select_related('package',
                        'package__virtual_package',
-                       'package__virtual_package__category'). \
-                       prefetch_keywords(arches)
+                       'package__virtual_package__category')
 
     def get_object(self, queryset = None):
         pk = self.kwargs.get('pk')
@@ -130,11 +132,11 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
     #INNER JOIN packages_virtualpackagemodel vp 
     #ON( `vp`.id = t.virtual_package_id) INNER JOIN `packages_categorymodel` cp
     #ON (vp.category_id = cp.id);
-    base_queryset = PackageModel.objects.all(). \
+    queryset = PackageModel.objects.all(). \
         select_related('virtual_package',
                        'virtual_package__category'). \
-        prefetch_related('repository', 'herds', 'maintainers'). \
-        prefetch_keywords(arches)
+        prefetch_related('repository', 'herds', 'maintainers')
+        #prefetch_keywords(['sparc-solaris', 'sparc64-solaris'])
 
 class PackageDetailView(ArchesContexView, DetailView):
     template_name = 'package.html'
@@ -143,8 +145,7 @@ class PackageDetailView(ArchesContexView, DetailView):
     queryset = PackageModel.objects.all(). \
         select_related('virtual_package',
                        'virtual_package__category'). \
-        prefetch_related('repository'). \
-        prefetch_keywords(arches)
+        prefetch_related('repository')
 
     def get_object(self, queryset = None):
         pk = self.kwargs.get('pk')



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-07-10 23:13 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-07-10 23:13 UTC (permalink / raw
  To: gentoo-commits

commit:     c2eb04db5bce7a617a8a9e88812303e2664c3778
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul  9 18:14:06 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul  9 18:14:06 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=c2eb04db

Add dynamic search by multiple args with __in

---
 gpackages/apps/generic/views.py  |   45 ++++++++++++++++++-------------------
 gpackages/apps/packages/views.py |    2 +
 2 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index 098c2db..731c845 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -24,18 +24,25 @@ set_lang_view = SetLang.as_view()
 # but it is too big and i need just a litle of its functionly
 # but if this code have to be grove maybe i replace it to django-filter
 # application or another.
-def dynamic_filter(filter_set, allowed):
+def dynamic_filter(filter_set, allowed, many_set = set([])):
     result = {}
-    for k in allowed.iterkeys():
+    for k, v in allowed.iteritems():
         if k in filter_set:
-            result[allowed[k]] = filter_set[k]
+            vv = filter_set[k]
+            if k in many_set:
+                l = vv.split(',')
+                if len(l)>1:
+                    v += '__in'
+                    vv = l
+            result[v] = vv
     return result
 
-def exclude_blank(res_dict):
+def filter_req(filter_set, allowed):
     result = {}
-    for k in res_dict.iterkeys():
-        if res_dict[k]:
-            result[k] = res_dict[k]
+    for k in allowed.iterkeys():
+        v = filter_set.get(k)
+        if v:
+            result[k] = v
     return result
 
 def dynamic_order(args_list, allowed_list, reverse = None):
@@ -57,24 +64,15 @@ def dynamic_order(args_list, allowed_list, reverse = None):
 class MultipleFilterListViewMixin(object):
     allowed_filter = {}
     allowed_order = {}
-    m2m_filter = ()
+    allowed_many = set()
+    m2m_filter = set()
 
     base_queryset = None # should be queryset
 
-    def __init__(self, *args, **kwargs):
-        super(MultipleFilterListViewMixin, self).__init__(*args, **kwargs)
-        l =  []
-        for key, val in self.allowed_filter.iteritems():
-            if key in self.m2m_filter:
-                l.append(val)
-        self.m2m_set = frozenset(l)
-
     def get_queryset(self):
-        qs = dynamic_filter(exclude_blank(self.request.GET),
-                                        self.allowed_filter)
-        qs.update( dynamic_filter(exclude_blank(self.kwargs),
-                                        self.allowed_filter) )
-        
+        qs = filter_req(self.request.GET, self.allowed_filter)
+        qs.update(filter_req(self.kwargs, self.allowed_filter))
+
         if self.kwargs.get('rev') is None:
             reverse = bool(self.request.GET.get('rev',False))
         else:
@@ -87,10 +85,11 @@ class MultipleFilterListViewMixin(object):
             if self.kwargs.get('order') not in self.allowed_order:
                 raise Http404('no such order')
 
-        queryset = self.base_queryset.filter(**qs).order_by(order)
+        qa = dynamic_filter(qs, self.allowed_filter, self.allowed_many)
+        queryset = self.base_queryset.filter(**qa).order_by(order)
 
         for q in qs.iterkeys():
-            if q in self.m2m_set:
+            if q in self.m2m_filter:
                 queryset = queryset.distinct()
                 break
 

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 32b4e7d..9fe1b94 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -115,6 +115,8 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
                       'rand':'?', # it slow
                       None: '-updated_datetime'
                     }
+    allowed_many = set(['repo', 'use'])
+
     paginate_by = 40
     extra_context = {'page_name': 'Packages', 'arches': arches}
     template_name = 'packages.html'



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/
@ 2012-06-30 21:02 Slava Bacherikov
  0 siblings, 0 replies; 6+ messages in thread
From: Slava Bacherikov @ 2012-06-30 21:02 UTC (permalink / raw
  To: gentoo-commits

commit:     4d6ca7250b10ccdbd96e0619db250ed7074f9f27
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 30 19:54:02 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 30 19:54:02 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=4d6ca725

Fix bug in PackageListView with distict

---
 gpackages/apps/generic/views.py  |    5 ++++-
 gpackages/apps/packages/views.py |    2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/gpackages/apps/generic/views.py b/gpackages/apps/generic/views.py
index 6beb59e..098c2db 100644
--- a/gpackages/apps/generic/views.py
+++ b/gpackages/apps/generic/views.py
@@ -63,7 +63,10 @@ class MultipleFilterListViewMixin(object):
 
     def __init__(self, *args, **kwargs):
         super(MultipleFilterListViewMixin, self).__init__(*args, **kwargs)
-        l = (x for x in self.allowed_filter.itervalues())
+        l =  []
+        for key, val in self.allowed_filter.iteritems():
+            if key in self.m2m_filter:
+                l.append(val)
         self.m2m_set = frozenset(l)
 
     def get_queryset(self):

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index 97e54d6..c77c46e 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -69,7 +69,7 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextListView):
                        'license': 'ebuildmodel__licenses__name'
                     }
 
-    m2m_filter = ['herd', 'maintainer', 'ebuildmodel' ]
+    m2m_filter = set(['herd', 'maintainer', 'license'])
 
     allowed_order = { 'create': 'created_datetime',
                       'update': 'updated_datetime',



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-08-27 21:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-10 23:13 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/generic/ Slava Bacherikov
  -- strict thread matches above, loose matches on Subject: below --
2012-08-27 21:19 Slava Bacherikov
2012-07-30 12:59 Slava Bacherikov
2012-07-14 20:15 Slava Bacherikov
2012-07-10 23:13 Slava Bacherikov
2012-06-30 21:02 Slava Bacherikov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox