From 6a429a8d898d5f0789f5b5a3f2858c6578fa5227 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 7 Mar 2011 21:50:13 -0600 Subject: Clean up current_query and preserve multiple args When implementing search for multiple architectures or repositories, I didn't update this method to accomidate the new query parameters. Clean it up a bit by not appending/stripping the leading '?' anywhere but in the template itself, and ensure we can handle multiple of any parameter passed in. Fixes FS#23180. Signed-off-by: Dan McGee --- templates/packages/search.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'templates/packages/search.html') diff --git a/templates/packages/search.html b/templates/packages/search.html index dad05ffa..5d0de1f4 100644 --- a/templates/packages/search.html +++ b/templates/packages/search.html @@ -50,13 +50,13 @@

Package Search

{% if page_obj.has_previous %} - {% else %} < Prev {% endif %} {% if page_obj.has_next %} - {% else %} Next > @@ -74,17 +74,17 @@

Package Search

{% if perms.main.change_package %}   {% endif %} - Arch - Repo - Name Version Description - Last Updated - Flag Date @@ -118,13 +118,13 @@

Package Search

{% if page_obj.has_previous %} - {% else %} < Prev {% endif %} {% if page_obj.has_next %} - {% else %} Next > -- cgit v1.2.3-54-g00ecf From 5abe0727bfa9a4fab24afcccb66da7d8832bf6b9 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 13 Mar 2011 11:41:36 -0500 Subject: Show epoch in package version if != 0 Add a full_version property method to our package object that does the version formatting, and switch all templates displaying package versions over to this new method. Signed-off-by: Dan McGee --- main/models.py | 6 ++++++ templates/feeds/packages_title.html | 2 +- templates/packages/details.html | 8 ++++---- templates/packages/differences.html | 4 ++-- templates/packages/files.html | 4 ++-- templates/packages/group_details.html | 4 ++-- templates/packages/search.html | 4 ++-- templates/packages/signoffs.html | 2 +- templates/public/index.html | 2 +- 9 files changed, 21 insertions(+), 15 deletions(-) (limited to 'templates/packages/search.html') diff --git a/main/models.py b/main/models.py index d0ccb12a..727dc010 100644 --- a/main/models.py +++ b/main/models.py @@ -131,6 +131,12 @@ class Meta: def __unicode__(self): return self.pkgname + @property + def full_version(self): + if self.epoch > 0: + return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel) + return u'%s-%s' % (self.pkgver, self.pkgrel) + def get_absolute_url(self): return '/packages/%s/%s/%s/' % (self.repo.name.lower(), self.arch.name, self.pkgname) diff --git a/templates/feeds/packages_title.html b/templates/feeds/packages_title.html index 910c6207..5c54ba65 100644 --- a/templates/feeds/packages_title.html +++ b/templates/feeds/packages_title.html @@ -1 +1 @@ -{{ obj.pkgname }} {{ obj.pkgver }}-{{ obj.pkgrel }} {{ obj.arch.name }} +{{ obj.pkgname }} {{ obj.full_version }} {{ obj.arch.name }} diff --git a/templates/packages/details.html b/templates/packages/details.html index f73e9d7c..051726bd 100644 --- a/templates/packages/details.html +++ b/templates/packages/details.html @@ -1,14 +1,14 @@ {% extends "base.html" %} {% load cache %} -{% block title %}Arch Linux - {{ pkg.pkgname }} {{ pkg.pkgver }}-{{ pkg.pkgrel }} - Package Details{% endblock %} +{% block title %}Arch Linux - {{ pkg.pkgname }} {{ pkg.full_version }} - Package Details{% endblock %} {% block navbarclass %}anb-packages{% endblock %} {% load package_extras %} {% block content %}

-

Package Details: {{ pkg.pkgname }} {{ pkg.pkgver }}-{{ pkg.pkgrel }}

+

Package Details: {{ pkg.pkgname }} {{ pkg.full_version }}

diff --git a/templates/packages/differences.html b/templates/packages/differences.html index b2a1be02..dd1046bc 100644 --- a/templates/packages/differences.html +++ b/templates/packages/differences.html @@ -45,12 +45,12 @@

Filter Differences View

{% if diff.pkg_a %} - {{ diff.pkg_a.pkgver }}-{{ diff.pkg_a.pkgrel }} + {{ diff.pkg_a.full_version }} {% else %}-{% endif %} {% if diff.pkg_b %} - {{ diff.pkg_b.pkgver }}-{{ diff.pkg_b.pkgrel }} + {{ diff.pkg_b.full_version }} {% else %}-{% endif %} {% endfor %} diff --git a/templates/packages/files.html b/templates/packages/files.html index 5e0ceb07..362e62cd 100644 --- a/templates/packages/files.html +++ b/templates/packages/files.html @@ -1,11 +1,11 @@ {% extends "base.html" %} -{% block title %}Arch Linux - {{ pkg.pkgname }} {{ pkg.pkgver }}-{{ pkg.pkgrel }} - Package File List{% endblock %} +{% block title %}Arch Linux - {{ pkg.pkgname }} {{ pkg.full_version }} - Package File List{% endblock %} {% block navbarclass %}anb-packages{% endblock %} {% block content %}
-

Package File List: {{ pkg.pkgname }} {{ pkg.pkgver }}-{{ pkg.pkgrel }}

+

Package File List: {{ pkg.pkgname }} {{ pkg.full_version }}

Back to Package

{% include "packages/files-list.html" %} diff --git a/templates/packages/group_details.html b/templates/packages/group_details.html index 9cfa7b73..b40c21d0 100644 --- a/templates/packages/group_details.html +++ b/templates/packages/group_details.html @@ -24,9 +24,9 @@

