|
30 | 30 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
31 | 31 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
32 | 32 |
|
33 | | -import datetime, re |
| 33 | +import re |
| 34 | +import datetime |
34 | 35 |
|
35 | 36 | from django import forms |
36 | 37 | from django.conf import settings |
37 | 38 | from django.core.cache import cache |
38 | 39 | from django.core.urlresolvers import reverse as urlreverse |
39 | 40 | from django.db.models import Q |
40 | | -from django.http import Http404, HttpResponseBadRequest, HttpResponse, HttpResponseRedirect |
| 41 | +from django.http import Http404, HttpResponseBadRequest, HttpResponse, HttpResponseRedirect, QueryDict |
41 | 42 | from django.shortcuts import render |
42 | 43 | from django.utils.cache import _generate_cache_key |
43 | 44 |
|
|
46 | 47 | from ietf.doc.models import ( Document, DocHistory, DocAlias, State, |
47 | 48 | LastCallDocEvent, IESG_SUBSTATE_TAGS ) |
48 | 49 | from ietf.doc.fields import select2_id_doc_name_json |
| 50 | +from ietf.doc.utils import get_search_cache_key |
49 | 51 | from ietf.group.models import Group |
50 | 52 | from ietf.idindex.index import active_drafts_index_by_group |
51 | 53 | from ietf.name.models import DocTagName, DocTypeName, StreamName |
@@ -164,7 +166,7 @@ def retrieve_search_results(form, all_types=False): |
164 | 166 | # radio choices |
165 | 167 | by = query["by"] |
166 | 168 | if by == "author": |
167 | | - docs = docs.filter(authors__person__name__icontains=query["author"]) |
| 169 | + docs = docs.filter(authors__person__alias__name__icontains=query["author"]) |
168 | 170 | elif by == "group": |
169 | 171 | docs = docs.filter(group__acronym=query["group"]) |
170 | 172 | elif by == "area": |
@@ -197,16 +199,22 @@ def search(request): |
197 | 199 | if not form.is_valid(): |
198 | 200 | return HttpResponseBadRequest("form not valid: %s" % form.errors) |
199 | 201 |
|
200 | | - results = retrieve_search_results(form) |
| 202 | + key = get_search_cache_key(get_params) |
| 203 | + results = cache.get(key) |
| 204 | + if not results: |
| 205 | + results = retrieve_search_results(form) |
| 206 | + cache.set(key, results) |
| 207 | + |
201 | 208 | results, meta = prepare_document_table(request, results, get_params) |
202 | 209 | meta['searching'] = True |
203 | 210 | else: |
204 | 211 | form = SearchForm() |
205 | 212 | results = [] |
206 | 213 | meta = { 'by': None, 'searching': False } |
| 214 | + get_params = QueryDict('') |
207 | 215 |
|
208 | 216 | return render(request, 'doc/search/search.html', { |
209 | | - 'form':form, 'docs':results, 'meta':meta, }, |
| 217 | + 'form':form, 'docs':results, 'meta':meta, 'queryargs':get_params.urlencode() }, |
210 | 218 | ) |
211 | 219 |
|
212 | 220 | def frontpage(request): |
|
0 commit comments