def test_init_sanitizer_is_used_by_value_from_datadict(self): """ Sanitizer passed on widget initialisation is used """ widget = RichTextWidget(sanitizer=lambda value: value + 'baz') self.assertEqual( 'barbaz', widget.value_from_datadict({'baz': 'bar'}, {}, 'baz'))
def test_value_from_datadict_sanitizes_value(self): """ Value returned by value_from_datadict is sanitized """ widget = RichTextWidget() self.assertEqual( 'foobar', widget.value_from_datadict({'baz': 'bar'}, {}, 'baz'))
def test_value_from_datadict_handles_none(self): """ value_from_datadict doesn't sanitize None values """ widget = RichTextWidget() self.assertEqual( None, widget.value_from_datadict({}, {}, 'baz'))
def test_value_from_datadict_sanitizes_value(self): """ Value returned by value_from_datadict is sanitized """ widget = RichTextWidget() self.assertEqual('foobar', widget.value_from_datadict({'baz': 'bar'}, {}, 'baz'))
def test_init_sanitizer_is_used_by_value_from_datadict(self): """ Sanitizer passed on widget initialisation is used """ widget = RichTextWidget(sanitizer=lambda value: value + 'baz') self.assertEqual('barbaz', widget.value_from_datadict({'baz': 'bar'}, {}, 'baz'))
def test_render_with_missing_profile(self): """ The field gets rendered without a data attribute. """ widget = RichTextWidget(field_settings='missing') expected = ('<div class="field-box">' '<textarea class="djrichtextfield" cols="40"' ' name="" rows="10">\r\n</textarea>' '</div>') self.assertHTMLEqual(expected, widget.render('', ''))
def test_render(self): """ Test that the rendered textarea is surrounded with a div and doesn't include any settings. """ widget = RichTextWidget() expected = ('<div class="field-box">' '<textarea class="djrichtextfield" cols="40"' ' name="" rows="10">\r\n</textarea>' '</div>') self.assertHTMLEqual(expected, widget.render('', ''))
def test_render_with_profile(self): """ The field includes the correct data attribute. """ widget = RichTextWidget(field_settings='simple') config = json.dumps(self.config['profiles']['simple']) expected = ('<div class="field-box">' '<textarea class="djrichtextfield" cols="40"' ' data-field-settings="{0}"' ' name="" rows="10">\r\n</textarea>' '</div>'.format(escape(config))) self.assertHTMLEqual(expected, widget.render('', ''))
class ProblemCreateForm(forms.ModelForm): class Meta: model = MultipleChoiceQuestion fields = ('title', 'token_value', 'difficulty', 'text', 'answer', 'tutorial', 'category', 'variables', 'choices') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['category'].widget.attrs.update({'class': 'form-control'}) self.fields['difficulty'].widget.attrs.update( {'class': 'form-control'}) title = forms.CharField(widget=TextInput(attrs={'class': 'form-control'})) token_value = forms.IntegerField(widget=NumberInput( attrs={'class': 'form-control'})) text = forms.CharField(label='Statement', widget=RichTextWidget(field_settings='advanced')) answer = forms.CharField(widget=Textarea(attrs={'class': 'form-control'})) tutorial = forms.CharField(widget=RichTextWidget( field_settings='advanced')) variables = forms.CharField(widget=JSONEditor(), help_text=""" It should be an array with each element a set of variables to choose. A valid example: [ { "x" : 1, "y" : 2, }, { "x" : 5, "y" : 8, } ] """) choices = forms.CharField(widget=JSONEditor(), help_text=""" It should be an object of choices. A valid example: { "a" : "{x} is odd and {y} is odd", "b" : "{x} is even and {y} is odd", "c" : "{x} is odd and {y} is even", "d" : "{x} is even and {y} is even" } """)
class ActivityForm(forms.ModelForm): # club = ModelChoiceField(label='舉辦單位', queryset=None) begin = forms.DateTimeField(label="活動起始日", input_formats=[ '%Y/%m/%d %H:%M'], widget=XDSoftDateTimePickerInput()) end = forms.DateTimeField(label="活動終止日", input_formats=[ '%Y/%m/%d %H:%M'], widget=XDSoftDateTimePickerInput()) deadline = forms.DateTimeField(label='報名截止時日', input_formats=[ '%Y/%m/%d %H:%M'], widget=XDSoftDateTimePickerInput()) principal = ModelChoiceField(label='活動負責人', queryset=None) content = forms.CharField(label='內容', widget=RichTextWidget()) site = forms.CharField(label='場地') contact = forms.CharField(label='聯絡方式', widget=RichTextWidget()) fee = forms.IntegerField(label='參加費用',) meal = forms.BooleanField(label='是否供餐',) insure = forms.BooleanField(label='是否有保險',) note = forms.CharField(label='備註', widget=RichTextWidget()) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super(ActivityForm, self).__init__(*args, **kwargs) def get_all_member(self): membersets = Member.objects.filter(user=self.request.user) return membersets def get_all_club(self): clubsets = Club.objects.filter(member__in=get_all_member(self)) return clubsets try: self.fields['club'].queryset = get_all_club(self) self.fields['principal'].queryset = get_all_member(self) except: # print(get_all_club(self)) raise ValueError('activity_mgt.forms.py crash: choice club') class Meta: model = Activity fields = ['club', 'begin', 'end', 'deadline', 'principal', 'content', 'site', 'contact', 'fee', 'meal', 'insure', 'note',] exclude = ('author',)
def test_render_with_settings(self): """ The field includes the correct data attribute. """ settings = {'foo': False} widget = RichTextWidget(field_settings=settings) config = json.dumps(settings) expected = ('<div class="{0}">' '<textarea class="djrichtextfield" cols="40"' ' data-field-settings="{1}"' ' name="" rows="10">\r\n</textarea>' '</div>'.format(self.container_class, escape(config))) self.assertHTMLEqual(expected, widget.render('', ''))
class ChoiceForm(forms.Form): text = forms.CharField(label='Answer', widget=RichTextWidget(field_settings='basic')) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.empty_permitted = False
class AnnouncementForm(forms.ModelForm): # 社團公告發布 club = ModelChoiceField(label='公告單位', queryset=None) title = forms.CharField(label='標題') contents = forms.CharField(label='內容', widget=RichTextWidget()) due = forms.DateTimeField(label="到期日", input_formats=['%Y/%m/%d %H:%M'], widget=XDSoftDateTimePickerInput()) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super(AnnouncementForm, self).__init__(*args, **kwargs) def get_all_club(self): membersets = Member.objects.filter(user=self.request.user) clubsets = Club.objects.filter(member__in=membersets) return clubsets try: self.fields['club'].queryset = get_all_club(self) except: # print(get_all_club(self)) raise ValueError('announcement_mgt.forms.py crash: choice club') class Meta: model = Announcement fields = ['club', 'title', 'contents', 'due'] exclude = ('author', )
def test_css_class_addition(self): """ Adds to the given css class """ widget = RichTextWidget({'class': 'somethingelse'}) self.assertEqual(widget.attrs['class'], 'somethingelse djrichtextfield')
class BlogForm(forms.ModelForm): content = forms.CharField(widget=RichTextWidget()) class Meta: model = Blog exclude = [ 'status', ]
class ArticleForm(forms.ModelForm): content = forms.CharField(widget=RichTextWidget()) class Meta: model = Article exclude = [ 'status', ]
class ItemTwoColumnForm(forms.ModelForm): content = forms.CharField(widget=RichTextWidget()) url = forms.ChoiceField(choices=get_all_urls) class Meta: model = ItemTwoColumn fields = '__all__'
class NewActionItemForm(forms.ModelForm): description = forms.CharField(widget=RichTextWidget()) class Meta: model = ActionItem fields = [ 'title', 'description', 'story_points', 'status', 'completion_date_proj', 'completion_date_actual' ]
class ProblemCreateForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['difficulty'].widget.attrs.update({'class': 'form-control'}) self.fields['difficulty'].initial = "EASY" title = forms.CharField( label="Question Name", widget=TextInput(attrs={ 'class': 'form-control' }) ) text = forms.CharField( label='Question', widget=RichTextWidget(field_settings='advanced') ) category = forms.ModelChoiceField( required=True, queryset=QuestionCategory.objects.filter(parent__isnull=False).all(), widget=widgets.Select(attrs={ 'class': 'form-control', }) ) answer = forms.CharField( initial="", widget=forms.HiddenInput(attrs={ 'class': 'form-control', }) ) variables = JSONFormField( initial='[]', label='', widget=JSONEditor( schema=render_to_string('schemas/variables.json'), doc_url='/docs/usage/variables.html', ), help_text=""" If you are not using variables, please don't add any variables and delete the existing ones. """ ) event = forms.ModelChoiceField( label="Type", required=False, queryset=Event.objects.all(), widget=widgets.Select(attrs={ 'class': 'form-control', }) )
class PartnersPaymentForm(forms.ModelForm): notes = forms.CharField(widget=RichTextWidget()) class Meta: model = PartnersPaymentNotes fields = ( 'name', 'amount', 'notes', )
class NewProjectForm(forms.ModelForm): description = forms.CharField(widget=RichTextWidget()) class Meta: model = Project fields = [ 'title', 'description', 'impact', 'status', 'start_date_proj', 'start_date_actual', 'completion_date_proj', 'completion_date_actual' ]
class PageForm(forms.ModelForm): content = forms.CharField( widget=RichTextWidget()) # RichTextWidget(field_settings='basic') template_file = forms.ChoiceField( choices=get_distinct_page_template_file_list) # content.widget.field_settings = {'your': 'custom', 'settings': True} class Meta: model = Page exclude = [ 'status', ]
class ItemListForm(forms.ModelForm): # TODO: need to make url drop-down from pages content = forms.CharField( widget=RichTextWidget(), required=False, ) url = forms.ChoiceField(choices=get_all_urls) def __init__(self, *args, **kwargs): super(ItemListForm, self).__init__(*args, **kwargs) self.fields['icon'].empty_label = None class Meta: model = ItemList fields = '__all__'
class CreateForm4(forms.Form): CHOICES = [('En', 'English'), ('Pt', 'Portugese'), ('Est', 'Estonian')] questionnaire_language = forms.CharField( widget=forms.Select(choices=CHOICES, attrs={'class': 'form-control'})) title = forms.CharField( initial="Assessment of {PRODUCT_NAME}", widget=forms.TextInput(attrs={'class': 'form-control'}), max_length=100) subtitle = forms.CharField( initial="Welcome to the assessment of {PRODUCT_NAME}", widget=forms.TextInput(attrs={'class': 'form-control'}), max_length=100) paragraph = forms.CharField( required=False, widget=RichTextWidget(), help_text=mark_safe( 'You can use following variables to use in title, subtitle and paragraph: <br/>{PROJECT_NAME} - Name of project <br/> {PRODUCT_NAME} - Name of product<br/> {SURVEY_NAME} - Name of survey <br/> {TODAY} - for today date.' ))
class ProblemCreateForm(forms.ModelForm): def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['difficulty'].widget.attrs.update({'class': 'form-control'}) self.fields['difficulty'].initial = "EASY" self.fields['course'].queryset = CanvasCourse.objects.filter(instructor=user).all() if 'course' in self.data and self.data['course']: course_id = int(self.data.get('course', -1)) elif 'instance' in kwargs and kwargs.get('instance').course: course_id = kwargs.get('instance').course.pk else: course_id = None if course_id: self.fields['event'].queryset = Event.objects.filter(course_id=course_id).all() title = forms.CharField( label="Question Name", widget=TextInput(attrs={ 'class': 'form-control' }) ) text = forms.CharField( label='Question', widget=RichTextWidget(field_settings='advanced') ) category = forms.ModelChoiceField( required=True, queryset=QuestionCategory.objects.filter(parent__isnull=False).all(), widget=widgets.Select(attrs={ 'class': 'form-control', }) ) course = forms.ModelChoiceField( label="Course", required=False, queryset=CanvasCourse.objects.none(), widget=widgets.Select(attrs={ 'class': 'form-control', }) ) event = forms.ModelChoiceField( label="Event Name", required=False, queryset=Event.objects.none(), widget=DynamicSelect(attrs={ 'class': 'form-control', 'options_url': reverse_lazy('canvas:course_events_options'), 'options_parameter_name': 'course_id', 'options_parent_id': 'id_course', # TODO: find a way not to hard code this }) ) answer = forms.CharField( initial="", widget=forms.HiddenInput(attrs={ 'class': 'form-control', }) ) variables = JSONFormField( initial='[]', label='', widget=JSONEditor( schema=render_to_string('schemas/variables.json'), doc_url='/docs/usage/variables.html', ), help_text=""" If you are not using variables, please don't add any variables and delete the existing ones. """ )
class CommentForm(forms.ModelForm): content = forms.CharField(widget=RichTextWidget(field_settings='mini'))
def setUp(self): self.widget = RichTextWidget()
class CommentForm(forms.ModelForm): content = forms.CharField(widget=RichTextWidget(field_settings='mini')) class Meta: model = Comment exclude = ['post']
def test_attrs(self): """ Takes attrs into account """ widget = RichTextWidget({'cols': 10}) self.assertEqual(widget.attrs['cols'], 10)
def test_css_class(self): """ Has the correct css class set """ self.assertEqual(RichTextWidget().attrs['class'], 'djrichtextfield')
class NewCommentForm(forms.ModelForm): text = forms.CharField(widget=RichTextWidget()) class Meta: model = Comment fields = ['text']
def formfield(self, **kwargs): kwargs['widget'] = RichTextWidget(field_settings=self.field_settings, sanitizer=self.sanitizer) return super(RichTextField, self).formfield(**kwargs)
def __init__(self, *args, **kwargs): super(FAQAdminForm, self).__init__(*args, **kwargs) self.fields['answer'].widget = RichTextWidget( field_settings='advanced')