Просмотр исходного кода

forms overhaul; submit and publish; submit and submit pics.

Juan Carlos 4 лет назад
Родитель
Сommit
ed43b581f1

+ 54 - 8
marktplatz/forms.py

@@ -209,6 +209,7 @@ class ProductForm(forms.ModelForm, GeneralFields):
 
 
     class Meta:
     class Meta:
         model = Product
         model = Product
+        type = 'BASE'
         fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status',
         fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status',
         'adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen',
         'adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen',
         'edit','public','type', )
         'edit','public','type', )
@@ -231,8 +232,9 @@ class ProductForm(forms.ModelForm, GeneralFields):
        self.fields['orga'].help_text        = extend_help_text (self.fields['orga'].help_text, Product.ORGANIZATION)
        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.fields['rechtsform'].help_text  = extend_help_text (self.fields['rechtsform'].help_text, Product.RECHTSFORM)
 
 
-       self.helper = FormHelper()
-       self.helper.form_tag = False
+       self.helper = FormHelper(  )
+       self.helper.attrs = {'id': 'upload_mab', 'enctype': 'multipart/form-dat' }
+       # self.helper.form_tag = True
 
 
        self.product_layout = Layout(
        self.product_layout = Layout(
                Fieldset(
                Fieldset(
@@ -264,13 +266,53 @@ class ProductForm(forms.ModelForm, GeneralFields):
                  'edit','public', 'mitmachen', 'type',
                  'edit','public', 'mitmachen', 'type',
                ),
                ),
            )
            )
-       self.helper.layout = self.product_layout
+
+       self.submit_layout = Layout(
+        'terms',
+
+
+
+        HTML("<br>"),
+
+        Div(
+          Div(
+              ButtonHolder(
+              Submit('submit', 'Speichern',
+              onclick='this.form.action="./";',
+              css_class='border-thin mybtn')
+              ),
+          css_class='col-sm-4 col-4'),
+          Div(
+            ButtonHolder(
+              Submit('submit', 'Speichern & Bilder hochladen',
+                onclick='this.form.action="{}";'.format(  reverse_lazy( 'neues-projekt-submit-pics', kwargs=  { 'type': self.Meta.type }  )  ),
+                css_class='border-thin mybtn')
+          ),
+          css_class='col-sm-4 col-4'),
+          Div(
+            ButtonHolder(
+                Submit('submit', 'Speichern und Freischaltung Anfragen',
+                  onclick='this.form.action="{}";'.format(  reverse_lazy( 'neues-projekt-publish', kwargs=  { 'type': self.Meta.type }  )  ),
+                  css_class='border-thin mybtn'
+                  ),
+             HTML("<br><p>Dein Projekt ist noch nicht für jede Person sichtbar, damit wir dein Projekt freischalten, klicke auf diesen Button.</p>")
+            ),
+            css_class='col-sm-4 col-4'),
+          css_class='form-row  row'),
+        )
+
+
+       self.helper.layout = Layout(
+        self.product_layout,
+        self.submit_layout,
+        )
 
 
 
 
 class MobilitaetsForm(ProductForm):
 class MobilitaetsForm(ProductForm):
 
 
     class Meta():
     class Meta():
         model =  MobilitaetsProjekt
         model =  MobilitaetsProjekt
+        type = 'MOBI'
         fields = ProductForm.Meta.fields + ( )
         fields = ProductForm.Meta.fields + ( )
 
 
     def __init__(self,*args, **kwargs):
     def __init__(self,*args, **kwargs):
@@ -282,6 +324,7 @@ class ErnaehrungsForm(ProductForm):
 
 
     class Meta():
     class Meta():
         model =  ErnaehrungsProjekt
         model =  ErnaehrungsProjekt
+        type = 'ERNA'
         fields = ProductForm.Meta.fields + ( )
         fields = ProductForm.Meta.fields + ( )
 
 
     def __init__(self,*args, **kwargs):
     def __init__(self,*args, **kwargs):
@@ -292,6 +335,7 @@ class EnergyForm(ProductForm):
 
 
     class Meta():
     class Meta():
         model =  EnergyProjekt
         model =  EnergyProjekt
+        type = 'ENER'
         fields = ProductForm.Meta.fields + ( )
         fields = ProductForm.Meta.fields + ( )
 
 
     def __init__(self,*args, **kwargs):
     def __init__(self,*args, **kwargs):
@@ -303,6 +347,7 @@ class WohnprojektForm(ProductForm):
 
 
     class Meta:
     class Meta:
         model = Wohnprojekt
         model = Wohnprojekt
+        type = 'WOHN'
         fields = ProductForm.Meta.fields + (
         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',
          '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',
          )
          )
