From a8271351182eea8f4dfebd167997139fa4129f76 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 8 Mar 2010 20:55:31 -0600 Subject: WIP on search stuff Signed-off-by: Dan McGee --- packages/utils.py | 15 +++++++++ packages/views.py | 12 +++++++- templates/packages/results.html | 4 +-- templates/packages/search.html | 68 +++++++++++++++++++++++++++++++++++++++++ urls.py | 2 +- 5 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 packages/utils.py create mode 100644 templates/packages/search.html diff --git a/packages/utils.py b/packages/utils.py new file mode 100644 index 00000000..0bb673d9 --- /dev/null +++ b/packages/utils.py @@ -0,0 +1,15 @@ +def parse_query(q): + ret = {'q': ''} + if not q: + return ret + for piece in q.split(' '): + parts = piece.partition(':') + if parts[1]: + ret[parts[0]] = parts[2] + else: + if ret['q'] != '': + ret['q'] += ' ' + ret['q'] += parts[0] + return ret + +# vim: set ts=4 sw=4 et: diff --git a/packages/views.py b/packages/views.py index 7f636c9d..afdfe6f4 100644 --- a/packages/views.py +++ b/packages/views.py @@ -88,10 +88,14 @@ def getmaintainer(request, name, repo, arch): return HttpResponse(str('\n'.join(names)), mimetype='text/plain') class PackageSearchForm(forms.Form): + q = forms.CharField(required=False) + keywords = forms.CharField(required=False) + name = forms.CharField(required=False) + desc = forms.CharField(required=False) repo = forms.ChoiceField(required=False) arch = forms.ChoiceField(required=False) - q = forms.CharField(required=False) maintainer = forms.ChoiceField(required=False) + license = forms.CharField(required=False) last_update = forms.DateField(required=False, widget=AdminDateWidget()) flagged = forms.ChoiceField( choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']), @@ -129,6 +133,12 @@ class PackageSearchForm(forms.Form): ('', 'All'), ('orphan', 'Orphan')] + make_choice( [m.username for m in User.objects.order_by('username')]) +def advsearch(request): + form = PackageSearchForm() + page_dict = { 'search_form': form } + template = 'packages/search.html' + return render_to_response(template, RequestContext(request, page_dict)) + def search(request, page=None): current_query = '?' limit=50 diff --git a/templates/packages/results.html b/templates/packages/results.html index eca651d9..7560296b 100644 --- a/templates/packages/results.html +++ b/templates/packages/results.html @@ -1,8 +1,6 @@ {% extends "base.html" %} {% load package_extras %} -{% block title %}Arch Linux - Package Search{% endblock %} -{% block head %} -{% endblock %} +{% block title %}Arch Linux - Search Results{% endblock %} {% block content %}