Make verse numbers, footnote anchors, themes, dynamic inserts unselectable. Fixes...
[wolnelektury.git] / src / search / fields.py
index 45d8b7e..10afd59 100755 (executable)
@@ -1,10 +1,9 @@
-# -*- coding: utf-8 -*-
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django import forms
-from django.forms.widgets import flatatt
-from django.utils.encoding import smart_unicode
+from django.forms.utils import flatatt
+from django.utils.encoding import smart_text
 from django.utils.safestring import mark_safe
 from json import dumps
 
@@ -15,22 +14,23 @@ class JQueryAutoCompleteWidget(forms.TextInput):
         super(JQueryAutoCompleteWidget, self).__init__(*args, **kwargs)
 
     def render_js(self, field_id, options):
-        return u'$(\'#%s\').autocomplete(%s).result(autocomplete_result_handler);' % (field_id, options)
+        return '$(\'#%s\').autocomplete(%s).result(autocomplete_result_handler);' % (field_id, options)
 
-    def render(self, name, value=None, attrs=None):
-        final_attrs = self.build_attrs(attrs, name=name)
+    def render(self, name, value=None, attrs=None, renderer=None):
+        final_attrs = self.build_attrs(self.attrs, attrs)
+        final_attrs["name"] = name
         if value:
-            final_attrs['value'] = smart_unicode(value)
+            final_attrs['value'] = smart_text(value)
 
-        if not self.attrs.has_key('id'):
+        if 'id' not in self.attrs:
             final_attrs['id'] = 'id_%s' % name
 
-        html = u'''<input type="text" %(attrs)s/>
+        html = '''<input type="text" %(attrs)s/>
             <script type="text/javascript">//<!--
             %(js)s//--></script>
             ''' % {
                 'attrs': flatatt(final_attrs),
-                'js' : self.render_js(final_attrs['id'], self.options),
+                'js': self.render_js(final_attrs['id'], self.options),
             }
 
         return mark_safe(html)
@@ -41,11 +41,13 @@ class JQueryAutoCompleteSearchWidget(JQueryAutoCompleteWidget):
         super(JQueryAutoCompleteSearchWidget, self).__init__(*args, **kwargs)
 
     def render_js(self, field_id, options):
-        return u""
-    
+        return ""
+
 
 class JQueryAutoCompleteField(forms.CharField):
-    def __init__(self, source, options={}, *args, **kwargs):
+    def __init__(self, source, options=None, *args, **kwargs):
+        if options is None:
+            options = {}
         if 'widget' not in kwargs:
             options['source'] = source
             kwargs['widget'] = JQueryAutoCompleteWidget(options)
@@ -54,7 +56,9 @@ class JQueryAutoCompleteField(forms.CharField):
 
 
 class JQueryAutoCompleteSearchField(forms.CharField):
-    def __init__(self, options={}, *args, **kwargs):
+    def __init__(self, options=None, *args, **kwargs):
+        if options is None:
+            options = {}
         if 'widget' not in kwargs:
             kwargs['widget'] = JQueryAutoCompleteSearchWidget(options)