@@ -318,7 +363,7 @@ class WohnprojektForm(ProductForm):
        self.fields['zielgruppen'].widget = ListTextWidget(data_list=Wohnprojekt.ZIELGRUPPEN,  name='zielgruppen_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['gprojekte'].widget   = ListTextWidget(data_list=Wohnprojekt.GPROJEKTE,  name='gprojekte_list')
        self.fields['freiraumangebote'].widget  = ListTextWidget(data_list=Wohnprojekt.FREIANGEBOT,  name='freiraumangebote_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['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['bauweise'].help_text    = extend_help_text (self.fields['bauweise'].help_text, Wohnprojekt.BAUWEISE)
@@ -331,9 +376,9 @@ class WohnprojektForm(ProductForm):
        #
        #
        #
        #
        self.fields['type'].initial  = 'WOHN'
        self.fields['type'].initial  = 'WOHN'
-
-       self.helper = FormHelper()
-       self.helper.form_tag = False
+       #
+       # self.helper = FormHelper()
+       # self.helper.form_tag = False
        self.helper.layout = Layout(
        self.helper.layout = Layout(
             self.product_layout,
             self.product_layout,
 
 
@@ -380,7 +425,8 @@ class WohnprojektForm(ProductForm):
 
 
                'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'urbanem',
                'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'urbanem',
 
 
-           )
+           ),
+           self.submit_layout,
        )
        )
 
 
 
 

+ 1 - 1
marktplatz/models.py

@@ -407,7 +407,7 @@ class Wohnprojekt(Product):
     kgemeinschaftr     = CharField         ( 'Gemeinschaftsräume - Sonstiges', max_length = 2048, help_text="Gibt es noch andere/weitere Gemeinschaftsräume, die nicht in der Liste stehen?", null = True, blank=True )
     kgemeinschaftr     = CharField         ( 'Gemeinschaftsräume - Sonstiges', max_length = 2048, help_text="Gibt es noch andere/weitere Gemeinschaftsräume, die nicht in der Liste stehen?", null = True, blank=True )
     raumangebot        = MultiSelectField  ( 'Raumangebot nach Außen',    max_length = 1024,   choices=RAUMANGEBOT, help_text="Mehrfachnennungen sind möglich.", null = True, blank=True )
     raumangebot        = MultiSelectField  ( 'Raumangebot nach Außen',    max_length = 1024,   choices=RAUMANGEBOT, help_text="Mehrfachnennungen sind möglich.", null = True, blank=True )
     kraumangebot       = CharField         ( 'Raumangebot nach Außen - Sonstiges',    max_length = 512,  help_text="Welche Raumangebote bietet ihr nach Außen an?", null = True, blank=True )
     kraumangebot       = CharField         ( 'Raumangebot nach Außen - Sonstiges',    max_length = 512,  help_text="Welche Raumangebote bietet ihr nach Außen an?", null = True, blank=True )
-    gewerbe            = CharField         ( 'Gewerbe',  max_length = 64, choices=GEWERBE, help_text="Was gibt es für Gewerbe?", null = True, blank=False )
+    gewerbe            = MultiSelectField  ( 'Gewerbe',  max_length = 64, choices=GEWERBE, help_text="Was gibt es für Gewerbe?", null = True, blank=True )
     inseratstext       = TextField         ( 'Raumangebote',   max_length = 1024,  help_text="Möchtet ihr euer Raumangebot inserieren? Dann habt ihr hier die Möglichkeit einen Inserattext mit dem Angebot zu verfassen. Beispiel: Ihr könnt für Veranstaltungen unseren Multifunktionsraum mieten. Außerdem haben wir laufen Plätze in unserem Coworkingspace frei. Kontaktiert uns per Email!", null = True, blank=True )
     inseratstext       = TextField         ( 'Raumangebote',   max_length = 1024,  help_text="Möchtet ihr euer Raumangebot inserieren? Dann habt ihr hier die Möglichkeit einen Inserattext mit dem Angebot zu verfassen. Beispiel: Ihr könnt für Veranstaltungen unseren Multifunktionsraum mieten. Außerdem haben wir laufen Plätze in unserem Coworkingspace frei. Kontaktiert uns per Email!", null = True, blank=True )
     sonderwohnformen   = CharField         ( 'Sonderwohnformen',   max_length = 512,  help_text='Welche Sonderwohnformen hat das Projekt? (z.B. Wohncluster, WGs, Sonstiges) Beispiel: Wir bieten sogenannte "Flexwohnungen" an, die auf drei Jahre befristet vermietet werden. Mit Flexwohnungen können wir auf familiäre Veränderungen reagieren. z.b. bei Nachwuchs können wir die Flexwohnungen einer wachsenden Familie zuschlagen.', null = True, blank=True )
     sonderwohnformen   = CharField         ( 'Sonderwohnformen',   max_length = 512,  help_text='Welche Sonderwohnformen hat das Projekt? (z.B. Wohncluster, WGs, Sonstiges) Beispiel: Wir bieten sogenannte "Flexwohnungen" an, die auf drei Jahre befristet vermietet werden. Mit Flexwohnungen können wir auf familiäre Veränderungen reagieren. z.b. bei Nachwuchs können wir die Flexwohnungen einer wachsenden Familie zuschlagen.', null = True, blank=True )
     parbeiten          = IntegerField      ( 'Wie viele Personen arbeiten im Haus', help_text="Damit sind Personen gemeint die in Gewerbräumen, in einer Praxis, einem Coworking usf. arbeiten.", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )
     parbeiten          = IntegerField      ( 'Wie viele Personen arbeiten im Haus', help_text="Damit sind Personen gemeint die in Gewerbräumen, in einer Praxis, einem Coworking usf. arbeiten.", validators=[MinValueValidator(0), MaxValueValidator(9999)], null = True, blank=True )

