def test_non_string_input(self): # Filters shouldn't break if passed non-strings self.assertEqual(addslashes(123), '123') self.assertEqual(linenumbers(123), '1. 123') self.assertEqual(lower(123), '123') self.assertEqual(make_list(123), ['1', '2', '3']) self.assertEqual(slugify(123), '123') self.assertEqual(title(123), '123') self.assertEqual(truncatewords(123, 2), '123') self.assertEqual(upper(123), '123') self.assertEqual(urlencode(123), '123') self.assertEqual(urlize(123), '123') self.assertEqual(urlizetrunc(123, 1), '123') self.assertEqual(wordcount(123), 1) self.assertEqual(wordwrap(123, 2), '123') self.assertEqual(ljust('123', 4), '123 ') self.assertEqual(rjust('123', 4), ' 123') self.assertEqual(center('123', 5), ' 123 ') self.assertEqual(center('123', 6), ' 123 ') self.assertEqual(cut(123, '2'), '13') self.assertEqual(escape(123), '123') self.assertEqual(linebreaks_filter(123), '<p>123</p>') self.assertEqual(linebreaksbr(123), '123') self.assertEqual(removetags(123, 'a'), '123') self.assertEqual(striptags(123), '123')
def test_addslashes(self): self.assertEqual(addslashes('"double quotes" and \'single quotes\''), '\\"double quotes\\" and \\\'single quotes\\\'') self.assertEqual(addslashes(r'\ : backslashes, too'), '\\\\ : backslashes, too')
} else: # Fall back to friendly date/time FORM_FIELD_OVERRIDES = { models.DateField: {'widget': FriendlyDateInput}, models.TimeField: {'widget': FriendlyTimeInput, 'form_class': FriendlyTimeField}, } WIDGET_JS = { FriendlyDateInput: (lambda id: "initFriendlyDateChooser(fixPrefix('%s'));" % id), FriendlyTimeInput: (lambda id: "initFriendlyTimeChooser(fixPrefix('%s'));" % id), LocalizedDateInput: (lambda id: "initLocalizedDateChooser(fixPrefix('%s'));" % id), LocalizedTimeInput: (lambda id: "initLocalizedTimeChooser(fixPrefix('%s'));" % id), RichTextArea: (lambda id: "makeRichTextEditable(fixPrefix('%s'));" % id), TagWidget: ( lambda id: "initTagField(fixPrefix('%s'), '%s');" % ( id, addslashes(reverse('wagtailadmin_tag_autocomplete')) ) ), } # Callback to allow us to override the default form fields provided for each model field. def formfield_for_dbfield(db_field, **kwargs): # snarfed from django/contrib/admin/options.py # If we've got overrides for the formfield defined, use 'em. **kwargs # passed to formfield_for_dbfield override the defaults. for klass in db_field.__class__.mro(): if klass in FORM_FIELD_OVERRIDES: kwargs = dict(copy.deepcopy(FORM_FIELD_OVERRIDES[klass]), **kwargs) return db_field.formfield(**kwargs)
def test_non_string_input(self): self.assertEqual(addslashes(123), '123')
from wagtail.wagtailcore.models import Page from wagtail.wagtailcore.fields import RichTextArea from wagtail.wagtailcore.utils import camelcase_to_underscore, resolve_model_string FORM_FIELD_OVERRIDES = {} WIDGET_JS = { forms.DateInput: (lambda id: "initDateChooser(fixPrefix('%s'));" % id), forms.TimeInput: (lambda id: "initTimeChooser(fixPrefix('%s'));" % id), forms.DateTimeInput: (lambda id: "initDateTimeChooser(fixPrefix('%s'));" % id), RichTextArea: (lambda id: "makeRichTextEditable(fixPrefix('%s'));" % id), TagWidget: ( lambda id: "initTagField(fixPrefix('%s'), '%s');" % ( id, addslashes(reverse('wagtailadmin_tag_autocomplete')) ) ), } # Callback to allow us to override the default form fields provided for each model field. def formfield_for_dbfield(db_field, **kwargs): # snarfed from django/contrib/admin/options.py # If we've got overrides for the formfield defined, use 'em. **kwargs # passed to formfield_for_dbfield override the defaults. for klass in db_field.__class__.mro(): if klass in FORM_FIELD_OVERRIDES: kwargs = dict(copy.deepcopy(FORM_FIELD_OVERRIDES[klass]), **kwargs) return db_field.formfield(**kwargs)
def test_quotes(self): self.assertEqual( addslashes('"double quotes" and \'single quotes\''), '\\"double quotes\\" and \\\'single quotes\\\'', )
def test_backslashes(self): self.assertEqual(addslashes(r'\ : backslashes, too'), '\\\\ : backslashes, too')
def render(self, *args, **kwargs): """ Renders the actual ajax widget. """ if len(args) == 1: data = args[0] else: data = args[1] old_init_val = init_val = data if type(data) == int: if hasattr(self, "field"): query_objects = self.field.rel.to.objects objects = query_objects.filter(pk=data) if objects.count() == 1: obj = objects[0] if hasattr(obj, 'ajax_str'): init_val = obj.ajax_str() + " (%s)" % data old_init_val = unicode(obj) else: old_init_val = init_val = unicode(obj) + " (%s)" % data elif isinstance(data, str) or isinstance(data, unicode): pass else: data = init_val = '' fn = str(self.field_name) related_model = self.field.rel.to # espuser hack if related_model == User: model_module = 'esp.users.models' model_name = 'ESPUser' else: model_module = related_model.__module__ model_name = related_model.__name__ if self.shadow_field: shadow_field_javascript = """ $j("#id_%s").val(ui.item.value); """ % (self.shadow_field) else: shadow_field_javascript = "" javascript = """ <script type="text/javascript"> <!-- $j("#id_%s").val("%s"); $j("#id_%s_data").val(%s); $j("#id_%s").autocomplete({ source: function(request, response) { $j.ajax({ url: "/admin/ajax_autocomplete/", dataType: "json", data: { model_module: "%s", model_name: "%s", ajax_func: "%s", ajax_data: request.term }, success: function(data) { var output = $j.map(data.result, function(item) { return { label: item.ajax_str, value: item.ajax_str, id: item.id, }; }); response(output); } }); }, select: function(event, ui) { $j("#id_%s_data").val(ui.item.id); %s } }); //--> </script>""" % \ (fn, addslashes(init_val), fn, data, fn, model_module, model_name, self.ajax_func or 'ajax_autocomplete', fn, shadow_field_javascript) html = """ <input type="text" id="id_%s" name="%s_raw" value="%s" /> <input type="hidden" id="id_%s_data" name="%s" /> <div class="raw_id_admin"> <a href="../" class="related-lookup" id="lookup_%s" onclick="return showRelatedObjectLookupPopup(this);"> <img src="/media/admin/img/admin/selector-search.gif" border="0" width="16" height="16" alt="Lookup" /></a> <strong>%s</strong> </div> """ % (fn, fn, addslashes(data or ''), fn, fn, fn, old_init_val) # Add HTML for shadow field if desired if self.shadow_field: html += '<input type="hidden" id="id_%s" name="%s" value="%s"/>' % ( self.shadow_field, self.shadow_field, old_init_val) return mark_safe(html + javascript)
def test_backslashes(self): self.assertEqual(addslashes(r"\ : backslashes, too"), "\\\\ : backslashes, too")
def test_quotes(self): self.assertEqual( addslashes("\"double quotes\" and 'single quotes'"), "\\\"double quotes\\\" and \\'single quotes\\'", )
def input(self, _in, out, **kw): name = self.get_name(kw['source_path']) content = addslashes(_in.read().replace('\n', '')) str = u"\n$templateCache.put(\"{name}\",\"{content}\");".format(name=name, content=content) out.write(str)