from django import forms from django.conf import settings from .models import * 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 crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Field, Fieldset, Div, Row, Column, HTML, ButtonHolder, Submit from crispy_forms.bootstrap import InlineField from django.forms.models import inlineformset_factory from django.forms import formset_factory from django import forms from captcha.fields import CaptchaField from django.core.files import File from marktplatz.widgets import * from django.forms.widgets import HiddenInput 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 searchAgentForm(forms.ModelForm): class Meta: model = SearchAgent fields = '__all__' # fields = ('first_name','last_name','adress','postcode','city','country', 'email','phonenumber','alternate_phonenumber','skype_name','website', 'terms') class RegisterForm(forms.ModelForm): terms = forms.BooleanField(required=True, label= ('I accept and have read the Privacy Policy.')) class Meta: model = Contact fields = ('first_name','last_name','adress','postcode','city','country', 'email','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): terms = forms.BooleanField(required=True, label= ('Ich habe die Teilnahmebedingungen gelesen und akzeptiert.')) product_fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','email','frei','kfrei','ort','rechtsform','orga','mitmachen','edit','public', ) product_layout = Layout( Fieldset( ('Über dein Projekt'), 'name','claim','beschreibung','learning','status', Div( Div('adresse', css_class='col-sm-6 col-6'), Div('ort', css_class='col-sm-6 col-6'), css_class='form-row row'), Div( Div('frei', css_class='col-sm-6 col-6'), Div('kfrei', css_class='col-sm-6 col-6'), css_class='form-row row'), 'mitmachen','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', ), ) class Meta: model = Product fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','email','frei','kfrei', 'mitmachen','rechtsform','ort','orga', ) 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['edit'].widget = HiddenInput() self.fields['public'].widget = HiddenInput() # # 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 class WohnprojektForm(ProductForm): terms = forms.BooleanField(required=True, label= ('I accept and have read the Terms of Participation.')) class Meta: model = Wohnprojekt fields = ProductForm.product_fields + ( 'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'wohnbaufoerderung', 'artmodell', 'bautraeger', 'aerwachsene', 'akinder', 'awohnungen', 'wohnflaeche', 'gewerbeflaechen', 'gemeinschaftsflaeche', 'sonstige_flaechen', 'kflaechen', 'gemeinschaftr', 'kgemeinschaftr', 'sonderwohnformen', 'raumangebot', 'kraumangebot', 'parbeiten', 'karbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen', ) 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['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.helper = FormHelper() self.helper.form_tag = False self.helper.layout = Layout( self.product_layout, Fieldset( 'Wohnprojekt', 'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'wohnbaufoerderung', 'artmodell', 'bautraeger', 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', 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'), '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'), 'sonderwohnformen', 'parbeiten', 'karbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen', ) ) class InteractionForm(forms.ModelForm): class Meta: model = Interaction fields = ('communtity','host','legal_form','issues','impact','tools','tools_used','next_steps') def __init__(self, *args, **kwargs): super(InteractionForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_tag = False self.helper.layout = Layout( Fieldset( ('Community Ascpects - not mandatory'), Div(Div('communtity', css_class='form-group col-md-6 mb-0'), Div('issues', css_class='form-group col-md-6 mb-0'), css_class='form-row'), Div(Div('legal_form', css_class='form-group col-md-6 mb-0'), Div('host', css_class='form-group col-md-6 mb-0'), css_class='form-row'), Div(Div('impact', css_class='form-group col-md-6 mb-0'), Div('tools', css_class='form-group col-md-6 mb-0'), css_class='form-row'), Div(Div('tools_used', css_class='form-group col-md-6 mb-0'), Div('next_steps', css_class='form-group col-md-6 mb-0'), css_class='form-row'), )) class LinkForm(forms.ModelForm): class Meta: model = Link fields = ('link_description','link') #def __init__(self, *args, **kwargs): # super(LinkForm, self).__init__(*args, **kwargs) # self.helper = FormHelper() # self.helper.field_class = 'form_border' # self.helper.form_tag = False # self.helper.layout = Layout( # Fieldset( # Div(Div('link_description', css_class='form-group col-md-5 mb-0'), # Div('link', css_class='form-group col-md-5 mb-0'), # css_class='form-row') # )) LinkFormSet = inlineformset_factory(Product,Link, fields = ['link_description','link'], form=LinkForm, extra=3, can_delete=False) class FormsetHelper(FormHelper): def __init__(self,*args, **kwargs): super(FormsetHelper, self).__init__(*args, **kwargs) #self.form_method = 'post' self.form_tag = False #self.render_hidden_fields = True #self.render_required_fields = True self.layout = Layout( Fieldset( (''), Div( Div('link_description', css_class='form-group col-md-4 mb-0'), Div('link', css_class='form-group col-md-6 mb-0') , css_class='form-row') )) class MediaForm(FileFormMixin, forms.Form): image = UploadedFileField() name_for = CharField() copyright = 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 = 'Caption' self.fields['copyright'].label = 'Copyright of' self.fields['image'].label = 'Image or Video' self.fields['image'].help_text = 'Please upload Images in PNG or JPEG format. Upload Video in MP4 format.' 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'), )) class MediaForm_test(FileFormMixin, forms.Form): image = UploadedFileField() name_for = CharField() copyright = CharField() def __init__(self, *args, **kwargs): super(MediaForm_test, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_tag = False class MediaForm1(FileFormMixin, forms.Form): image = MultipleUploadedFileField() name_for = CharField() copyright = CharField() def __init__(self, *args, **kwargs): super(MediaForm1, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_tag = False class MediaForm2(FileFormMixin,forms.Form): image = UploadedFileField() name_for = CharField() copyright = CharField() def __init__(self, *args, **kwargs): super(MediaForm2, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_tag = False MediaFormSet = formset_factory(MediaForm_test, extra=3) class MediaFormsetHelper(FormHelper): def __init__(self,*args, **kwargs): super(MediaFormsetHelper, self).__init__(*args, **kwargs) self.form_tag = False 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'), )) class VideoForm(forms.ModelForm): class Meta: model = Video fields = ('name_for','copyright','image')