Przeglądaj źródła

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

Juan Carlos 4 lat temu
rodzic
commit
ed43b581f1

+ 54 - 8
marktplatz/forms.py

@@ -209,6 +209,7 @@ class ProductForm(forms.ModelForm, GeneralFields):
 
     class Meta:
         model = Product
+        type = 'BASE'
         fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status',
         'adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen',
         '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['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(
                Fieldset(
@@ -264,13 +266,53 @@ class ProductForm(forms.ModelForm, GeneralFields):
                  '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 Meta():
         model =  MobilitaetsProjekt
+        type = 'MOBI'
         fields = ProductForm.Meta.fields + ( )
 
     def __init__(self,*args, **kwargs):
@@ -282,6 +324,7 @@ class ErnaehrungsForm(ProductForm):
 
     class Meta():
         model =  ErnaehrungsProjekt
+        type = 'ERNA'
         fields = ProductForm.Meta.fields + ( )
 
     def __init__(self,*args, **kwargs):
@@ -292,6 +335,7 @@ class EnergyForm(ProductForm):
 
     class Meta():
         model =  EnergyProjekt
+        type = 'ENER'
         fields = ProductForm.Meta.fields + ( )
 
     def __init__(self,*args, **kwargs):
@@ -303,6 +347,7 @@ class WohnprojektForm(ProductForm):
 
     class Meta:
         model = Wohnprojekt
+        type = 'WOHN'
         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',
          )
@@ -318,7 +363,7 @@ class WohnprojektForm(ProductForm):
        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['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)
@@ -331,9 +376,9 @@ class WohnprojektForm(ProductForm):
        #
        #
        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.product_layout,
 
@@ -380,7 +425,8 @@ class WohnprojektForm(ProductForm):
 
                '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 )
     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 )
-    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 )
     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 )

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

@@ -17,56 +17,36 @@
 </style>
 
 <div class="container-lg">
-  <form id='upload_mab' enctype="multipart/form-data" method="post">
-    {% csrf_token %}
+
     <div class="col-sm-10">
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
       <h3>Reichen Sie Ihr Projekt ein</h3>
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
       <div class="col-sm-10" style="margin-bottom: 5px">{{info_txt|safe}}</div>
       <div class="">
-      &nbsp;
+        &nbsp;
       </div>
     </div>
-    <div class="col-sm-10">
-    {% crispy form %}
-    </div>
-
-
     <div class="col-sm-10">
 
+      {% crispy form %}
     </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 class="col-sm-10">
-
-
-             </div>
 
     <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>
 

+ 2 - 0
marktplatz/urls.py

@@ -35,6 +35,8 @@ urlpatterns = [
     path('neues-mobilitaetsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-mobilitaetsprojekt'),
     path('neues-ernaehrungsprojekt/',  views.MobilitaetsProjektCreateView.as_view(), name='neues-ernaehrungsprojekt'),
     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
     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 } )
             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  )
             for superuser in userList:
                 mail.send(
@@ -299,6 +301,8 @@ class ProductPublish(LoginRequiredMixin, DetailView):
         else:
             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
     form_class = ProductForm
     gotoPics = False
+    # success_url = reverse_lazy('meine-projekte')
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context['info_txt'] = Template(config.INFO_TXT).render(Context(context))
         return context
 
+    def get_success_url(self):
+        return reverse_lazy('meine-projekte')
+
     def post(self, request, *args, **kwargs):
         if 'add-image' in request.POST:
             self.gotoPics = True
@@ -696,15 +704,14 @@ class ProductCreateView(LoginRequiredMixin, CreateView):
         product.contact = Contact.objects.get(user = self.request.user)
         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):
 
     def  dispatch(self, request, *args, **kwargs):
-
         if self.kwargs['type'] == 'BASE':
             super().dispatch(request, *args, **kwargs)
         elif self.kwargs['type'] == 'WOHN':
@@ -726,6 +733,16 @@ class ProductGenericCreateView(ProductCreateView):
 
         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):

+ 1 - 1
project_base/templates/footer.html

@@ -10,7 +10,7 @@
     <div class="col-sm-4">
       <p>
         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='IMPRESSUM'  %}">Impressum</a>
       </p>