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/templates/
Date: Tue, 10 Jul 2012 23:13:59 +0000 (UTC) [thread overview]
Message-ID: <1341863637.ccf2f1130d5b6f42235f56046de01a0baa7bb5cc.bacher09@gentoo> (raw)
commit: ccf2f1130d5b6f42235f56046de01a0baa7bb5cc
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jul 9 19:53:57 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jul 9 19:53:57 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=ccf2f113
Add simple filtering view
---
gpackages/apps/packages/forms.py | 35 ++++++++++++++++++++++++++++++-
gpackages/apps/packages/urls.py | 3 +-
gpackages/apps/packages/views.py | 28 +++++++++++++++++++++++-
gpackages/templates/base.html | 1 +
gpackages/templates/filtering_view.html | 19 ++++++++++++++++
5 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/gpackages/apps/packages/forms.py b/gpackages/apps/packages/forms.py
index 39dab08..974eb63 100644
--- a/gpackages/apps/packages/forms.py
+++ b/gpackages/apps/packages/forms.py
@@ -1,5 +1,6 @@
from django import forms
-from .models import ArchesModel
+from .models import ArchesModel, RepositoryModel, CategoryModel, HerdsModel, \
+ UseFlagModel, MaintainerModel, LicenseModel
from .widgets import DivCheckboxSelectMultiple
# Need rerun if database are empty
@@ -11,3 +12,35 @@ class ArchChoiceForm(forms.Form):
widget = DivCheckboxSelectMultiple,
#widget = forms.CheckboxSelectMultiple(attrs = {'class': 'inline checkbox'}),
choices = arches)
+
+class FilteringForm(forms.Form):
+ def __init__(self, *args, **kwargs):
+ super(FilteringForm, self).__init__(*args, **kwargs)
+ repos = RepositoryModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
+
+ categories = CategoryModel.objects.all().order_by('category'). \
+ values_list('category', 'category')
+
+ herds = HerdsModel.objects.all().order_by('name'). \
+ values_list('name','name')
+
+ uses = UseFlagModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
+
+ #maintainers = MaintainerModel.all().order_by('email'). \
+ # values_list('pk', 'email')
+
+ licenses = LicenseModel.objects.all().order_by('name'). \
+ values_list('name', 'name')
+
+ names = ['repos', 'categories', 'herds', 'uses', 'licenses']
+ values = [repos, categories, herds, uses, licenses]
+ for k, v in zip(names, values):
+ self.fields[k].choices = v
+
+ repos = forms.MultipleChoiceField(required = False)
+ categories = forms.MultipleChoiceField(required = False)
+ herds = forms.MultipleChoiceField(required = False)
+ uses = forms.MultipleChoiceField(required = False)
+ licenses = forms.MultipleChoiceField(required = False)
diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.py
index a8e4cab..d7ebf49 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -4,7 +4,7 @@ from views import CategoriesListView, HerdsListView, MaintainersListView, \
PackagesListsView, PackageDetailView, EbuildDetailView, \
GlobalUseListView, NewsListView, NewsDetailView, \
LicenseDetailView, ArchChoiceView, LicensesListView, \
- LocalUseListView
+ LocalUseListView, FilteringView
urlpatterns = patterns('',
url(r'^categories/$', CategoriesListView.as_view(), name = 'categories'),
@@ -29,4 +29,5 @@ urlpatterns = patterns('',
url(r'^license/(?P<slug>[^/]+)/$', LicenseDetailView.as_view(), name = 'license'),
url(r'^arches/$', ArchChoiceView.as_view(), name = 'archchoice'),
url(r'^licenses/$', LicensesListView.as_view(), name = 'licenses'),
+ url(r'^filter/$', FilteringView.as_view(), name = 'filter'),
)
diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.py
index a52e3fa..ad1bffa 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -5,7 +5,8 @@ from .models import CategoryModel, HerdsModel, MaintainerModel, \
RepositoryModel, LicenseGroupModel, EbuildModel, \
PackageModel, UseFlagModel, PortageNewsModel, \
UseFlagDescriptionModel, LicenseModel
-from .forms import ArchChoiceForm
+from .forms import ArchChoiceForm, FilteringForm
+from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
@@ -115,7 +116,7 @@ class PackagesListsView(MultipleFilterListViewMixin, ContextArchListView):
'rand':'?', # it slow
None: '-updated_datetime'
}
- allowed_many = {'repo': 5, 'use' : 3}
+ allowed_many = {'repo': 5, 'use' : 3, 'herd': 4, 'category': 4, 'license': 3}
paginate_by = 40
extra_context = {'page_name': 'Packages', 'arches': arches}
@@ -221,3 +222,26 @@ class ArchChoiceView(ContextView, ArchesViewMixin, FormView):
# arches_str = ','.join(arches)
self.request.session['arches'] = arches
return super(ArchChoiceView, self).form_valid(form)
+
+class FilteringView(FormView):
+ form_class = FilteringForm
+ template_name = 'filtering_view.html'
+ success_url = '/'
+ params_dict = { 'repos': 'repo',
+ 'herds': 'herd',
+ 'categories': 'category',
+ 'licenses': 'license',
+ 'uses': 'use'
+ }
+
+ def form_valid(self, form):
+ self.form_data = form.cleaned_data
+ return super(FilteringView, self).form_valid(form)
+
+ 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)
diff --git a/gpackages/templates/base.html b/gpackages/templates/base.html
index 2f3c79a..cd90352 100644
--- a/gpackages/templates/base.html
+++ b/gpackages/templates/base.html
@@ -116,6 +116,7 @@
{% active_link 'local_uses' 'Local Use Flags' %}
{% active_link 'archchoice' 'Select Arches' %}
{% active_link 'licenses' 'Licenses' %}
+ {% active_link 'filter' 'Filter' %}
</ul>
</div>
{% recent_ebuilds %}
diff --git a/gpackages/templates/filtering_view.html b/gpackages/templates/filtering_view.html
new file mode 100644
index 0000000..d7a2f14
--- /dev/null
+++ b/gpackages/templates/filtering_view.html
@@ -0,0 +1,19 @@
+{% extends 'base.html' %}
+
+{% block content %}
+<div class="filter">
+<form action="./" method="post" enctype="multipart/form-data">{% csrf_token %}
+ {{ form.as_ul }} <br />
+ <input type="submit" value="Submit" />
+</form>
+</div>
+{% endblock content %}
+
+{% block scripts %}
+ {{ block.super }}
+ <link href="{{ STATIC_URL }}css/chosen.css" rel="stylesheet">
+ <script src="{{ STATIC_URL }}js/chosen.jquery.js"></script>
+ <script type="text/javascript" charset="utf-8">
+ $('select').chosen(); // :)
+ </script>
+{% endblock scripts %}
next reply other threads:[~2012-07-10 23:14 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-10 23:13 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-08-20 13:03 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/templates/ Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-06 23:09 Slava Bacherikov
2012-07-06 23:09 Slava Bacherikov
2012-07-04 22:13 Slava Bacherikov
2012-07-02 22:25 Slava Bacherikov
2012-06-30 21:02 Slava Bacherikov
2012-06-30 21:02 Slava Bacherikov
2012-06-30 0:22 Slava Bacherikov
2012-06-29 19:25 Slava Bacherikov
2012-06-28 23:59 Slava Bacherikov
2012-06-27 22:52 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=1341863637.ccf2f1130d5b6f42235f56046de01a0baa7bb5cc.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