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'))
示例#4
0
 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'))
示例#5
0
 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'))
示例#6
0
 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('', ''))
示例#7
0
 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('', ''))
示例#8
0
 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('', ''))
示例#9
0
 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('', ''))
示例#10
0
 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('', ''))
示例#11
0
 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('', ''))
示例#12
0
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"
            }
            """)
示例#13
0
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',)
示例#14
0
 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('', ''))
示例#15
0
 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
示例#17
0
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', )
示例#18
0
 def test_css_class_addition(self):
     """
     Adds to the given css class
     """
     widget = RichTextWidget({'class': 'somethingelse'})
     self.assertEqual(widget.attrs['class'],
                      'somethingelse djrichtextfield')
示例#19
0
文件: forms.py 项目: wall-e-08/qturbo
class BlogForm(forms.ModelForm):
    content = forms.CharField(widget=RichTextWidget())

    class Meta:
        model = Blog
        exclude = [
            'status',
        ]
示例#20
0
文件: forms.py 项目: wall-e-08/qturbo
class ArticleForm(forms.ModelForm):
    content = forms.CharField(widget=RichTextWidget())

    class Meta:
        model = Article
        exclude = [
            'status',
        ]
示例#21
0
文件: forms.py 项目: wall-e-08/qturbo
class ItemTwoColumnForm(forms.ModelForm):
    content = forms.CharField(widget=RichTextWidget())

    url = forms.ChoiceField(choices=get_all_urls)

    class Meta:
        model = ItemTwoColumn
        fields = '__all__'
示例#22
0
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'
        ]
示例#23
0
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',
        })
    )
示例#24
0
class PartnersPaymentForm(forms.ModelForm):
    notes = forms.CharField(widget=RichTextWidget())

    class Meta:
        model = PartnersPaymentNotes
        fields = (
            'name',
            'amount',
            'notes',
        )
示例#25
0
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'
        ]
示例#26
0
文件: forms.py 项目: wall-e-08/qturbo
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',
        ]
示例#27
0
文件: forms.py 项目: wall-e-08/qturbo
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__'
示例#28
0
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.
        """
    )
示例#30
0
class CommentForm(forms.ModelForm):
    content = forms.CharField(widget=RichTextWidget(field_settings='mini'))
示例#31
0
 def setUp(self):
     self.widget = RichTextWidget()
示例#32
0
class CommentForm(forms.ModelForm):
    content = forms.CharField(widget=RichTextWidget(field_settings='mini'))

    class Meta:
        model = Comment
        exclude = ['post']
示例#33
0
 def test_attrs(self):
     """
     Takes attrs into account
     """
     widget = RichTextWidget({'cols': 10})
     self.assertEqual(widget.attrs['cols'], 10)
示例#34
0
 def test_css_class(self):
     """
     Has the correct css class set
     """
     self.assertEqual(RichTextWidget().attrs['class'], 'djrichtextfield')
示例#35
0
class NewCommentForm(forms.ModelForm):
    text = forms.CharField(widget=RichTextWidget())

    class Meta:
        model = Comment
        fields = ['text']
示例#36
0
 def formfield(self, **kwargs):
     kwargs['widget'] = RichTextWidget(field_settings=self.field_settings,
                                       sanitizer=self.sanitizer)
     return super(RichTextField, self).formfield(**kwargs)
示例#37
0
    def __init__(self, *args, **kwargs):
        super(FAQAdminForm, self).__init__(*args, **kwargs)

        self.fields['answer'].widget = RichTextWidget(
            field_settings='advanced')