| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- from django import forms
- from django.conf import settings
- from django.core.files import File
- from django.contrib.auth.forms import UserCreationForm
- from django_file_form.forms import UploadedFileField, FileFormMixin, CharField, MultipleUploadedFileField
- from django.contrib.auth.models import User
- from django.urls import reverse, reverse_lazy
- from django.forms import *
- from django.forms.widgets import HiddenInput
- from django.forms.models import inlineformset_factory
- # from django.views.generic.edit.FormMixin
- # from crispy_forms.layout.buttons import Submit, InputButton
- from crispy_forms.layout import Layout, Field, Fieldset, Div, Row, Column, HTML, ButtonHolder, Submit
- from crispy_forms.bootstrap import InlineField
- from crispy_forms.helper import FormHelper
- from captcha.fields import CaptchaField
- from tinymce.widgets import TinyMCE
- from newsletter.forms import *
- from newsletter.models import *
- from marktplatz.widgets import *
- from .models import *
- from .urls import *
- def extend_help_text( help_text, myList ):
- extended_text = help_text
- extended_text += " z.B. "
- for x in myList:
- extended_text += x[1] + ", "
- extended_text = extended_text[:-2]
- extended_text += "."
- return extended_text
- class GeneralFields(forms.Form):
- terms = forms.BooleanField(required=True, )
- def __init__(self, *args, **kwargs):
- super(GeneralFields, self).__init__(*args, **kwargs)
- drurl = reverse_lazy( 'pages-generic', kwargs= { 'page': 'DATENSCHUTZRICHTLINIE' } )
- tmurl = reverse_lazy( 'pages-generic', kwargs= { 'page': 'TEILNAHME' } )
- self.fields ['terms'].label = 'Ich akzeptiere die <a target="_blank" href="{}"> Datenschutzrichtlinie</a> sowie die <a target="_blank" href="{}"> Teilnahmebedingungen</a> und habe sie gelesen.'.format(drurl, tmurl)
- class textSearchForm(forms.Form):
- mywidget = forms.TextInput( attrs={'onfocus': "this.value=''", 'class' : "border-thin"} )
- searchText = forms.CharField ( label='', widget = mywidget, max_length = 2048, min_length=3, empty_value="Suche...", initial='Suche...' )
- def __init__(self, *args, **kwargs):
- super(textSearchForm, self).__init__(*args, **kwargs)
- self.helper = FormHelper()
- self.helper.form_tag = False
- self.helper.layout = Layout(
- Div(
- Div('searchText', css_class='col-sm-6 col-6'),
- Div(
- ButtonHolder(
- Submit('submit', 'Suche', css_class='border-thin mybtn')
- ),
- css_class='col-sm-6 col-6'),
- css_class='form-row row mab-search-bar'),
- )
- class searchAgentForm(forms.ModelForm):
- agent_layout = Layout()
- class Meta:
- model = SearchAgent
- fields = ('ort', 'email')
- def __init__(self,*args, **kwargs):
- super().__init__(*args, **kwargs)
- # self.fields['ort'].widget = CheckboxSelectMultiple( attrs= { 'style' : "min-height: 250px;"} )
- self.agent_layout = Layout(
- Fieldset(
- ('Suchagent einrichten'),
- # 'ort',
- Div(
- Div('ort', css_class='col-sm-6 col-6 checkbox-ort'),
- Div(
- HTML("""
- <button onclick=" ganz_wien()" class="btn btn-primary border-thin border-dark mybtn">Ganz Wien</button>
- <script>
- function ganz_wien(){
- $(".checkbox-ort .custom-control-label:contains('Wien')").each(function() {
- $this = $(this);
- var selector = "#" + $this.attr('for') ;
- $( selector ).prop('checked', true);
- });
- }
- </script>
- <br>
- """),
- # HTML("""
- # <div id="div_id_ort" class="form-group">
- # <label for="" class=" requiredField">Ort<span class="asteriskField">*</span> </label>
- # <div class="">
- # <div class="row">
- # <div class="col-sm-6 col-6 checkbox-ort">
- #
- # <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_1" value="1010" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_1">
- # Wien 1
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_2" value="1020" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_2">
- # Wien 2
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_3" value="1030" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_3">
- # Wien 3
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_4" value="1040" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_4">
- # Wien 4
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_5" value="1050" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_5">
- # Wien 5
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_6" value="1060" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_6">
- # Wien 6
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_7" value="1070" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_7">
- # Wien 7
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_8" value="1080" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_8">
- # Wien 8
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_9" value="1090" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_9">
- # Wien 9
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_10" value="1100" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_10">
- # Wien 10
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_11" value="1110" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_11">
- # Wien 11
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_12" value="1120" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_12">
- # Wien 12
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_13" value="1130" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_13">
- # Wien 13
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_14" value="1140" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_14">
- # Wien 14
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_15" value="1150" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_15">
- # Wien 15
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_16" value="1160" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_16">
- # Wien 16
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_17" value="1170" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_17">
- # Wien 17
- # </label> </div>
- # </div>
- # <div class="col-sm-6 col-6 checkbox-ort">
- #
- #
- # <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_18" value="1180" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_18">
- # Wien 18
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_19" value="1190" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_19">
- # Wien 19
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_20" value="1200" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_20">
- # Wien 20
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_21" value="1210" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_21">
- # Wien 21
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_22" value="1220" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_22">
- # Wien 22
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_23" value="1230" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_23">
- # Wien 23
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_24" value="GERM" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_24">
- # Deutschland
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_25" value="SCHW" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_25">
- # Schweiz
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_26" value="VORA" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_26">
- # Vorarlberg
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_27" value="TIRO" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_27">
- # Tirol
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_28" value="SALZ" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_28">
- # Salzburg
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_29" value="KAER" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_29">
- # Kärnten
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_30" value="STEI" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_30">
- # Steiermark
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_31" value="OBER" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_31">
- # Oberösterreich
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_32" value="NIER" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_32">
- # Niederösterreich
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_33" value="BURG" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_33">
- # Burgenland
- # </label> </div> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="ort" id="id_ort_34" value="WELT" style="min-height: 250px;"> <label class="custom-control-label" for="id_ort_34">
- # Welt
- # </label> </div>
- # </div>
- # </div>
- # <small id="hint_id_ort" class="form-text text-muted">Ort des Projektes</small>
- # </div>
- # </div>
- #
- # """),
- css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- ),
- )
- class AgentNewslwtterForm( searchAgentForm, GeneralFields):
- email_field = forms.EmailField( label = 'Email', help_text="Du kannst den Suchagenten und den Newsletter jederzeit abbestellen - über einen Link in den Mails.", required=True, max_length=254 )
- subscribe = forms.BooleanField( label = 'Newsletter abonnieren', help_text='', required = False )
- captcha = CaptchaField( label = 'Bitte lösen Sie die Gleichung', generator='captcha.helpers.math_challenge' )
- def __init__(self, *args, **kwargs):
- # super(searchAgentForm, self).__init__(*args, **kwargs)
- super(AgentNewslwtterForm, self).__init__(*args, **kwargs)
- self.helper = FormHelper(self)
- self.helper.attrs = { 'enctype' : "multipart/form-data" }
- self.helper.form_action = reverse('agent-newsletter-create', kwargs={'newsletter_slug': "gemeinschaffen-newsletter"} )
- self.helper.layout = Layout(
- self.agent_layout,
- 'email_field',
- 'subscribe',
- 'terms',
- 'captcha',
- ButtonHolder(
- Submit('submit', 'Suchagent aktivieren', css_class='border-thin border-dark mybtn')
- ),
- )
- class NewsletterForm(SubscribeRequestForm, GeneralFields):
- class Meta:
- model = SubscribeRequestForm.Meta.model
- fields = SubscribeRequestForm.Meta.fields + (
- 'terms', )
- def __init__(self,*args, **kwargs):
- super(SubscribeRequestForm, self).__init__(*args, **kwargs)
- self.helper = FormHelper()
- self.helper.form_tag = False
- self.layout = Layout(
- Fieldset(
- ('Anmelden'),
- 'name_field',
- 'email_field',
- 'terms',
- Div(
- ButtonHolder(
- Submit('submit', 'Anmelden', css_class='border-thin mybtn')
- ),
- ),
- Div(HTML(" ") ),
- ),
- )
- self.helper.layout = self.layout
- class RegisterForm(forms.ModelForm, GeneralFields):
- class Meta:
- model = Contact
- fields = ('first_name','last_name','email','adress','postcode','city','country',
- 'phonenumber','alternate_phonenumber','skype_name','website', 'terms')
- class SignUpForm(UserCreationForm):
- captcha = CaptchaField( generator='captcha.helpers.math_challenge' )
- class Meta:
- model = User
- fields = ('username', 'password1', 'password2')
- class ProductForm(forms.ModelForm, GeneralFields):
- # terms = forms.BooleanField(required=True, label= ('Ich habe die Teilnahmebedingungen gelesen und akzeptiert.'))
- class Meta:
- model = Product
- fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status',
- 'adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen',
- 'edit','public','type', )
- def __init__(self,*args, **kwargs):
- super(ProductForm, self).__init__(*args, **kwargs)
- self.fields['orga'].widget = ListTextWidget(data_list=Product.ORGANIZATION, name='orga_list')
- self.fields['rechtsform'].widget = ListTextWidget(data_list=Product.RECHTSFORM, name='rechtsform_list')
- self.fields['beschreibung'].widget = TinyMCE(attrs={'cols': 80, 'rows': 30})
- self.fields['learning'].widget = TinyMCE(attrs={'cols': 80, 'rows': 30})
- self.fields['edit'].widget = HiddenInput()
- self.fields['public'].widget = HiddenInput()
- self.fields['type'].widget = HiddenInput()
- self.fields['type'].initial = 'BASE'
- #
- # extend_help_text
- #
- self.fields['orga'].help_text = extend_help_text (self.fields['orga'].help_text, Product.ORGANIZATION)
- self.fields['rechtsform'].help_text = extend_help_text (self.fields['rechtsform'].help_text, Product.RECHTSFORM)
- self.helper = FormHelper()
- self.helper.form_tag = False
- self.product_layout = Layout(
- Fieldset(
- ('Über dein Projekt'),
- 'name','claim','beschreibung',
- Div(
- Div('frei', css_class='col-sm-6 col-6 '),
- Div('kfrei', css_class='col-sm-6 col-6 ' ),
- css_class='form-row row mab-field-highlight'),
- 'learning','status',
- Div(
- Div('adresse', css_class='col-sm-6 col-6'),
- Div('adresse_zusatz', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- Div(
- Div('plz', css_class='col-sm-6 col-6'),
- Div('ort', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- 'rechtsform','orga',
- Div(
- Div('website', css_class='col-sm-6 col-6'),
- Div('email', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- Div(
- Div('gruendungsjahr', css_class='col-sm-6 col-6'),
- Div('betriebgenommen', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- 'edit','public', 'mitmachen', 'type',
- ),
- )
- self.helper.layout = self.product_layout
- class MobilitaetsForm(ProductForm):
- class Meta():
- model = MobilitaetsProjekt
- fields = ProductForm.Meta.fields + ( )
- def __init__(self,*args, **kwargs):
- super(MobilitaetsForm, self).__init__(*args, **kwargs)
- self.fields['type'].initial = 'MOBI'
- class ErnaehrungsForm(ProductForm):
- class Meta():
- model = ErnaehrungsProjekt
- fields = ProductForm.Meta.fields + ( )
- def __init__(self,*args, **kwargs):
- super(ErnaehrungsForm, self).__init__(*args, **kwargs)
- self.fields['type'].initial = 'ERNA'
- class EnergyForm(ProductForm):
- class Meta():
- model = EnergyProjekt
- fields = ProductForm.Meta.fields + ( )
- def __init__(self,*args, **kwargs):
- super(EnergyForm, self).__init__(*args, **kwargs)
- self.fields['type'].initial = 'ENER'
- class WohnprojektForm(ProductForm):
- class Meta:
- model = Wohnprojekt
- fields = ProductForm.Meta.fields + (
- 'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'wohnbaufoerderung', 'artmodell', 'bautraeger', 'architektur', 'aerwachsene', 'akinder', 'awohnungen', 'wohnflaeche', 'gewerbeflaechen', 'gemeinschaftsflaeche', 'sonstige_flaechen', 'flaeche', 'kflaechen', 'gemeinschaftr', 'kgemeinschaftr', 'gewerbe', 'sonderwohnformen', 'raumangebot', 'kraumangebot', 'parbeiten', 'karbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen', 'urbanem',
- )
- def __init__(self,*args, **kwargs):
- super(WohnprojektForm, self).__init__(*args, **kwargs)
- #
- #
- self.fields['artmodell'].widget = ListTextWidget(data_list=Wohnprojekt.ARTMODELL, name='artmodell_list')
- self.fields['bautraeger'].widget = ListTextWidget(data_list=Wohnprojekt.BAUTRAEGER, name='bautraeger_list')
- self.fields['bauweise'].widget = ListTextWidget(data_list=Wohnprojekt.BAUWEISE, name='bauweise_list')
- self.fields['zielgruppen'].widget = ListTextWidget(data_list=Wohnprojekt.ZIELGRUPPEN, name='zielgruppen_list')
- self.fields['gprojekte'].widget = ListTextWidget(data_list=Wohnprojekt.GPROJEKTE, name='gprojekte_list')
- self.fields['freiraumangebote'].widget = ListTextWidget(data_list=Wohnprojekt.FREIANGEBOT, name='freiraumangebote_list')
- self.fields['gewerbe'].widget = ListTextWidget(data_list=Wohnprojekt.GEWERBE, name='gewerbe_list')
- #
- #
- self.fields['bauweise'].help_text = extend_help_text (self.fields['bauweise'].help_text, Wohnprojekt.BAUWEISE)
- self.fields['zielgruppen'].help_text = extend_help_text (self.fields['zielgruppen'].help_text, Wohnprojekt.ZIELGRUPPEN)
- self.fields['gprojekte'].help_text = extend_help_text (self.fields['gprojekte'].help_text, Wohnprojekt.GPROJEKTE)
- #
- #
- self.fields['frei'].label = "Wohnung Frei"
- self.fields['inseratstext'].label = "Inseratstext für Raumangebote"
- #
- #
- self.fields['type'].initial = 'WOHN'
- self.helper = FormHelper()
- self.helper.form_tag = False
- self.helper.layout = Layout(
- self.product_layout,
- Fieldset( 'Wohnprojekt',
- 'eigentum',
- 'artmodell',
- 'altneu',
- 'schwerpunkt',
- 'wohnbaufoerderung',
- 'bautraeger',
- 'architektur',
- Div(
- Div('aerwachsene', css_class='col-sm-6 col-6'),
- Div('akinder', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- 'awohnungen',
- 'gaestwohnungen',
- Fieldset ( 'Flächen',
- Div(
- Div('wohnflaeche', css_class='col-sm-3 col-3'),
- Div('gewerbeflaechen', css_class='col-sm-3 col-3'),
- Div('gemeinschaftsflaeche', css_class='col-sm-3 col-3'),
- Div('sonstige_flaechen', css_class='col-sm-3 col-3'),
- css_class='form-row row'),
- 'flaeche',
- 'kflaechen',
- ),
- Div(
- Div('gemeinschaftr', css_class='col-sm-6 col-6'),
- Div('raumangebot', css_class='col-sm-6 col-6'),
- Div('kgemeinschaftr', css_class='col-sm-6 col-6'),
- Div('kraumangebot', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- 'gewerbe',
- Div('inseratstext', css_class = "mab-field-highlight"),
- 'sonderwohnformen',
- Div(
- Div('parbeiten', css_class='col-sm-6 col-6'),
- Div('karbeiten', css_class='col-sm-6 col-6'),
- css_class='form-row row'),
- 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'urbanem',
- )
- )
- class MediaForm(FileFormMixin, forms.Form):
- image = UploadedFileField()
- name_for = forms.CharField()
- copyright = forms.CharField()
- #prefix = 'upload'
- def __init__(self, *args, **kwargs):
- super(MediaForm, self).__init__(*args, **kwargs)
- self.helper = FormHelper()
- self.helper.form_tag = False
- self.fields['name_for'].label = 'Bildbeschriftung'
- self.fields['copyright'].label = 'Urheberrechte'
- self.fields['image'].label = 'Bild oder Video'
- self.fields['image'].help_text = 'Bitte laden Sie Bilder im PNG- oder JPEG-Format hoch. Laden Sie Videos im MP4-Format hoch.'
- self.layout = Layout(
- Fieldset(
- (''),
- Div(
- Div('name_for', css_class='form-group col-md-6 mb-0'),
- Div('copyright', css_class='form-group col-md-4 mb-0')
- , css_class='form-row'),
- Div(
- Div('image', css_class='form-group col-md-6 mb-0'),
- css_class='form-row'),
- ))
|