class PostForm(forms.ModelForm): def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["published_date"].widget = DateInput() self.user = user slug = forms.SlugField(label="Permalink", help_text="eg: 'why-i-like-bears'", validators=[link_validator]) published_date = forms.DateTimeField( label="Date", help_text="eg: '2020-05-31' (leave empty to post now)", required=False) content = forms.CharField( label="Content (markdown)", help_text= "<a href='https://simplemde.com/markdown-guide' target='_blank'>Markdown cheatsheet</a> | Add hashtags for categorization, eg: '#bears #blogs #bearblog'", widget=forms.Textarea(attrs={ 'rows': 40, 'cols': 40 }), ) canonical_url = forms.CharField( label="Canonical url (optional)", help_text= "<a href='https://ahrefs.com/blog/canonical-tags/#what-is-a-canonical-tag' target='_blank'>Learn more</a>", required=False) show_in_feed = forms.BooleanField( help_text= f"Make post discoverable at <a href='http://{root()}/discover/' target='_blank'>{root()}/discover</a>", required=False, initial=True) def clean_slug(self): slug = self.cleaned_data['slug'] blog = Blog.objects.get(user=self.user) matching_posts = Post.objects.filter(blog=blog, slug=slug) if self.instance: matching_posts = matching_posts.exclude(pk=self.instance.pk) if matching_posts.exists(): raise ValidationError(f"Post link: '{slug}' already exist.") else: return slug class Meta: model = Post fields = ('title', 'slug', 'canonical_url', 'published_date', 'content', 'is_page', 'publish', 'show_in_feed')
class CategoryForm(forms.ModelForm): name = forms.CharField(max_length=128, help_text="Please enter a category \ name.") views = forms.IntegerField(widget=forms.HiddenInput(), initial=0) likes = forms.IntegerField(widget=forms.HiddenInput(), initial=0) slug = forms.SlugField(widget=forms.HiddenInput(), required=False) class Meta: model = Category fields = ('name', )
class PostForm(ModelForm): post_picture = forms.ImageField(label="Main Photo (Optional):", required=False,widget=forms.FileInput) title = forms.CharField(label="Title of Blog") short_description = forms.CharField(label="A Brief Description about the Blog e.g 'Boy Trauma'",widget=forms.Textarea) main_content = forms.CharField(label="Main Content of The Blog",widget=FroalaEditor) slug = forms.SlugField(label="Url of Blog e.g 'my-first-blog'") #date = forms.DateTimeField(required=False) class Meta: model = Post fields = ['title','short_description','main_content','post_picture','slug','category','tags']
class TeacherCodeRegistrationPasswordResetForm(forms.Form): username = forms.SlugField( label=_('username'), max_length=30, validators=[validators.validate_slug, validate_username_unique]) email = forms.EmailField( label=_('email'), validators=[validators.validate_email, validate_email_unique]) password = forms.CharField(label=_('password'), widget=forms.PasswordInput) hidden_code = forms.CharField(label=_('hidden_code'), widget=forms.HiddenInput)
class SignUpForm(forms.Form): """ Form class for signing up a new user and new account. """ name = forms.CharField(max_length=50, help_text=_("The name of the organization")) slug = forms.SlugField( max_length=50, help_text=_( "The name in all lowercase, suitable for URL identification")) email = forms.EmailField()
class QuestionSetAdminForm(forms.ModelForm): key = forms.SlugField(required=True) class Meta: model = QuestionSet fields = '__all__' def clean(self): QuestionSetUniqueURIValidator(self.instance)(self.cleaned_data) QuestionSetQuestionSetValidator(self.instance)(self.cleaned_data) QuestionSetLockedValidator(self.instance)(self.cleaned_data)
class TestForm(forms.Form): def __init__(self, *args, **kwargs): super(TestForm, self).__init__(*args, **kwargs) self.fields['slug'].required = False self.fields['hidden'].required = False first_name = forms.CharField() last_name = forms.CharField() email = forms.EmailField() slug = forms.SlugField() hidden = forms.CharField(widget=forms.HiddenInput())
class PlaceSearchForm(forms.Form): name = forms.SlugField(allow_unicode=True, required=False) division = forms.IntegerField(required=False) def clean_division(self): data = self.cleaned_data['division'] if data == -1: self.add_error('division', 'شهر وارد شده در پایگاه داده موجود نیست.') return None return data
class OrganizationForm(PostalFormMixin, forms.ModelForm): submit_title = _('Update') slug = forms.SlugField(max_length=254, label=_("Display name"), error_messages={'invalid': _("Display name may only contain letters,"\ " digits and -/_ characters. Spaces are not allowed.")}) street_address = forms.CharField(label=_("Street address"), required=False) phone = forms.CharField(label=_("Phone number"), required=False) class Meta: model = Organization fields = ('slug', 'full_name', 'email', 'phone', 'country', 'region', 'locality', 'street_address', 'postal_code') widgets = {'country': forms.widgets.Select(choices=countries)} def __init__(self, *args, **kwargs): super(OrganizationForm, self).__init__(*args, **kwargs) if kwargs.get('instance', None) is None: self.submit_title = _('Create') if 'country' in self.fields: # Country field is optional. We won't add a State/Province # in case it is omitted. if not ('country' in self.initial and self.initial['country']): self.initial['country'] = Country("US", None) country = self.initial.get('country', None) if self.instance and self.instance.country: country = self.instance.country if not self.fields['country'].initial: self.fields['country'].initial = country.code self.add_postal_region(country=country) if 'is_bulk_buyer' in self.initial: initial = self.initial['is_bulk_buyer'] if self.instance: initial = self.instance.is_bulk_buyer self.fields['is_bulk_buyer'] = forms.BooleanField(required=False, initial=initial, label=mark_safe(_("Enable GroupBuy (<a href=\""\ "https://djaodjin.com/docs/#group-billing\" target=\"_blank\">what is it?</a>)" ))) if 'is_provider' in self.initial: initial = self.initial['is_provider'] if self.instance: initial = self.instance.is_provider self.fields['is_provider'] = forms.BooleanField(required=False, label=_("Enable creation of subscription plans"), initial=initial) if 'extra' in self.initial: initial = self.initial['extra'] if self.instance: initial = self.instance.extra self.fields['extra'] = forms.CharField(required=False, widget=forms.Textarea, label=mark_safe('Notes'), initial=initial)
class RegisterForm(forms.Form): name = forms.CharField(label="Nome", max_length=255) last_name = forms.CharField(label="Sobrenome", max_length=255) user = forms.SlugField(label="Usuário", max_length=255) email = forms.EmailField(label="E-mail") password = forms.CharField(label="Senha", widget=forms.PasswordInput(), max_length=255) password2 = forms.CharField(label="Repita a senha", widget=forms.PasswordInput(), max_length=255)
class UserProfileForm(forms.ModelForm): name = forms.CharField(max_length=UserProfile.max_length, required=False) website = forms.CharField(max_length=UserProfile.max_length, required=False) picture = forms.ImageField(required=False) slug = forms.SlugField(widget=forms.HiddenInput(), required=False) class Meta: model = UserProfile fields = ('name', 'website', 'picture')
class SettingsForm(forms.ModelForm): first_name = forms.CharField(max_length=20,\ widget=forms.TextInput(attrs={'class': 'form-control'}),\ label='Display Name', required=False) password = forms.SlugField(max_length=15,\ widget=forms.PasswordInput(attrs={'class': 'form-control mr-sm-2'}),\ label='Password:'******'first_name', 'password')
class NewBuildingForm(forms.ModelForm): slug = forms.SlugField(widget=forms.TextInput(attrs={'readonly': True}), required=False) class Meta: model = NewBuilding fields = '__all__' widgets = { 'district': SearchableChoiceWidget(widget_title="Выберите район"), 'street': SearchableChoiceWidget(widget_title='Выберите улицу'), 'developer': SearchableChoiceWidget(widget_title='Выберите застройщика'), 'parking': MultipleChoiceWidget(not_comleted_choice=(choices.NOT_COMPLETED)), } class Media: js = ('admin/js/api/micro-districts-filter.js', 'admin/js/api/address-control.js') def clean(self): cleaned_data = super(NewBuildingForm, self).clean() street = cleaned_data.get("street") house_number = cleaned_data.get("house_number") house_letter = cleaned_data.get("house_letter") if street and house_number: if not house_letter: house_letter = '' form_address = "{} {}{}".format(street, house_number, house_letter) old_slug = cleaned_data.get('slug') new_slug = generate_slug(address=form_address) # print("SLUG: "+new_slug) if new_slug != old_slug: if new_slug == 'new': raise ValidationError('Slug не может быть "new".') if new_slug == '': raise ValidationError('Slug не может быть пустым.') try: building = NewBuilding.objects.get(slug=new_slug) # raise ValidationError(mark_safe(('''Такой новострой уже существует.''' # <a href="{0}">Открыть</a>''').format(building.get_absolute_url())? # )) logger.error( '[{}]Попытка создания новостроя {}. Такой новострой существует!' .format(datetime.now().strftime("%d/%m/%Y %H:%M"), new_slug)) raise ValidationError('Такой новострой уже существует.') except NewBuilding.DoesNotExist: cleaned_data['slug'] = new_slug else: cleaned_data['slug'] = old_slug return cleaned_data
def __init__(self, *args, **kwargs): # CopyPage must be passed a 'page' kwarg indicating the page to be copied self.page = kwargs.pop('page') self.user = kwargs.pop('user', None) can_publish = kwargs.pop('can_publish') super().__init__(*args, **kwargs) self.fields['new_title'] = forms.CharField(initial=self.page.title, label=_("New title")) allow_unicode = getattr(settings, 'WAGTAIL_ALLOW_UNICODE_SLUGS', True) self.fields['new_slug'] = forms.SlugField(initial=self.page.slug, label=_("New slug"), allow_unicode=allow_unicode) self.fields['new_parent_page'] = forms.ModelChoiceField( initial=self.page.get_parent(), queryset=Page.objects.all(), widget=widgets.AdminPageChooser(can_choose_root=True, user_perms='copy_to'), label=_("New parent page"), help_text=_( "This copy will be a child of this given parent page.")) pages_to_copy = self.page.get_descendants(inclusive=True) subpage_count = pages_to_copy.count() - 1 if subpage_count > 0: self.fields['copy_subpages'] = forms.BooleanField( required=False, initial=True, label=_("Copy subpages"), help_text=ngettext("This will copy %(count)s subpage.", "This will copy %(count)s subpages.", subpage_count) % {'count': subpage_count}) if can_publish: pages_to_publish_count = pages_to_copy.live().count() if pages_to_publish_count > 0: # In the specific case that there are no subpages, customise the field label and help text if subpage_count == 0: label = _("Publish copied page") help_text = _( "This page is live. Would you like to publish its copy as well?" ) else: label = _("Publish copies") help_text = ngettext( "%(count)s of the pages being copied is live. Would you like to publish its copy?", "%(count)s of the pages being copied are live. Would you like to publish their copies?", pages_to_publish_count) % { 'count': pages_to_publish_count } self.fields['publish_copies'] = forms.BooleanField( required=False, initial=True, label=label, help_text=help_text)
class AttributeAdminForm(forms.ModelForm): key = forms.SlugField(required=True) class Meta: model = Attribute fields = '__all__' def clean(self): AttributeUniqueURIValidator(self.instance)(self.cleaned_data) AttributeParentValidator(self.instance)(self.cleaned_data) AttributeLockedValidator(self.instance)(self.cleaned_data)
class ReviewSettingsForm(forms.ModelForm): name = forms.SlugField( widget=forms.TextInput(attrs={'class': 'form-control'}), label='URL', help_text=_('Only letters, numbers, _or - are allowed.'), max_length=255) class Meta: model = Review fields = [ 'name', ]
class PostCreateForm(forms.Form): title = forms.CharField(label='Title', max_length=50) content = forms.CharField(label='Content', required=False, widget=forms.Textarea) community = forms.SlugField(label='Community', required=True) def clean_community(self): community = self.cleaned_data['community'] if not Community.objects.filter(slug=community).exists(): raise ValidationError("Community doesn't exist") return community
class URLForm(forms.ModelForm): slug = forms.SlugField(required=False) class Meta: model = URL fields = ("slug", "url", "description") def clean(self): cleaned_data = self.cleaned_data if "slug" not in cleaned_data or not cleaned_data["slug"]: cleaned_data["slug"] = generate(size=settings.DEFAULT_SLUG_LENGTH)
class BaseCMSPageForm(forms.Form): page = None title = forms.CharField( label=_(u'Title'), max_length=255, help_text=_(u"Provide a title for the new page.")) slug = forms.SlugField( label=_(u'Slug'), max_length=255, required=False, help_text=_(u"Leave empty for automatic slug, or override as required."), widget=SlugWidget() ) page_type = forms.ChoiceField( label=_(u'Page type'), required=False, widget=PageTypeSelect()) content = forms.CharField( label=_(u'Content'), widget=text_widget, required=False, help_text=_(u"Optional. If supplied, will be automatically added " u"within a new text plugin.")) def __init__(self, instance=None, *args, **kwargs): # Expect instance argument here, as we have to accept some of the # ModelForm __init__() arguments here for the ModelFormMixin cbv self.instance = instance super(BaseCMSPageForm, self).__init__(*args, **kwargs) if self.page: site = self.page.site_id else: site = Site.objects.get_current() # Either populate, or remove the page_type field if 'page_type' in self.fields: root = Page.objects.filter(publisher_is_draft=True, reverse_id=PAGE_TYPES_ID, site=site).first() if root: page_types = root.get_descendants() else: page_types = Page.objects.none() if root and page_types: # Set the choicefield's choices to the various page_types language = get_language() type_ids = page_types.values_list('pk', flat=True) titles = Title.objects.filter(page__in=type_ids, language=language) choices = [('', '---------')] for title in titles: choices.append((title.page_id, title.title)) self.fields['page_type'].choices = choices else: # There are no page_types, so don't bother the user with an # empty choice field. del self.fields['page_type']
class PostForm(forms.ModelForm): slug = forms.SlugField(max_length=50) class Meta: model = Post fields = ('title', 'slug', 'contents', 'category') widgets = { 'contents': forms.Textarea(), # 'category':forms.ModelChoiceField(queryset=Category.objects.get()) }
class FilmForm(forms.ModelForm): filmID = forms.CharField(widget=forms.HiddenInput(), required=False) title = forms.CharField(max_length=128, help_text="Enter the film title.") director = forms.CharField(max_length=128, help_text="Directors Name.") releaseDate = forms.DateField(help_text="Release Date. [YEAR-MONTH-DAY]") blurb = forms.CharField(max_length=512, help_text="Film Blurb.") poster = forms.ImageField(help_text="Film Poster.", required=False) slug = forms.SlugField(widget=forms.HiddenInput(), required=False) class Meta: model = Film fields = ('title', 'director', 'releaseDate', 'blurb', 'poster')
class BoardForm(forms.ModelForm): slug = forms.SlugField(max_length=100, help_text="Slug", required=True) title = forms.CharField(max_length=200, required=True) description = forms.Textarea() logo = forms.ImageField(required=False) class Meta: model = Board fields = ['slug', 'title', 'description','logo'] def __str__(self): return self.title
class SlugSearchForm(forms.Form): slug = forms.SlugField(label='Feature Slug') def clean_slug(self): slug = self.cleaned_data['slug'] try: fp = FeaturePage.objects.get(feature__slug=slug) except FeaturePage.DoesNotExist: raise forms.ValidationError('No Feature with this slug.') else: self.feature_id = fp.feature_id return slug
class CreateForm(forms.Form, SpamProtectionMixin): def __init__(self, request, urlpath_parent, *args, **kwargs): super(CreateForm, self).__init__(*args, **kwargs) self.request = request self.urlpath_parent = urlpath_parent title = forms.CharField(label=_(u'Title'), ) slug = forms.SlugField( label=_(u'Slug'), help_text= _(u"This will be the address where your article can be found. Use only alphanumeric characters and - or _. Note that you cannot change the slug after creating the article." ), max_length=models.URLPath.SLUG_MAX_LENGTH) content = forms.CharField( label=_(u'Contents'), required=False, widget=getEditor().get_widget()) #@UndefinedVariable summary = forms.CharField( label=_(u'Summary'), help_text=_(u"Write a brief message for the article's history log."), required=False) def clean_slug(self): slug = self.cleaned_data['slug'] if slug.startswith("_"): raise forms.ValidationError( _(u'A slug may not begin with an underscore.')) if slug == 'admin': raise forms.ValidationError( _(u"'admin' is not a permitted slug name.")) if settings.URL_CASE_SENSITIVE: already_existing_slug = models.URLPath.objects.filter( slug=slug, parent=self.urlpath_parent) else: already_existing_slug = models.URLPath.objects.filter( slug__iexact=slug, parent=self.urlpath_parent) if already_existing_slug: already_urlpath = already_existing_slug[0] if already_urlpath.article and already_urlpath.article.current_revision.deleted: raise forms.ValidationError( _(u'A deleted article with slug "%s" already exists.') % already_urlpath.slug) else: raise forms.ValidationError( _(u'A slug named "%s" already exists.') % already_urlpath.slug) return slug def clean(self): self.check_spam() return self.cleaned_data
class PostForm(forms.Form): STATUS_CHOICES = ( ('draft', 'Draft'), ('published', 'Published'), ) title = forms.CharField(label='Title', max_length=250) slug = forms.SlugField(label='Slug', max_length=250) content = forms.CharField(label='Content', widget=forms.Textarea) publish = forms.DateTimeField(label='Published Date', initial=datetime.now()) status = forms.ChoiceField(widget=forms.RadioSelect, choices=STATUS_CHOICES)
class LoginForm(forms.Form): userdetail = forms.SlugField() password = forms.CharField(max_length=50, widget=forms.PasswordInput) userdetail.widget.attrs.update({ 'class': 'form-control', 'placeholder': 'User Name/Email/Phone' }) password.widget.attrs.update({ 'class': 'form-control', 'placeholder': 'Password' })
class CondominiumUpdateForm(forms.ModelForm): slug = forms.SlugField(label=_('slug')) class Meta: model = Condominium fields = [ 'name', 'legal_address', 'ideas_days', 'votes', 'problem_days', ]
class TeamForm(ModelForm): name = forms.CharField(max_length=100, label="Team Name") perma = forms.SlugField( max_length=20, label="Team Perma-Link", help_text= "It's your team's perma-link adress. e.g. 'Example Company' should be 'example-company' or 'example_company' or 'examplecompany'" ) class Meta: model = Startup fields = ['name', 'perma']
class NewTeamForm(forms.ModelForm): name = forms.CharField( max_length=200, widget=forms.TextInput(attrs={'placeholder': _('e.g. My Team Name')})) slug = forms.SlugField( help_text=_( 'A slug is a URL-safe word and must be unique across all teams.'), widget=forms.TextInput(attrs={'placeholder': _('e.g. my-team-name')})) class Meta: fields = ('name', 'slug') model = Team
class SignInForm(forms.Form): username = forms.SlugField( label=labels['USERNAME'], max_length=MAX_NAME_LENGTH_SHORT, ) password = forms.CharField( label=labels['PASSWORD'], widget=forms.PasswordInput, strip=False, max_length=MAX_MESSAGE_LENGTH_SHORT, min_length=1, )