+ 9 - 29
marktplatz/templates/marktplatz/product_create.html

@@ -17,56 +17,36 @@
 </style>
 </style>
 
 
 <div class="container-lg">
 <div class="container-lg">
-  <form id='upload_mab' enctype="multipart/form-data" method="post">
-    {% csrf_token %}
+
     <div class="col-sm-10">
     <div class="col-sm-10">
       <div class="">
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
       </div>
       <h3>Reichen Sie Ihr Projekt ein</h3>
       <h3>Reichen Sie Ihr Projekt ein</h3>
       <div class="">
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
       </div>
       <div class="col-sm-10" style="margin-bottom: 5px">{{info_txt|safe}}</div>
       <div class="col-sm-10" style="margin-bottom: 5px">{{info_txt|safe}}</div>
       <div class="">
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
       </div>
     </div>
     </div>
-    <div class="col-sm-10">
-    {% crispy form %}
-    </div>
-
-
     <div class="col-sm-10">
     <div class="col-sm-10">
 
 
+      {% crispy form %}
     </div>
     </div>
 
 
 
 
+    <div class="col-sm-10">
 
 
-       <div class="col-sm-10">
-
-         <div class='form-error' style="" >{{ form_errors }}</div>
-      {{ form.terms|as_crispy_field  }}
+      <div class='form-error' style="">{{ form_errors }}</div>
 
 
     </div>
     </div>
-             <div class="col-sm-10">
-
-
-             </div>
 
 
     <div class="col-sm-10" style="margin-bottom: 5px">
     <div class="col-sm-10" style="margin-bottom: 5px">
-      <br><br>
-      <div class="buttonHolder">
-        <input type="submit" name="submit" class=" btn border-thin mybtn" style="margin-right: " value="Speichern">
-        <span class="">
-          &nbsp;&nbsp;&nbsp;
-        </span>
-        <input type="submit" name="add-image" class="btn border-thin mybtn" value="Absenden & Bilder hochladen">
-        <br><br>
-      </div>
-    </div>
+      <br>
 
 
-  </form>
+    </div>
 
 
 </div>
 </div>
 
 

+ 2 - 0
marktplatz/urls.py

