summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/templatetags/package_extras.py6
-rw-r--r--packages/views.py24
-rw-r--r--templates/devel/index.html6
-rw-r--r--templates/packages/search.html17
4 files changed, 38 insertions, 15 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index 56445832..b6868ece 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -1,3 +1,4 @@
+import cgi, urllib
from django import template
register = template.Library()
@@ -6,7 +7,8 @@ class BuildQueryStringNode(template.Node):
def __init__(self, sortfield):
self.sortfield = sortfield
def render(self, context):
- qs = context['querystring'].copy()
+ #qs = context['querystring'].copy()
+ qs = dict(cgi.parse_qsl(context['current_query'][1:]))
if qs.has_key('sort') and qs['sort'] == self.sortfield:
if self.sortfield.startswith('-'):
qs['sort'] = self.sortfield[1:]
@@ -14,7 +16,7 @@ class BuildQueryStringNode(template.Node):
qs['sort'] = '-' + self.sortfield
else:
qs['sort'] = self.sortfield
- return '?' + qs.urlencode()
+ return '?' + urllib.urlencode(qs)
@register.tag(name='buildsortqs')
def do_buildsortqs(parser, token):
diff --git a/packages/views.py b/packages/views.py
index fdc3f05a..d6f23b15 100644
--- a/packages/views.py
+++ b/packages/views.py
@@ -57,20 +57,25 @@ class PackageSearchForm(forms.Form):
q = forms.CharField(required=False)
maintainer = forms.ChoiceField(required=False)
last_update = forms.DateField(required=False, widget=AdminDateWidget())
+ flagged = forms.ChoiceField(
+ choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']),
+ required=False)
limit = forms.ChoiceField(
- choices=make_choice([50, 100, 250]) + [('', 'All')],
+ choices=make_choice([50, 100, 250]) + [('all', 'All')],
required=False,
initial=50)
def clean_limit(self):
limit = self.cleaned_data['limit']
- if limit:
+ if limit == 'all':
+ limit = None
+ elif limit:
try:
limit = int(limit)
except:
raise forms.ValidationError("Should be an integer")
else:
- limit = None
+ limit = 50
return limit
@@ -104,6 +109,10 @@ def search(request, page=None):
arch__name=form.cleaned_data['arch'])
if form.cleaned_data['maintainer'] == 'orphan':
packages=packages.filter(maintainer__id = 0)
+ if form.cleaned_data['flagged'] == 'Flagged':
+ packages=packages.filter(needupdate=True)
+ elif form.cleaned_data['flagged'] == 'Not Flagged':
+ packages = packages.filter(needupdate=False)
elif form.cleaned_data['maintainer']:
packages = packages.filter(
maintainer__username=form.cleaned_data['maintainer'])
@@ -122,6 +131,15 @@ def search(request, page=None):
page_dict = {'search_form': form,
'current_query': current_query
}
+ if len(packages) == 1:
+ return HttpResponseRedirect(packages[0].get_absolute_url())
+
+ sort = request.GET.get('sort', '')
+ if sort in request.GET:
+ packages = packages.order_by(sort, 'repo', 'arch', 'pkgname')
+ else:
+ packages = packages.order_by('repo', 'arch', '-last_update', 'pkgname')
+
return list_detail.object_list(request, packages,
template_name="packages/search.html",
page=page,
diff --git a/templates/devel/index.html b/templates/devel/index.html
index 88794964..887e3a9a 100644
--- a/templates/devel/index.html
+++ b/templates/devel/index.html
@@ -34,7 +34,7 @@
<tr class="{% cycle pkgr2,pkgr1 %}">
<td><strong>{{ arch.name }}</strong></td>
<td><a href="/packages/?arch={{ arch.name }}"><strong>{{ arch.packages.count }}</strong> packages</a></td>
- <td><a href="/packages/?arch={{ arch.name }}&flagged_only=y"><strong>{{ arch.packages.flagged.count }}</strong> packages</a></td>
+ <td><a href="/packages/?arch={{ arch.name }}&flagged=Flagged"><strong>{{ arch.packages.flagged.count }}</strong> packages</a></td>
</tr>
{% endfor %}
</table>
@@ -52,7 +52,7 @@
<tr class="{% cycle pkgr2,pkgr1 %}">
<td><strong>{{ repo.name }}</strong></td>
<td><a href="/packages/?repo={{ repo.name }}"><strong>{{ repo.packages.count }}</strong> packages</a></td>
- <td><a href="/packages/?repo={{ repo.name }}&flagged_only=y"><strong>{{ repo.packages.flagged.count }}</strong> packages</a></td>
+ <td><a href="/packages/?repo={{ repo.name }}&flagged=Flagged"><strong>{{ repo.packages.flagged.count }}</strong> packages</a></td>
</tr>
{% endfor %}
</table>
@@ -71,7 +71,7 @@
<tr class="{% cycle pkgr2,pkgr1 %}">
<td><strong>{{ maint.get_full_name }}</strong></td>
<td><a href="/packages/?maint={{ maint.id }}"><strong>{{ maint.maintained_packages.count }}</strong> packages</a></td>
- <td><a href="/packages/?maint={{ maint.id }}&flagged_only=y"><strong>{{ maint.maintained_packages.flagged.count }}</strong> packages</a></td>
+ <td><a href="/packages/?maint={{ maint.id }}&flagged=Flagged"><strong>{{ maint.maintained_packages.flagged.count }}</strong> packages</a></td>
</tr>
{% endfor %}
</table>
diff --git a/templates/packages/search.html b/templates/packages/search.html
index bf075584..a54a9a0f 100644
--- a/templates/packages/search.html
+++ b/templates/packages/search.html
@@ -18,6 +18,7 @@
<td><span class="smalltext">Keywords</span></td>
<td><span class="smalltext">Maintainer</span></td>
<td><span class="smalltext">Last Update</span></td>
+ <td><span class="smalltext">Flagged</span></td>
<td><span class="smalltext">Per Page</span></td>
</tr>
<tr>
@@ -26,6 +27,7 @@
{% td_input search_form.q %}
{% td_input search_form.maintainer%}
{% td_input search_form.last_update %}
+ {% td_input search_form.flagged %}
{% td_input search_form.limit %}
<td><input type="submit" value="Search" />
</tr>
@@ -40,13 +42,14 @@
<tr>
<form method="post" action="/packages/update/">
<th>&nbsp;</th>
- <th>Arch</th>
- <th>Repo</th>
- <th>Name</th>
+ <th><a href="{% buildsortqs "arch" %}">Arch</a></th>
+ <th><a href="{% buildsortqs "repo" %}">Repo</a></th>
+ <th><a href="{% buildsortqs "pkgname" %}">Name</a></th>
<th>Version</th>
<th>Description</th>
- <th>Maintainer</th>
- <th>Last Updated</th>
+ <th><a href="{% buildsortqs "maintainer" %}">Maintainer</a></th>
+ <th><a href="{% buildsortqs "-last_update" %}">Last Updated</a></th>
+
</tr>
{% for pkg in package_list %}
<tr class="{% cycle pkgr2,pkgr1 %}">
@@ -84,8 +87,8 @@
<a href="/packages/search/{{page_obj.next_page_number}}/{{current_query}}">
Next &gt;&gt;&gt;
</a>
- {% else %} &gt;&gt;&gt;
- Next
+ {% else %}
+ Next &gt;&gt;&gt;
{% endif %}
</td>
<br />