Details for group {{ groupname }} - {{ arch.name }}

{{ pkg.pkgname }} {% if pkg.flag_date %} - {{ pkg.pkgver }}-{{ pkg.pkgrel }} + {{ pkg.full_version }} {% else %} - {{ pkg.pkgver }}-{{ pkg.pkgrel }} + {{ pkg.full_version }} {% endif %} {{ pkg.pkgdesc }} {{ pkg.last_update|date }} diff --git a/templates/packages/search.html b/templates/packages/search.html index 5d0de1f4..8ea53b8e 100644 --- a/templates/packages/search.html +++ b/templates/packages/search.html @@ -99,9 +99,9 @@

Package Search

{{ pkg.pkgname }} {% if pkg.flag_date %} - {{ pkg.pkgver }}-{{ pkg.pkgrel }} + {{ pkg.full_version }} {% else %} - {{ pkg.pkgver }}-{{ pkg.pkgrel }} + {{ pkg.full_version }} {% endif %} {{ pkg.pkgdesc }} {{ pkg.last_update|date }} diff --git a/templates/packages/signoffs.html b/templates/packages/signoffs.html index 0cb7679c..b7184039 100644 --- a/templates/packages/signoffs.html +++ b/templates/packages/signoffs.html @@ -26,7 +26,7 @@

Package Signoffs

{{ pkg.arch.name }} {{ pkg.pkgname }} - {{ pkg.pkgver }}-{{ pkg.pkgrel }} + {{ pkg.full_version }} {{ pkg.last_update }} {{ target }} diff --git a/templates/public/index.html b/templates/public/index.html index c903b232..91a8414c 100644 --- a/templates/public/index.html +++ b/templates/public/index.html @@ -82,7 +82,7 @@

Recent Updates ( - {{ fpkg.pkgname }} {{ fpkg.pkgver }}-{{ fpkg.pkgrel }} + {{ fpkg.pkgname }} {{ fpkg.full_version }} {% for pkg in update %}{{ pkg.arch }}{% if not forloop.last %}/{% endif %}{% endfor %} -- cgit v1.2.3-54-g00ecf From a0ef88770f5fe318f38eaa7dc794727a507c797b Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Tue, 15 Mar 2011 09:02:22 -0500 Subject: Ensure package search form correctly handles errors We were silently eating errors and just showing a normal package list if the form didn't validate. Rather than do that, make sure we return no packages at all and display the form errors back to the user in a sane fashion. Adjust the validation methods on the 'limit' parameter so any integer is acceptable. Signed-off-by: Dan McGee --- packages/views.py | 40 +++++++++++++++++++------------- templates/packages/search.html | 52 ++++++++++++++++++++++++------------------ 2 files changed, 54 insertions(+), 38 deletions(-) (limited to 'templates/packages/search.html') diff --git a/packages/views.py b/packages/views.py index 3cef8226..6239f01a 100644 --- a/packages/views.py +++ b/packages/views.py @@ -126,6 +126,23 @@ def getmaintainer(request, name, repo, arch): return HttpResponse(str('\n'.join(names)), mimetype='text/plain') +def coerce_limit_value(value): + if not value: + return 50 + if value == 'all': + return None + value = int(value) + if value < 0: + raise ValueError + return value + +class LimitTypedChoiceField(forms.TypedChoiceField): + def valid_value(self, value): + try: + return coerce_limit_value(value) + except ValueError, TypeError: + return False + class PackageSearchForm(forms.Form): repo = forms.MultipleChoiceField(required=False) arch = forms.MultipleChoiceField(required=False) @@ -136,25 +153,12 @@ class PackageSearchForm(forms.Form): flagged = forms.ChoiceField( choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']), required=False) - limit = forms.ChoiceField( + limit = LimitTypedChoiceField( choices=make_choice([50, 100, 250]) + [('all', 'All')], + coerce=coerce_limit_value, required=False, initial=50) - def clean_limit(self): - limit = self.cleaned_data['limit'] - if limit == 'all': - limit = None - elif limit: - try: - limit = int(limit) - except: - raise forms.ValidationError("Should be an integer") - else: - limit = 50 - return limit - - def __init__(self, *args, **kwargs): super(PackageSearchForm, self).__init__(*args, **kwargs) self.fields['repo'].choices = make_choice( @@ -186,7 +190,8 @@ def search(request, page=None): inner_q = PackageRelation.objects.all().values('pkgbase') packages = packages.exclude(pkgbase__in=inner_q) elif form.cleaned_data['maintainer']: - inner_q = PackageRelation.objects.filter(user__username=form.cleaned_data['maintainer']).values('pkgbase') + inner_q = PackageRelation.objects.filter( + user__username=form.cleaned_data['maintainer']).values('pkgbase') packages = packages.filter(pkgbase__in=inner_q) if form.cleaned_data['flagged'] == 'Flagged': @@ -203,6 +208,9 @@ def search(request, page=None): packages = packages.filter(last_update__gte= datetime(lu.year, lu.month, lu.day, 0, 0)) limit = form.cleaned_data['limit'] + else: + # Form had errors, don't return any results, just the busted form + packages = Package.objects.none() else: form = PackageSearchForm() diff --git a/templates/packages/search.html b/templates/packages/search.html index 8ea53b8e..381ebb01 100644 --- a/templates/packages/search.html +++ b/templates/packages/search.html @@ -14,28 +14,36 @@

Package Database

Package Search

- +

-- cgit v1.2.3-54-g00ecf