@@ -35,6 +35,8 @@ urlpatterns = [
     path('neues-mobilitaetsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-mobilitaetsprojekt'),
     path('neues-mobilitaetsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-mobilitaetsprojekt'),
     path('neues-ernaehrungsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-ernaehrungsprojekt'),
     path('neues-ernaehrungsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-ernaehrungsprojekt'),
     path('neues-energieprojekt/',      views.EnergyProjektCreateView.as_view(),      name='neues-energieprojekt'),
     path('neues-energieprojekt/',      views.EnergyProjektCreateView.as_view(),      name='neues-energieprojekt'),
+    path('np-submit-pics/<slug:type>/',  views.ProductCreateAddPicsView.as_view(),     name='neues-projekt-submit-pics'),
+    path('np-publish/<slug:type>/',      views.ProductCreatePublishView.as_view(),     name='neues-projekt-publish'),
 
 
     # UPDATE
     # UPDATE
     path('projekt-bearbeiten/<slug:type>/<int:pk>', views.ProductGenericUpdateView.as_view(),     name='projekt-bearbeiten-type'),
     path('projekt-bearbeiten/<slug:type>/<int:pk>', views.ProductGenericUpdateView.as_view(),     name='projekt-bearbeiten-type'),

+ 22 - 5
marktplatz/views.py

@@ -282,6 +282,8 @@ class ProductPublish(LoginRequiredMixin, DetailView):
             product_url = reverse( 'product-detail', kwargs=  { 'pk': product.pk } )
             product_url = reverse( 'product-detail', kwargs=  { 'pk': product.pk } )
             publishmessage = "Ein Benutzer möchte folgendes Projekt freigeben: {}, {}".format( product.name, request.get_host() + product_url )
             publishmessage = "Ein Benutzer möchte folgendes Projekt freigeben: {}, {}".format( product.name, request.get_host() + product_url )
 
 
+            print (publishmessage)
+
             userList =User.objects.filter( is_superuser = 1  )
             userList =User.objects.filter( is_superuser = 1  )
             for superuser in userList:
             for superuser in userList:
                 mail.send(
                 mail.send(
@@ -299,6 +301,8 @@ class ProductPublish(LoginRequiredMixin, DetailView):
         else:
         else:
             raise Http404
             raise Http404
 
 
+    def post(self, request, *args, **kwargs):
+        return self.get(self, request, *args, **kwargs)
 
 
 
 
 
 
@@ -680,12 +684,16 @@ class ProductCreateView(LoginRequiredMixin, CreateView):
     model = Product
     model = Product
     form_class = ProductForm
     form_class = ProductForm
     gotoPics = False
     gotoPics = False
+    # success_url = reverse_lazy('meine-projekte')
 
 
     def get_context_data(self, **kwargs):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context = super().get_context_data(**kwargs)
         context['info_txt'] = Template(config.INFO_TXT).render(Context(context))
         context['info_txt'] = Template(config.INFO_TXT).render(Context(context))
         return context
         return context
 
 
+    def get_success_url(self):
+        return reverse_lazy('meine-projekte')
+
     def post(self, request, *args, **kwargs):
     def post(self, request, *args, **kwargs):
         if 'add-image' in request.POST:
         if 'add-image' in request.POST:
             self.gotoPics = True
             self.gotoPics = True
@@ -696,15 +704,14 @@ class ProductCreateView(LoginRequiredMixin, CreateView):
         product.contact = Contact.objects.get(user = self.request.user)
         product.contact = Contact.objects.get(user = self.request.user)
         product.save()
         product.save()
 
 
-        if (self.gotoPics):
-            return HttpResponseRedirect(reverse('add-image', kwargs={'pk': product.pk}))
-        else:
-            return HttpResponseRedirect(  reverse('meine-projekte')  )
+        self.object = product
+
+        return HttpResponseRedirect(self.get_success_url())
+
 
 
 class ProductGenericCreateView(ProductCreateView):
 class ProductGenericCreateView(ProductCreateView):
 
 
     def  dispatch(self, request, *args, **kwargs):
     def  dispatch(self, request, *args, **kwargs):
-
         if self.kwargs['type'] == 'BASE':
         if self.kwargs['type'] == 'BASE':
             super().dispatch(request, *args, **kwargs)
             super().dispatch(request, *args, **kwargs)
         elif self.kwargs['type'] == 'WOHN':
         elif self.kwargs['type'] == 'WOHN':
@@ -726,6 +733,16 @@ class ProductGenericCreateView(ProductCreateView):
 
 
         raise Http404('Keine Objekte gefunden' )
         raise Http404('Keine Objekte gefunden' )
 
 
+class ProductCreateAddPicsView (ProductGenericCreateView):
+
+    def get_success_url(self):
+        return reverse_lazy('add-image',  kwargs={'pk': self.object.id }  )
+
+
+class ProductCreatePublishView (ProductGenericCreateView):
+
+    def get_success_url(self):
+        return reverse_lazy('product-publish',  kwargs={'pk': self.object.id }  )
 
 
 
 
 class WohnProjektCreateView(ProductCreateView):
 class WohnProjektCreateView(ProductCreateView):

+ 1 - 1
project_base/templates/footer.html

@@ -10,7 +10,7 @@
     <div class="col-sm-4">
     <div class="col-sm-4">
       <p>
       <p>
         Eine Website von
         Eine Website von
-        <a href="https://realitylab.at/">RealityLab</a>
+        <a href="https://realitylab.at/">realitylab</a>
         <a href="{% url 'pages-generic'  page='DATENSCHUTZRICHTLINIE' %}">Datenschutzerk&auml;rung</a> |
         <a href="{% url 'pages-generic'  page='DATENSCHUTZRICHTLINIE' %}">Datenschutzerk&auml;rung</a> |
         <a href="{% url 'pages-generic'  page='IMPRESSUM'  %}">Impressum</a>
         <a href="{% url 'pages-generic'  page='IMPRESSUM'  %}">Impressum</a>
       </p>
       </p>