annotate core/widgets.py @ 1037:7e0c3cbd3cda
Fix bad select_related call.
In Django 1.8, select_related now throws an error if you give it an invalid
field. This was happening. Fix that query.
Also noticed an extra query generated in the display_post template. Fixed.
author |
Brian Neal <bgneal@gmail.com> |
date |
Tue, 29 Dec 2015 22:21:42 -0600 |
parents |
678a1a2ef55a |
children |
|
rev |
line source |
gremmie@1
|
1 """
|
gremmie@1
|
2 Various useful widgets for the GPP application.
|
gremmie@1
|
3 """
|
gremmie@1
|
4
|
gremmie@1
|
5 from django import forms
|
gremmie@1
|
6 from django.utils.safestring import mark_safe
|
gremmie@1
|
7 from django.core.urlresolvers import reverse
|
gremmie@1
|
8
|
gremmie@1
|
9
|
gremmie@1
|
10 class AutoCompleteUserInput(forms.TextInput):
|
gremmie@1
|
11
|
gremmie@1
|
12 def render(self, name, value, attrs=None):
|
bgneal@149
|
13 url = reverse('core-ajax_users')
|
gremmie@1
|
14 output = super(AutoCompleteUserInput, self).render(name, value, attrs)
|
bgneal@186
|
15 return output + mark_safe(u"""\
|
gremmie@1
|
16 <script type="text/javascript">
|
bgneal@186
|
17 $(function() {
|
bgneal@186
|
18 var cache = {};
|
bgneal@186
|
19 var cacheSize = 0;
|
bgneal@186
|
20 $("#id_%s").autocomplete({
|
bgneal@186
|
21 delay: 400,
|
bgneal@326
|
22 minLength: 1,
|
bgneal@186
|
23 source: function(request, response) {
|
bgneal@186
|
24 if (cache[request.term]) {
|
bgneal@186
|
25 response(cache[request.term]);
|
bgneal@186
|
26 return;
|
bgneal@186
|
27 }
|
bgneal@186
|
28 $.ajax({
|
bgneal@186
|
29 url: "%s",
|
bgneal@186
|
30 type: "GET",
|
bgneal@186
|
31 data: {
|
bgneal@186
|
32 q: request.term,
|
bgneal@326
|
33 limit: 15
|
bgneal@186
|
34 },
|
bgneal@186
|
35 dataType: "json",
|
bgneal@186
|
36 success: function(data, textStatus) {
|
bgneal@326
|
37 if (cacheSize >= 32) {
|
bgneal@186
|
38 cache = {};
|
bgneal@186
|
39 cacheSize = 0;
|
bgneal@186
|
40 }
|
bgneal@186
|
41 cache[request.term] = data;
|
bgneal@186
|
42 ++cacheSize;
|
bgneal@186
|
43 response(data);
|
bgneal@186
|
44 },
|
bgneal@186
|
45 error: function(xhr, textStatus, ex) {
|
bgneal@186
|
46 alert('Oops, an error occurred. ' + xhr.statusText + ' - ' +
|
bgneal@186
|
47 xhr.responseText);
|
bgneal@186
|
48 }
|
bgneal@186
|
49 });
|
bgneal@186
|
50 }
|
bgneal@186
|
51 });
|
gremmie@1
|
52 });
|
bgneal@186
|
53 </script>""" % (name, url))
|
gremmie@1
|
54
|