예제 #1
0
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))
예제 #2
0
 class SlugForm(forms.Form):
     slug = forms.SlugField()
예제 #3
0
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
예제 #4
0
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
예제 #5
0
class HelloWorldForm(forms.Form):
    name = forms.SlugField()