Juan Carlos před 5 roky
rodič
revize
a5a08839c3
3 změnil soubory, kde provedl 151 přidání a 19 odebrání
  1. 28 4
      marktplatz/forms.py
  2. 122 14
      marktplatz/models.py
  3. 1 1
      marktplatz/widgets.py

+ 28 - 4
marktplatz/forms.py

@@ -1,7 +1,7 @@
 from django import forms
 
 from django.conf import settings
-from .models import Contact, Product, Credit, Description, Interaction, Link, Media, Video
+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
@@ -52,13 +52,26 @@ class SignUpForm(UserCreationForm):
         fields = ('username', 'password1', 'password2')
 
 
+
+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 SubmissionForm(forms.ModelForm):
 
     terms = forms.BooleanField(required=True,  label= ('I accept and have read the Terms of Participation.'))
 
     class Meta:
-        model = Product
-        fields = ('title','country','city','year','owner','teaser_txt','header','category', 'description_txt', 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','frei','mitmachen','rechtsform','ort','orga')
+        model = Wohnprojekt
+        fields = ('title','country','city','year','owner','teaser_txt','header','category', 'description_txt', 'terms',
+        'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','frei','mitmachen','rechtsform','ort','orga',
+         'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'artmodell', 'bautraeger', 'aerwachsene', 'akinder', 'awohnungen', 'akinder', 'wohnflaeche', 'gewerbeflaechen', 'gemeinschaftsflaeche', 'sonstige_flaechen', 'gemeinschaftr', 'sonderwohnformen', 'raumangebot', 'parbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen',
+         )
 
 
     def __init__(self,*args, **kwargs):
@@ -67,7 +80,16 @@ class SubmissionForm(forms.ModelForm):
        #
        #
        #
-       self.fields['orga'].widget = ListTextWidget(data_list=Product.ORGANIZATION,  name='orga_list')
+       #
+       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['artmodell'].widget = ListTextWidget(data_list=Wohnprojekt.ARTMODELL,  name='artmodell_list')
+       self.fields['artmodell'].widget = ListTextWidget(data_list=Wohnprojekt.ARTMODELL,  name='artmodell_list')
+       #
+       #
+       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)
+       #
        #
        #
        #
@@ -106,6 +128,8 @@ class SubmissionForm(forms.ModelForm):
                   Div('betriebgenommen', css_class='form-group col-xs-6 mb-0'),
                   css_class='form-row'),
 
+             'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'artmodell', 'bautraeger', 'aerwachsene', 'akinder', 'awohnungen', 'akinder', 'wohnflaeche', 'gewerbeflaechen', 'gemeinschaftsflaeche', 'sonstige_flaechen', 'gemeinschaftr', 'sonderwohnformen', 'raumangebot', 'parbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen',
+
            )
        )
 

+ 122 - 14
marktplatz/models.py

