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']
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%'}), }
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, }
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'))
class Meta: model = Organization fields = ['about', 'admins'] widgets = {'admins': Select2MultipleWidget()} if HeavyPreviewPageDownWidget is not None: widgets['about'] = HeavyPreviewPageDownWidget(preview=reverse_lazy('organization_preview'))