Пример #1
0
class CustomRegistrationForm(RegistrationForm):
    username = forms.RegexField(regex=r'^\w+$',
                                max_length=30,
                                label=_('Username'),
                                error_messages={
                                    'invalid':
                                    _('A username must contain letters, '
                                      'numbers, or underscores')
                                })
    timezone = ChoiceField(label=_('Timezone'),
                           choices=TIMEZONE,
                           widget=Select2Widget(attrs={'style': 'width:100%'}))
    language = ModelChoiceField(
        queryset=Language.objects.all(),
        label=_('Preferred language'),
        empty_label=None,
        widget=Select2Widget(attrs={'style': 'width:100%'}))
    organizations = SortedMultipleChoiceField(
        queryset=Organization.objects.filter(is_open=True),
        label=_('Organizations'),
        required=False,
        widget=Select2MultipleWidget(attrs={'style': 'width:100%'}))

    if newsletter_id is not None:
        newsletter = forms.BooleanField(label=_('Subscribe to newsletter?'),
                                        initial=True,
                                        required=False)

    if ReCaptchaField is not None:
        captcha = ReCaptchaField(widget=ReCaptchaWidget())

    def clean_email(self):
        if User.objects.filter(email=self.cleaned_data['email']).exists():
            raise forms.ValidationError(
                gettext(
                    'The email address "%s" is already taken. Only one registration '
                    'is allowed per address.') % self.cleaned_data['email'])
        if '@' in self.cleaned_data['email']:
            domain = self.cleaned_data['email'].split('@')[-1].lower()
            if (domain in settings.BAD_MAIL_PROVIDERS
                    or any(regex.match(domain) for regex in bad_mail_regex)):
                raise forms.ValidationError(
                    gettext(
                        'Your email provider is not allowed due to history of abuse. '
                        'Please use a reputable email provider.'))
        return self.cleaned_data['email']
Пример #2
0
 class Meta:
     model = Profile
     fields = [
         'name', 'about', 'organizations', 'timezone', 'language',
         'ace_theme', 'user_script', 'math_engine'
     ]
     widgets = {
         'name':
         TextInput(attrs={'style': 'width:100%; box-sizing:border-box'}),
         'user_script': AceWidget(theme='github'),
         'timezone': Select2Widget(attrs={'style': 'width:100%'}),
         'language': Select2Widget(attrs={'style': 'width:100%'}),
         'ace_theme': Select2Widget(attrs={'style': 'width:100%'}),
         'math_engine': Select2Widget(attrs={'style': 'width:100%'}),
         'about': MartorWidget,
         'organizations':
         Select2MultipleWidget(attrs={'style': 'width:100%'}),
     }
Пример #3
0
 class Meta:
     widgets = {
         'authors':
         HeavySelect2MultipleWidget(data_view='profile_select2',
                                    attrs={'style': 'width: 100%'}),
         'curators':
         HeavySelect2MultipleWidget(data_view='profile_select2',
                                    attrs={'style': 'width: 100%'}),
         'testers':
         HeavySelect2MultipleWidget(data_view='profile_select2',
                                    attrs={'style': 'width: 100%'}),
         'banned_users':
         HeavySelect2MultipleWidget(data_view='profile_select2',
                                    attrs={'style': 'width: 100%'}),
         'types':
         Select2MultipleWidget(attrs={'style': 'width: 100%'}),
         'group':
         Select2Widget,
         'description':
         AdminMartorWidget,
     }
Пример #4
0
 class Meta:
     model = Organization
     fields = ['about', 'logo_override_image', 'admins']
     widgets = {'admins': Select2MultipleWidget(attrs={'style': 'width: 200px'})}
     if HeavyPreviewPageDownWidget is not None:
         widgets['about'] = HeavyPreviewPageDownWidget(preview=reverse_lazy('organization_preview'))
Пример #5
0
 class Meta:
     model = Organization
     fields = ['about', 'admins']
     widgets = {'admins': Select2MultipleWidget()}
     if HeavyPreviewPageDownWidget is not None:
         widgets['about'] = HeavyPreviewPageDownWidget(preview=reverse_lazy('organization_preview'))