@@ -132,9 +132,11 @@ class Product(models.Model):
     ]
 
     RECHTSFORM = [
-        ('GMBH', 'GmbH'),
-        ('VERE', 'Verein'),
-        ('ANDE', 'Adere'),
+        ('GmbH', 'GmbH'),
+        ('Verein', 'Verein'),
+        ('Genossenschaft', 'Genossenschaft'),
+        ('GbR', 'GbR'),
+        ('Andere', 'Andere'),
     ]
 
     ORT = [
@@ -189,12 +191,14 @@ class Product(models.Model):
     betriebgenommen = models.IntegerField('in Betrieb genommen in Jahr', help_text="Wann wurde das Projekt in Betrieb genommen?", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
     status   = models.CharField( 'Status',    max_length = 3,    choices=STATUS, default='ENT', help_text="Was ist der Status des Projektes" , null = True, blank=True )
     adresse  = models.CharField( 'Adresse',   max_length = 256,  help_text="Adresse des Projektes", null = True, blank=True )
+    plz             = models.CharField   ( 'Adresse',   max_length = 256,  help_text="PLZ des Projektes", null = True, blank=True )
+    adresse_zusatz  = models.CharField   ( 'Adresse Zusatz',   max_length = 256,  help_text="Adresse Zusatz", null = True, blank=True )
+    ort             = models.CharField   ( 'Ort',        max_length = 4, choices=ORT, default='WELT', help_text="Ort des Projektes", null = True, blank=True )
     website  = models.URLField ( 'Website',   max_length = 2048, help_text="Website des des Projektes", null = True, blank=True )
     frei     = models.CharField( 'Platz frei', max_length = 4,    choices=FREI, default='NEIN', help_text="Gibt es freie Plätze?", null = True, blank=True )
+    rechtsform      = models.CharField   ( 'Rechtsform', max_length = 32, help_text="Rechtsform des Projektes", null = True, blank=True )
+    orga            = models.CharField   ( 'Organisationsform',  max_length = 64, help_text="Organisationsform des Projektes.", null = True, blank=True )
     mitmachen  = models.BooleanField( 'Mitmachen möglich', default=False, help_text="Kann jemand mitmachen?", null = True, blank=True )
-    rechtsform = models.CharField( 'Rechtsform', max_length = 4, choices=RECHTSFORM, default='ANDE', help_text="Rechtsform des Projektes", null = True, blank=True )
-    ort        = models.CharField( 'Ort',        max_length = 4, choices=ORT, default='WELT', help_text="Ort des Projektes", null = True, blank=True )
-    orga       = models.CharField( 'Organisationsform',  max_length = 128,  choices=ORGANIZATION, default='Sonstiges', help_text="Organisationsform des Projektes", null = True, blank=True )
 
     title = models.CharField('Product Title',max_length = 100)
     country = CountryField(blank=True,multiple=True, help_text="")
@@ -229,12 +233,6 @@ class Product(models.Model):
 
 class Wohnprojekt(Product):
 
-    BAUWEISE = [
-        ('HOLZ', 'Holzbau'),
-        ('ALTB', 'Altbau'),
-        ('NEUB', 'Neubau'),
-    ]
-
     EIGENTUM = [
         ('GEMIET', 'Generalmiete'),
         ('WOHNHM', 'Wohnheim'),
@@ -246,11 +244,121 @@ class Wohnprojekt(Product):
         ('GEFOR', 'Gefördert'),
         ('NICHT', 'Nicht Gefördert'),
     ]
+    ALTNEU = [
+        ('ALTB', 'Altbau'),
+        ('NEUB', 'Neubau'),
+    ]
+
+    ARTMODELL =[
+        ('Die Wohnungen werden individiuell von einem Bauträger angemietet / Gemeinschaftsräume werden gemeinsam angemietetet', 'Die Wohnungen werden individiuell von einem Bauträger angemietet / Gemeinschaftsräume werden gemeinsam angemietetet'),
+        ('Die Gemeinschaft mietet das ganze Haus oder Teile davon vom Bauträger (z.b. in Form eines Generalmietvetrages). Die Gemeinschaft schließt indiviudelle Nutzungsverträge mit den NutzerInnen ab. (Wird oft so bei Wohnheimen gemacht)', 'Die Gemeinschaft mietet das ganze Haus oder Teile davon vom Bauträger (z.b. in Form eines Generalmietvetrages). Die Gemeinschaft schließt indiviudelle Nutzungsverträge mit den NutzerInnen ab. (Wird oft so bei Wohnheimen gemacht)'),
+        ('Der Bau erfolgt durch einen Bauträger. Die Gemeinschaft erwirbt das Gebäude und das Grundstück im Eigentum und schließt individuelle Nutzungsverträge mit den NutzerInenn ab.', 'Der Bau erfolgt durch einen Bauträger. Die Gemeinschaft erwirbt das Gebäude und das Grundstück im Eigentum und schließt individuelle Nutzungsverträge mit den NutzerInenn ab.'),
+        ('Der Bau erfolgt ohne Bauträger. Die Gemeinschaft erwirbt das Grundstück im Eigentum und baut auf eigene Rechnung und Risiko. Die Gemeinschaft schließt individuelle  Nutzungsverträge mit den NutzerInenn ab.', 'Der Bau erfolgt ohne Bauträger. Die Gemeinschaft erwirbt das Grundstück im Eigentum und baut auf eigene Rechnung und Risiko. Die Gemeinschaft schließt individuelle  Nutzungsverträge mit den NutzerInenn ab.'),
+        ('Es gibt ein individuelles Eigentum an den jeweiligen Wohnungen. Die Eigentümergemeinschaft nutzt und erhält Gemeinschaftsräume.', 'Es gibt ein individuelles Eigentum an den jeweiligen Wohnungen. Die Eigentümergemeinschaft nutzt und erhält Gemeinschaftsräume.'),
+        ('Modell Habitat', 'Modell Habitat'),
+        ('Anderes Modell', 'Anderes Modell'),
+     ]
+
+    BAUTRAEGER = [
+        ('Altmannsdorf - Hetzendorf Gemn. Siedlungsgen.m.b.H', 'Altmannsdorf - Hetzendorf Gemn. Siedlungsgen.m.b.H'),
+        ('EBG Gemn. Ein und Mehrfam. Häuser Baugen.reg..Gen.mbH', 'EBG Gemn. Ein und Mehrfam. Häuser Baugen.reg..Gen.mbH'),
+        ('EGW-Heimstätte Gesellschaft m.b.H.', 'EGW-Heimstätte Gesellschaft m.b.H.'),
+        ('FAMILIENWOHNBAU gemeinnützige Bau- und Siedlungsges. m.b.H.', 'FAMILIENWOHNBAU gemeinnützige Bau- und Siedlungsges. m.b.H.'),
+        ('GARTENHEIM Gemeinn. Familienhäuser Bau- u. Wohnungen regGenmbH', 'GARTENHEIM Gemeinn. Familienhäuser Bau- u. Wohnungen regGenmbH'),
+        ('Migra Gemn. Bau und SiedlungsgesmbH', 'Migra Gemn. Bau und SiedlungsgesmbH'),
+        ('ÖVW Österr. Volkswohnungswerk Gemeinn. Ges mbH', 'ÖVW Österr. Volkswohnungswerk Gemeinn. Ges mbH'),
+        ('SCHWARZATAL Gemeinnützige Wohnungs- u. Siedlungsanlagen GmbH', 'SCHWARZATAL Gemeinnützige Wohnungs- u. Siedlungsanlagen GmbH'),
+        ('WBV-GPA Wohnbauvereinigung für Privatangestellte Gemn. Ges.m.b.H', 'WBV-GPA Wohnbauvereinigung für Privatangestellte Gemn. Ges.m.b.H'),
+        ('WOGEN - Wohnprojekte-Genossenschaft e. Gen.', 'WOGEN - Wohnprojekte-Genossenschaft e. Gen.'),
+        ('Sonstiges', 'Sonstiges'),
+    ]
 
-    anzahlmitglieder  = models.IntegerField('Anzahl der Mitglieder', help_text="Anzahl der Mitglieder", null = True, blank=True )
-    eigentum          = models.CharField( 'Rechtliche Konstruktion', max_length = 6,    choices=EIGENTUM, default='GEMIET', help_text="Rechtliche Konstruktion", null = True, blank=True )
+    GEMEINSCHAFTR = [
+        ('Gemeinschaftsküche', 'Gemeinschaftsküche'),
+        ('Kinderspielraum', 'Kinderspielraum'),
+        ('Sauna / Wellness', 'Sauna / Wellness'),
+        ('Fitnessraum', 'Fitnessraum'),
+        ('Werkstatt', 'Werkstatt'),
+        ('Waschküche', 'Waschküche'),
+        ('Multifunktionsraum', 'Multifunktionsraum'),
+        ('Musikraum', 'Musikraum'),
+        ('Gästewohnung', 'Gästewohnung'),
+        ('Raum für Home-Office', 'Raum für Home-Office'),
+        ('Sonstiges', 'Sonstiges'),
+    ]
 
+    RAUMANGEBOT = [
+        ('Co-Working', 'Co-Working'),
+        ('Geschäftslokal(e)', 'Geschäftslokal(e)'),
+        ('Büros', 'Büros'),
+        ('Veranstaltungsraum', 'Veranstaltungsraum'),
+        ('Gemeinschaftsküche', 'Gemeinschaftsküche'),
+        ('Kinderspielraum', 'Kinderspielraum'),
+        ('Sauna / Wellness', 'Sauna / Wellness'),
+        ('Fitnessraum', 'Fitnessraum'),
+        ('Werkstatt', 'Werkstatt'),
+        ('Waschküche', 'Waschküche'),
+        ('Musikraum', 'Musikraum'),
+        ('Gästewohnung', 'Gästewohnung'),
+    ]
+
+    BAUWEISE = [
+        ('Holz', 'Holz'),
+        ('Beton', 'Beton'),
+        ('Ziegel', 'Ziegel'),
+        ('Mischbauweise', 'Mischbauweise'),
+        ('Sonstiges', 'Sonstiges'),
+    ]
+
+    ZIELGRUPPEN = [
+        ('Seniorinnen', 'Seniorinnen'),
+        ('Alleinerziehende', 'Alleinerziehende'),
+        ('Geflüchtete', 'Geflüchtete'),
+        ('Sonstige', 'Sonstige'),
+    ]
+
+    GPROJEKTE = [
+        ('Foodcoop', 'Foodcoop'),
+        ('Carsharing', 'Carsharing'),
+        ('Urban Gardening', 'Urban Gardening'),
+        ('Sonstiges', 'Sonstiges'),
+    ]
+
+    FREIANGEBOT = [
+        ('Dachterrasse', 'Dachterrasse'),
+        ('Beete', 'Beete'),
+        ('Kinderspielplatz', 'Kinderspielplatz'),
+    ]
 
+    eigentum          = models.CharField   ( 'Rechtliche Konstruktion', max_length = 6,    choices=EIGENTUM, default='GEMIET', help_text="Rechtliche Konstruktion", null = True, blank=True )
+    inseratstext      = models.CharField   ( 'Inseratstext',   max_length = 2048,  help_text="Inseratstext", null = True, blank=True )
+    altneu            = models.CharField   ( 'Altbau/Neubau',  max_length = 4, choices=ALTNEU, help_text="Altbau/Neubau", null = True, blank=False )
+    schwerpunkt       = models.CharField    ( 'Inhaltlicher Schwerpunkt',   max_length = 2048,  help_text="Inhaltlicher Schwerpunkt", null = True, blank=True )
+    artmodell         = models.CharField    ( 'Art der Modells',    max_length = 4096,   choices=ARTMODELL, help_text="Art der Modells", null = True, blank=True )
+    bautraeger        = models.CharField    ( 'Bauträger',    max_length = 4096,   choices=BAUTRAEGER, help_text="Bauträger", null = True, blank=True )
+    aerwachsene       = models.IntegerField( 'Anzahl an Erwachsenen', help_text="Anzahl an Erwachsenen", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
+    akinder           = models.IntegerField( 'Anzahl an Kinder', help_text="Anzahl an Kinder", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
+    @property
+    def amitglieder(self):
+            return aerwachsene + akinder
+    awohnungen        = models.IntegerField( 'Anzahl an Wohnungen', help_text="Anzahl an Wohnungen", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
+    wohnflaeche            = models.IntegerField( 'Wohnfläche', help_text="Wohnfläche", validators=[MinValueValidator(0)], default = 0, null = True, blank=True )
+    gewerbeflaechen        = models.IntegerField( 'Gewerbeflächen', help_text="Gewerbeflächen", validators=[MinValueValidator(0)], default = 0, null = True, blank=True )
+    gemeinschaftsflaeche   = models.IntegerField( 'Gemeinschaftsflächen', help_text="Gemeinschaftsflächen", validators=[MinValueValidator(0)], default = 0, null = True, blank=True )
+    sonstige_flaechen      = models.IntegerField( 'Sonstige Flächen', help_text="Sonstige Flächen", validators=[MinValueValidator(0)], default = 0, null = True, blank=True )
+    @property
+    def flaeche(self):
+            return wohnflaeche + gewerbeflaechen + gemeinschaftsflaechen + sonstige_flaechen
+    gemeinschaftr         = models.CharField    ( 'Gemeinschaftsräume',    max_length = 4096,   choices=GEMEINSCHAFTR, help_text="Gemeinschaftsräume", null = True, blank=True )
+    sonderwohnformen      = models.CharField   ( 'Sonderwohnformen',   max_length = 2048,  help_text="Sonderwohnformen, z.B. Wohncluster, WGs, Sonstiges", null = True, blank=True )
+    raumangebot        = models.CharField    ( 'Raumangebot nach Außen',    max_length = 4096,   choices=RAUMANGEBOT, help_text="Raumangebot nach Außen", null = True, blank=True )
+    parbeiten          = models.IntegerField( 'Wieviele Personen arbeiten im Haus', help_text="Anzahl an Wohnungen", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
+    bauweise            = models.CharField   ( 'Bauweise',  max_length = 64, choices=BAUWEISE, help_text="Bauweise", null = True, blank=False )
+    zielgruppen          = models.CharField   ( 'Besondere Zielgruppen',  max_length = 64, choices=ZIELGRUPPEN, help_text="Besondere Zielgruppen", null = True, blank=False )
+    gprojekte          = models.CharField   ( 'Gemeinschaftliche Projekte',  max_length = 64, choices=GPROJEKTE, help_text="Gemeinschaftliche Projekte", null = True, blank=False )
+    oekologie      =   models.CharField   ( 'Ökologie',  max_length = 2048, help_text="Ökologie", null = True, blank=False )
+    freiraumangebote   = models.CharField   ( 'Freiraumangebote',  max_length = 64, choices=FREIANGEBOT, help_text="Freiraumangebote", null = True, blank=False )
+    gaestwohnungen     = models.IntegerField( 'Wieviele Personen arbeiten im Haus', help_text="Anzahl an Wohnungen", validators=[MinValueValidator(0)], default = 0 )
 
 @receiver(post_delete, sender=Product)
 def auto_delete_reverse_keys(sender, instance, **kwargs):

+ 1 - 1
marktplatz/widgets.py

@@ -6,7 +6,7 @@ class ListTextWidget(forms.TextInput):
         self._name = name
         self._list = data_list
         self.attrs.update({'list': 'list__{}'.format(self._name)})
-
+        
     def render(self, name, value, attrs=None, renderer=None):
         text_html = super(ListTextWidget, self).render(name, value, attrs=attrs)
         data_list = '<datalist id="list__{}">'.format(self._name)