class AllFieldsForm(forms.Form): boolean = forms.BooleanField() char = forms.CharField(max_length=50) choices = forms.ChoiceField(choices=ALPHA_CHOICES) date = forms.DateField() datetime = forms.DateTimeField() decimal = forms.DecimalField(decimal_places=2, max_digits=4) email = forms.EmailField() file_field = forms.FileField() file_path = forms.FilePathField(path='uploads/') float_field = forms.FloatField() generic_ip_address = forms.GenericIPAddressField() image = forms.ImageField() integer = forms.IntegerField() ip_address = forms.IPAddressField() multiple_choices = forms.MultipleChoiceField(choices=ALPHA_CHOICES) null_boolean = forms.NullBooleanField() regex_field = forms.RegexField(regex='^\w+$', js_regex='^[a-zA-Z]+$') slug = forms.SlugField() split_datetime = forms.SplitDateTimeField() time = forms.TimeField() typed_choices = forms.TypedChoiceField(choices=NUMERIC_CHOICES, coerce=int) typed_multiple_choices = forms.TypedMultipleChoiceField( choices=NUMERIC_CHOICES, coerce=int) url = forms.URLField() # GIS fields. if gis_forms: osm_point = gis.PointField( widget=mixin(gis.PointWidget, gis.BaseOsmWidget)) osm_multipoint = gis.MultiPointField( widget=mixin(gis.MultiPointWidget, gis.BaseOsmWidget)) osm_linestring = gis.LineStringField( widget=mixin(gis.LineStringWidget, gis.BaseOsmWidget)) osm_multilinestring = gis.MultiLineStringField( widget=mixin(gis.MultiLineStringWidget, gis.BaseOsmWidget)) osm_polygon = gis.PolygonField( widget=mixin(gis.PolygonWidget, gis.BaseOsmWidget)) osm_multipolygon = gis.MultiPolygonField( widget=mixin(gis.MultiPolygonWidget, gis.BaseOsmWidget)) gmap_point = gis.PointField( widget=mixin(gis.PointWidget, BaseGMapWidget)) gmap_multipoint = gis.MultiPointField( widget=mixin(gis.MultiPointWidget, BaseGMapWidget)) gmap_linestring = gis.LineStringField( widget=mixin(gis.LineStringWidget, BaseGMapWidget)) gmap_multilinestring = gis.MultiLineStringField( widget=mixin(gis.MultiLineStringWidget, BaseGMapWidget)) gmap_polygon = gis.PolygonField( widget=mixin(gis.PolygonWidget, BaseGMapWidget)) gmap_multipolygon = gis.MultiPolygonField( widget=mixin(gis.MultiPolygonWidget, BaseGMapWidget))
class SlugForm(forms.Form): slug = forms.SlugField()
class PageCreateForm(PageColorSchemeSwitchableFormMixin, SelfHandlingModelForm): slug = forms.SlugField(required=False, initial=None) class Meta: model = Page widgets = { 'parent': forms.widgets.HiddenInput, } exclude = tuple() def clean_slug(self): """slug title if is not provided """ slug = self.cleaned_data.get('slug', None) if slug is None or len(slug) == 0: slug = slugify(self.cleaned_data['title']) return slug def __init__(self, *args, **kwargs): parent = kwargs.pop('parent', None) super(PageCreateForm, self).__init__(*args, **kwargs) self.fields['parent'].initial = parent color_scheme_fields = self.init_color_scheme_switch( color_scheme=kwargs['initial'].get('color_scheme', None)) self.helper.layout = Layout( TabHolder( Tab(_('Main'), 'title', 'language', 'translation_of', 'site', css_id='page-main'), Tab(_('Navigation'), 'in_navigation', 'parent', 'slug', 'override_url', 'redirect_to', 'symlinked_page'), Tab(_('Heading'), '_content_title', '_page_title', css_id='page-heading'), Tab( _('Publication'), 'active', 'featured', 'publication_date', 'publication_end_date', ), Tab(_('Theme'), 'template_key', 'layout', Fieldset('Themes', 'theme', *color_scheme_fields), css_id='page-theme-settings'), )) self.fields['color_scheme'].required = False def clean(self): cleaned = super(PageCreateForm, self).clean() theme = cleaned['theme'] cleaned['color_scheme'] = self.cleaned_data['theme__%s' % theme.id] return cleaned
class PageCreateForm(PageColorSchemeSwitchableFormMixin, SelfHandlingModelForm): slug = forms.SlugField(required=False, initial=None) parent = PageSelectField(required=False) translation_of = PageSelectField(required=False) symlinked_page = PageSelectField(required=False) site = SiteSelectField() class Meta: model = Page widgets = { 'parent': forms.widgets.HiddenInput, 'theme': Select2Widget, 'language': Select2Widget, } exclude = tuple() def clean_slug(self): """slug title if is not provided """ slug = self.cleaned_data.get('slug', None) if slug is None or len(slug) == 0 and 'title' in self.cleaned_data: slug = slugify(self.cleaned_data['title']) return slug def __init__(self, request, *args, **kwargs): parent = kwargs.pop('parent', None) super(PageCreateForm, self).__init__(*args, **kwargs) if parent: self.fields['parent'].initial = parent if request.method == 'GET': color_scheme_fields = self.init_color_scheme_switch( color_scheme=kwargs['initial'].get('color_scheme', None)) self.helper.layout = Layout( TabHolder( Tab(_('Main'), 'title', 'language', 'translation_of', 'parent', 'site', css_id='page-main'), Tab(_('Navigation'), 'in_navigation', 'slug', 'override_url', 'redirect_to', 'symlinked_page', 'navigation_extension'), Tab(_('Heading'), '_content_title', '_page_title', css_id='page-heading'), Tab( _('Publication'), 'active', 'featured', 'publication_date', 'publication_end_date', ), Tab(_('Theme'), 'template_key', 'layout', Fieldset('Themes', 'theme', *color_scheme_fields), css_id='page-theme-settings'), )) self.fields['color_scheme'].required = False def clean(self): cleaned = super(PageCreateForm, self).clean() if 'theme' in cleaned: if cleaned['parent']: theme = cleaned['parent'].theme cleaned['theme'] = theme else: theme = cleaned['theme'] # small combo value = self.fields['color_scheme'].widget.value_from_datadict( self.data, self.files, self.add_prefix('theme__%s' % theme.id)) cleaned['color_scheme'] = self.fields['color_scheme'].clean(value) return cleaned
class HelloWorldForm(forms.Form): name = forms.SlugField()