def get_form(self, request, obj=None, **kwargs): form = super().get_form(request, obj, **kwargs) for form_field in self.text_input_form_fields: form.base_fields[form_field].widget = admin_widgets.AdminTextInputWidget() for form_field in self.url_input_form_fields: form.base_fields[form_field].widget = admin_widgets.AdminURLFieldWidget() return form
def test_render(self): w = widgets.AdminURLFieldWidget() self.assertHTMLEqual( w.render('test', ''), '<input class="vURLField" name="test" type="url" />') self.assertHTMLEqual( w.render('test', 'http://example.com'), '<p class="url">Currently:<a href="http://example.com">http://example.com</a><br />Change:<input class="vURLField" name="test" type="url" value="http://example.com" /></p>' )
def __init__(self, *args, **kwargs): super(QuizChoiceInLineForm, self).__init__(*args, **kwargs) self.fields['choice'].widget = widgets.AdminTextareaWidget({ _('class'): _('form-control'), _('placeholder'): _('One of the quiz choices') }) self.fields['Quiz'].widget = widgets.AdminURLFieldWidget({ _('class'): _('form-control'), _('placeholder'): _('Lecture Slide URL') }) self.fields['correct'].widget = widgets.AdminURLFieldWidget({ _('class'): _('form-control'), _('placeholder'): _('A generic Document will be provided if left empty') })
def __init__(self, *args, **kwargs): super(LectureAdminForm, self).__init__(*args, **kwargs) self.fields['title'].widget = widgets.AdminTextInputWidget({ _('class'): _('form-control'), _('placeholder'): _('Title of the Lecture') }) self.fields['collab_doc'].widget = widgets.AdminURLFieldWidget({ _('class'): _('form-control'), _('placeholder'): _('A generic Document will be provided if left empty') })
def test_render_quoting(self): w = widgets.AdminURLFieldWidget() self.assertHTMLEqual( conditional_escape( w.render('test', 'http://example.com/<sometag>some text</sometag>')), '<p class="url">Currently:<a href="http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E">http://example.com/<sometag>some text</sometag></a><br />Change:<input class="vURLField" name="test" type="text" value="http://example.com/<sometag>some text</sometag>" /></p>' ) self.assertHTMLEqual( conditional_escape( w.render( 'test', 'http://example-äüö.com/<sometag>some text</sometag>')), '<p class="url">Currently:<a href="http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E">http://example-äüö.com/<sometag>some text</sometag></a><br />Change:<input class="vURLField" name="test" type="text" value="http://example-äüö.com/<sometag>some text</sometag>" /></p>' )
def test_render_quoting(self): # WARNING: Don't use assertHTMLEqual in that testcase! # assertHTMLEqual will get rid of some escapes which are tested here! w = widgets.AdminURLFieldWidget() self.assertEqual( w.render('test', 'http://example.com/<sometag>some text</sometag>'), '<p class="url">Currently: <a href="http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E">http://example.com/<sometag>some text</sometag></a><br />Change: <input class="vURLField" name="test" type="url" value="http://example.com/<sometag>some text</sometag>" /></p>' ) self.assertEqual( w.render('test', 'http://example-äüö.com/<sometag>some text</sometag>'), '<p class="url">Currently: <a href="http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E">http://example-äüö.com/<sometag>some text</sometag></a><br />Change: <input class="vURLField" name="test" type="url" value="http://example-äüö.com/<sometag>some text</sometag>" /></p>' ) self.assertEqual( w.render('test', 'http://www.example.com/%C3%A4"><script>alert("XSS!")</script>"'), '<p class="url">Currently: <a href="http://www.example.com/%C3%A4%22%3E%3Cscript%3Ealert(%22XSS!%22)%3C/script%3E%22">http://www.example.com/%C3%A4"><script>alert("XSS!")</script>"</a><br />Change: <input class="vURLField" name="test" type="url" value="http://www.example.com/%C3%A4"><script>alert("XSS!")</script>"" /></p>' )
def test_render_idn(self): w = widgets.AdminURLFieldWidget() self.assertHTMLEqual( conditional_escape(w.render('test', 'http://example-äüö.com')), '<p class="url">Currently:<a href="http://xn--example--7za4pnc.com">http://example-äüö.com</a><br />Change:<input class="vURLField" name="test" type="text" value="http://example-äüö.com" /></p>' )