forms.py 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. from django import forms
  2. from django.conf import settings
  3. from .models import *
  4. from django.contrib.auth.forms import UserCreationForm
  5. from django_file_form.forms import UploadedFileField, FileFormMixin, CharField, MultipleUploadedFileField
  6. from django.contrib.auth.models import User
  7. from crispy_forms.helper import FormHelper
  8. from crispy_forms.layout import Layout, Field, Fieldset, Div, Row, Column, HTML, ButtonHolder, Submit
  9. from crispy_forms.bootstrap import InlineField
  10. from django.forms.models import inlineformset_factory
  11. from django.forms import formset_factory
  12. from django import forms
  13. from captcha.fields import CaptchaField
  14. from django.core.files import File
  15. from marktplatz.widgets import *
  16. from django.forms.widgets import HiddenInput
  17. def extend_help_text( help_text, myList ):
  18. extended_text = help_text
  19. extended_text += " z.B. "
  20. for x in myList:
  21. extended_text += x[1] + ", "
  22. extended_text = extended_text[:-2]
  23. extended_text += "."
  24. return extended_text
  25. class searchAgentForm(forms.ModelForm):
  26. class Meta:
  27. model = SearchAgent
  28. fields = '__all__'
  29. # fields = ('first_name','last_name','adress','postcode','city','country', 'email','phonenumber','alternate_phonenumber','skype_name','website', 'terms')
  30. class RegisterForm(forms.ModelForm):
  31. terms = forms.BooleanField(required=True, label= ('I accept and have read the <a href="https://www.mediaarchitecture.org/privacy-policy/">Privacy Policy.</a>'))
  32. class Meta:
  33. model = Contact
  34. fields = ('first_name','last_name','adress','postcode','city','country',
  35. 'email','phonenumber','alternate_phonenumber','skype_name','website', 'terms')
  36. class SignUpForm(UserCreationForm):
  37. captcha = CaptchaField( generator='captcha.helpers.math_challenge' )
  38. class Meta:
  39. model = User
  40. fields = ('username', 'password1', 'password2')
  41. class ProductForm(forms.ModelForm):
  42. terms = forms.BooleanField(required=True, label= ('Ich habe die Teilnahmebedingungen gelesen und akzeptiert.'))
  43. product_fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','email','frei','kfrei','ort','rechtsform','orga','mitmachen','edit','public', )
  44. product_layout = Layout(
  45. Fieldset(
  46. ('Über dein Projekt'),
  47. 'name','claim','beschreibung','learning','status',
  48. Div(
  49. Div('adresse', css_class='col-sm-6 col-6'),
  50. Div('ort', css_class='col-sm-6 col-6'),
  51. css_class='form-row row'),
  52. Div(
  53. Div('frei', css_class='col-sm-6 col-6'),
  54. Div('kfrei', css_class='col-sm-6 col-6'),
  55. css_class='form-row row'),
  56. 'mitmachen','rechtsform','orga',
  57. Div(
  58. Div('website', css_class='col-sm-6 col-6'),
  59. Div('email', css_class='col-sm-6 col-6'),
  60. css_class='form-row row'),
  61. Div(
  62. Div('gruendungsjahr', css_class='col-sm-6 col-6'),
  63. Div('betriebgenommen', css_class='col-sm-6 col-6'),
  64. css_class='form-row row'),
  65. 'edit','public',
  66. ),
  67. )
  68. class Meta:
  69. model = Product
  70. fields = (
  71. 'terms',
  72. 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','email','frei','kfrei', 'mitmachen','rechtsform','ort','orga',
  73. )
  74. def __init__(self,*args, **kwargs):
  75. super(ProductForm, self).__init__(*args, **kwargs)
  76. self.fields['orga'].widget = ListTextWidget(data_list=Product.ORGANIZATION, name='orga_list')
  77. self.fields['rechtsform'].widget = ListTextWidget(data_list=Product.RECHTSFORM, name='rechtsform_list')
  78. self.fields['edit'].widget = HiddenInput()
  79. self.fields['public'].widget = HiddenInput()
  80. #
  81. # extend_help_text
  82. #
  83. self.fields['orga'].help_text = extend_help_text (self.fields['orga'].help_text, Product.ORGANIZATION)
  84. self.fields['rechtsform'].help_text = extend_help_text (self.fields['rechtsform'].help_text, Product.RECHTSFORM)
  85. self.helper = FormHelper()
  86. self.helper.form_tag = False
  87. class WohnprojektForm(ProductForm):
  88. terms = forms.BooleanField(required=True, label= ('I accept and have read the Terms of Participation.'))
  89. class Meta:
  90. model = Wohnprojekt
  91. fields = ProductForm.product_fields + (
  92. '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',
  93. )
  94. def __init__(self,*args, **kwargs):
  95. super(WohnprojektForm, self).__init__(*args, **kwargs)
  96. #
  97. #
  98. self.fields['artmodell'].widget = ListTextWidget(data_list=Wohnprojekt.ARTMODELL, name='artmodell_list')
  99. self.fields['bautraeger'].widget = ListTextWidget(data_list=Wohnprojekt.BAUTRAEGER, name='bautraeger_list')
  100. self.fields['bauweise'].widget = ListTextWidget(data_list=Wohnprojekt.BAUWEISE, name='bauweise_list')
  101. self.fields['zielgruppen'].widget = ListTextWidget(data_list=Wohnprojekt.ZIELGRUPPEN, name='zielgruppen_list')
  102. self.fields['gprojekte'].widget = ListTextWidget(data_list=Wohnprojekt.GPROJEKTE, name='gprojekte_list')
  103. #
  104. #
  105. self.fields['bauweise'].help_text = extend_help_text (self.fields['bauweise'].help_text, Wohnprojekt.BAUWEISE)
  106. self.fields['zielgruppen'].help_text = extend_help_text (self.fields['zielgruppen'].help_text, Wohnprojekt.ZIELGRUPPEN)
  107. self.fields['gprojekte'].help_text = extend_help_text (self.fields['gprojekte'].help_text, Wohnprojekt.GPROJEKTE)
  108. #
  109. #
  110. self.helper = FormHelper()
  111. self.helper.form_tag = False
  112. self.helper.layout = Layout(
  113. self.product_layout,
  114. Fieldset(
  115. 'Wohnprojekt',
  116. 'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'wohnbaufoerderung', 'artmodell', 'bautraeger',
  117. Div(
  118. Div('aerwachsene', css_class='col-sm-6 col-6'),
  119. Div('akinder', css_class='col-sm-6 col-6'),
  120. css_class='form-row row'),
  121. 'awohnungen',
  122. Fieldset ( 'FLächen',
  123. Div(
  124. Div('wohnflaeche', css_class='col-sm-3 col-3'),
  125. Div('gewerbeflaechen', css_class='col-sm-3 col-3'),
  126. Div('gemeinschaftsflaeche', css_class='col-sm-3 col-3'),
  127. Div('sonstige_flaechen', css_class='col-sm-3 col-3'),
  128. css_class='form-row row'),
  129. 'kflaechen',
  130. ),
  131. Div(
  132. Div('gemeinschaftr', css_class='col-sm-6 col-6'),
  133. Div('raumangebot', css_class='col-sm-6 col-6'),
  134. Div('kgemeinschaftr', css_class='col-sm-6 col-6'),
  135. Div('kraumangebot', css_class='col-sm-6 col-6'),
  136. css_class='form-row row'),
  137. 'sonderwohnformen', 'parbeiten', 'karbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen',
  138. )
  139. )
  140. class DescriptionForm(forms.ModelForm):
  141. class Meta:
  142. model = Description
  143. fields =('facade','light_creation','resolution','pixel_distance','luminance','urban_situation','description_showreel')
  144. def __init__(self, *args, **kwargs):
  145. super(DescriptionForm, self).__init__(*args, **kwargs)
  146. self.helper = FormHelper()
  147. self.helper.form_tag = False
  148. self.helper.layout = Layout(
  149. Fieldset(
  150. ('Concept Descriptions'),
  151. Div(Div('des_concept', css_class='form-group col-md-12 mb-0'), css_class='form-row'),
  152. Div(Div('des_scenario', css_class='form-group col-md-6 mb-0'),
  153. Div('des_approach', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  154. Div(Div('des_tech', css_class='form-group col-md-6 mb-0'),
  155. Div('des_visual', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  156. ))
  157. class InteractionForm(forms.ModelForm):
  158. class Meta:
  159. model = Interaction
  160. fields = ('communtity','host','legal_form','issues','impact','tools','tools_used','next_steps')
  161. def __init__(self, *args, **kwargs):
  162. super(InteractionForm, self).__init__(*args, **kwargs)
  163. self.helper = FormHelper()
  164. self.helper.form_tag = False
  165. self.helper.layout = Layout(
  166. Fieldset(
  167. ('Community Ascpects - not mandatory'),
  168. Div(Div('communtity', css_class='form-group col-md-6 mb-0'),
  169. Div('issues', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  170. Div(Div('legal_form', css_class='form-group col-md-6 mb-0'),
  171. Div('host', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  172. Div(Div('impact', css_class='form-group col-md-6 mb-0'),
  173. Div('tools', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  174. Div(Div('tools_used', css_class='form-group col-md-6 mb-0'),
  175. Div('next_steps', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
  176. ))
  177. class LinkForm(forms.ModelForm):
  178. class Meta:
  179. model = Link
  180. fields = ('link_description','link')
  181. #def __init__(self, *args, **kwargs):
  182. # super(LinkForm, self).__init__(*args, **kwargs)
  183. # self.helper = FormHelper()
  184. # self.helper.field_class = 'form_border'
  185. # self.helper.form_tag = False
  186. # self.helper.layout = Layout(
  187. # Fieldset(
  188. # Div(Div('link_description', css_class='form-group col-md-5 mb-0'),
  189. # Div('link', css_class='form-group col-md-5 mb-0'),
  190. # css_class='form-row')
  191. # ))
  192. LinkFormSet = inlineformset_factory(Product,Link, fields = ['link_description','link'], form=LinkForm, extra=3, can_delete=False)
  193. class FormsetHelper(FormHelper):
  194. def __init__(self,*args, **kwargs):
  195. super(FormsetHelper, self).__init__(*args, **kwargs)
  196. #self.form_method = 'post'
  197. self.form_tag = False
  198. #self.render_hidden_fields = True
  199. #self.render_required_fields = True
  200. self.layout = Layout(
  201. Fieldset(
  202. (''),
  203. Div(
  204. Div('link_description', css_class='form-group col-md-4 mb-0'),
  205. Div('link', css_class='form-group col-md-6 mb-0')
  206. , css_class='form-row')
  207. ))
  208. class MediaForm(FileFormMixin, forms.Form):
  209. image = UploadedFileField()
  210. name_for = CharField()
  211. copyright = CharField()
  212. #prefix = 'upload'
  213. def __init__(self, *args, **kwargs):
  214. super(MediaForm, self).__init__(*args, **kwargs)
  215. self.helper = FormHelper()
  216. self.helper.form_tag = False
  217. self.fields['name_for'].label = 'Caption'
  218. self.fields['copyright'].label = 'Copyright of'
  219. self.fields['image'].label = 'Image or Video'
  220. self.fields['image'].help_text = 'Please upload Images in PNG or JPEG format. Upload Video in MP4 format.'
  221. self.layout = Layout(
  222. Fieldset(
  223. (''),
  224. Div(
  225. Div('name_for', css_class='form-group col-md-6 mb-0'),
  226. Div('copyright', css_class='form-group col-md-4 mb-0')
  227. , css_class='form-row'),
  228. Div(
  229. Div('image', css_class='form-group col-md-6 mb-0'),
  230. css_class='form-row'),
  231. ))
  232. class MediaForm_test(FileFormMixin, forms.Form):
  233. image = UploadedFileField()
  234. name_for = CharField()
  235. copyright = CharField()
  236. def __init__(self, *args, **kwargs):
  237. super(MediaForm_test, self).__init__(*args, **kwargs)
  238. self.helper = FormHelper()
  239. self.helper.form_tag = False
  240. class MediaForm1(FileFormMixin, forms.Form):
  241. image = MultipleUploadedFileField()
  242. name_for = CharField()
  243. copyright = CharField()
  244. def __init__(self, *args, **kwargs):
  245. super(MediaForm1, self).__init__(*args, **kwargs)
  246. self.helper = FormHelper()
  247. self.helper.form_tag = False
  248. class MediaForm2(FileFormMixin,forms.Form):
  249. image = UploadedFileField()
  250. name_for = CharField()
  251. copyright = CharField()
  252. def __init__(self, *args, **kwargs):
  253. super(MediaForm2, self).__init__(*args, **kwargs)
  254. self.helper = FormHelper()
  255. self.helper.form_tag = False
  256. MediaFormSet = formset_factory(MediaForm_test, extra=3)
  257. class MediaFormsetHelper(FormHelper):
  258. def __init__(self,*args, **kwargs):
  259. super(MediaFormsetHelper, self).__init__(*args, **kwargs)
  260. self.form_tag = False
  261. self.layout = Layout(
  262. Fieldset(
  263. (''),
  264. Div(
  265. Div('name_for', css_class='form-group col-md-6 mb-0'),
  266. Div('copyright', css_class='form-group col-md-4 mb-0')
  267. , css_class='form-row'),
  268. Div(
  269. Div('image', css_class='form-group col-md-6 mb-0'),
  270. css_class='form-row'),
  271. ))
  272. class VideoForm(forms.ModelForm):
  273. class Meta:
  274. model = Video
  275. fields = ('name_for','copyright','image')