Update search views to CBV. Remove unused template.
This commit is contained in:
@@ -4,15 +4,6 @@ from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
class SearchForm(forms.Form):
|
||||
q = forms.CharField(max_length=128, label=_('Search terms'))
|
||||
source = forms.CharField(
|
||||
max_length=32,
|
||||
required=False,
|
||||
widget=forms.widgets.HiddenInput()
|
||||
)
|
||||
|
||||
|
||||
class AdvancedSearchForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.search_model = kwargs.pop('search_model')
|
||||
@@ -23,3 +14,7 @@ class AdvancedSearchForm(forms.Form):
|
||||
label=label,
|
||||
required=False
|
||||
)
|
||||
|
||||
|
||||
class SearchForm(forms.Form):
|
||||
q = forms.CharField(max_length=128, label=_('Search terms'), required=False)
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
{% extends 'appearance/base.html' %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if form %}
|
||||
{% with 'get' as submit_method %}
|
||||
{% with form_title as title %}
|
||||
{% include 'appearance/generic_form_subtemplate.html' %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% if query_string %}
|
||||
{% include 'appearance/generic_list_subtemplate.html' %}
|
||||
{% endif %}
|
||||
{% if not form and not query_string %}
|
||||
{% include 'appearance/generic_list_subtemplate.html' %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -5,13 +5,14 @@ from django.conf.urls import patterns, url
|
||||
from .api_views import (
|
||||
APIRecentSearchListView, APIRecentSearchView, APISearchView
|
||||
)
|
||||
from .views import AdvancedSearchView, ResultsView, SearchView
|
||||
|
||||
urlpatterns = patterns(
|
||||
'dynamic_search.views',
|
||||
url(r'^$', 'search', name='search'),
|
||||
url(r'^advanced/$', 'search', {'advanced': True}, 'search_advanced'),
|
||||
url(r'^$', SearchView.as_view(), name='search'),
|
||||
url(r'^advanced/$', AdvancedSearchView.as_view(), name='search_advanced'),
|
||||
url(r'^again/$', 'search_again', name='search_again'),
|
||||
url(r'^results/$', 'results', name='results'),
|
||||
url(r'^results/$', ResultsView.as_view(), name='results'),
|
||||
)
|
||||
|
||||
api_urls = patterns(
|
||||
|
||||
@@ -10,6 +10,8 @@ from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.generics import SimpleView, SingleObjectListView
|
||||
|
||||
from .classes import SearchModel
|
||||
from .forms import SearchForm, AdvancedSearchForm
|
||||
from .settings import setting_limit, setting_show_object_type
|
||||
@@ -17,82 +19,69 @@ from .settings import setting_limit, setting_show_object_type
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def results(request, extra_context=None):
|
||||
document_search = SearchModel.get('documents.Document')
|
||||
|
||||
context = {
|
||||
'query_string': request.GET,
|
||||
'hide_links': True,
|
||||
'search_results_limit': setting_limit.value,
|
||||
}
|
||||
|
||||
if request.GET:
|
||||
# Only do search if there is user input, otherwise just render
|
||||
# the template with the extra_context
|
||||
|
||||
queryset, ids, timedelta = document_search.search(request.GET, request.user)
|
||||
|
||||
# Update the context with the search results
|
||||
context.update({
|
||||
'object_list': queryset,
|
||||
'time_delta': timedelta,
|
||||
'title': _('Results'),
|
||||
})
|
||||
|
||||
if extra_context:
|
||||
context.update(extra_context)
|
||||
|
||||
if setting_show_object_type.value:
|
||||
context.update({
|
||||
'extra_columns': [
|
||||
{
|
||||
'name': _('Type'),
|
||||
'attribute': lambda x: x._meta.verbose_name[0].upper() + x._meta.verbose_name[1:]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
return render_to_response(
|
||||
'dynamic_search/search_results.html', context,
|
||||
context_instance=RequestContext(request)
|
||||
)
|
||||
|
||||
|
||||
def search(request, advanced=False):
|
||||
document_search = SearchModel.get('documents.Document')
|
||||
|
||||
if advanced:
|
||||
form = AdvancedSearchForm(
|
||||
data=request.GET, search_model=document_search
|
||||
)
|
||||
return render_to_response(
|
||||
'appearance/generic_form.html',
|
||||
{
|
||||
'form': form,
|
||||
'title': _('Advanced search'),
|
||||
'form_action': reverse('search:results'),
|
||||
'submit_method': 'GET',
|
||||
'search_results_limit': setting_limit.value,
|
||||
'submit_label': _('Search'),
|
||||
'submit_icon': 'fa fa-search',
|
||||
}, context_instance=RequestContext(request)
|
||||
)
|
||||
else:
|
||||
extra_context = {
|
||||
'submit_label': _('Search'),
|
||||
'submit_icon': 'fa fa-search',
|
||||
'form_title': _('Search'),
|
||||
'form_hide_required_text': True,
|
||||
class ResultsView(SingleObjectListView):
|
||||
def get_extra_context(self):
|
||||
context = {
|
||||
'hide_links': True,
|
||||
'search_results_limit': setting_limit.value,
|
||||
'title': _('Search results'),
|
||||
}
|
||||
if ('q' in request.GET) and request.GET['q'].strip():
|
||||
query_string = request.GET['q']
|
||||
form = SearchForm(initial={'q': query_string})
|
||||
extra_context.update({'form': form})
|
||||
return results(request, extra_context=extra_context)
|
||||
|
||||
if setting_show_object_type.value:
|
||||
context.update({
|
||||
'extra_columns': [
|
||||
{
|
||||
'name': _('Type'),
|
||||
'attribute': lambda x: x._meta.verbose_name[0].upper() + x._meta.verbose_name[1:]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
return context
|
||||
|
||||
def get_queryset(self):
|
||||
document_search = SearchModel.get('documents.Document')
|
||||
|
||||
if self.request.GET:
|
||||
# Only do search if there is user input, otherwise just render
|
||||
# the template with the extra_context
|
||||
|
||||
queryset, ids, timedelta = document_search.search(self.request.GET, self.request.user)
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
class SearchView(SimpleView):
|
||||
template_name = 'appearance/generic_form.html'
|
||||
title = _('Search')
|
||||
|
||||
def get_form(self):
|
||||
if ('q' in self.request.GET) and self.request.GET['q'].strip():
|
||||
query_string = self.request.GET['q']
|
||||
return SearchForm(initial={'q': query_string})
|
||||
else:
|
||||
form = SearchForm()
|
||||
extra_context.update({'form': form})
|
||||
return results(request, extra_context=extra_context)
|
||||
return SearchForm()
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'form': self.get_form(),
|
||||
'form_action': reverse('search:results'),
|
||||
'submit_icon': 'fa fa-search',
|
||||
'submit_label': _('Search'),
|
||||
'submit_method': 'GET',
|
||||
'title': self.title,
|
||||
}
|
||||
|
||||
|
||||
class AdvancedSearchView(SearchView):
|
||||
title = _('Advanced search')
|
||||
|
||||
def get_form(self):
|
||||
document_search = SearchModel.get('documents.Document')
|
||||
|
||||
return AdvancedSearchForm(
|
||||
data=self.request.GET, search_model=document_search
|
||||
)
|
||||
|
||||
|
||||
def search_again(request):
|
||||
@@ -100,5 +89,5 @@ def search_again(request):
|
||||
request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))
|
||||
).query
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (reverse('search:search_advanced'), query)
|
||||
'{}?{}'.format(reverse('search:search_advanced'), query)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user