Ver Fonte

fixed overview; added dispatcher for create views

Juan Carlos há 4 anos atrás
pai
commit
fa53f29649

+ 2 - 2
marktplatz/templates/marktplatz/myProducts.html

@@ -49,12 +49,12 @@
     {% endfor %}
 </div>
 
-<a href="{% url 'neues-wohnprojekt' %}"><button class="btn border-dark rounded-0 mybtn" type="submit">Add product </button> </a>
+<a href="{% url 'neues-projekt-dispatch' %}"><button class="btn border-dark rounded-0 mybtn" type="submit">Add product </button> </a>
 
  {% else %}
 <div class="container-fluid">
 
-    <h6>Scheint, als hättest du noch nichts eingetragen :( <br> Gib jetzt ein Projekt ein:<a href="{% url 'neues-wohnprojekt' %}"><button class="btn border-dark rounded-0 mybtn" type="submit">Projekt eintragen </button> </a></h6>
+    <h6>Scheint, als hättest du noch nichts eingetragen :( <br> Gib jetzt ein Projekt ein:<a href="{% url 'neues-projekt-dispatch' %}"><button class="btn border-dark rounded-0 mybtn" type="submit">Projekt eintragen </button> </a></h6>
 </div>
 
 {% endif %}

+ 46 - 0
marktplatz/templates/marktplatz/product_create_dispatch.html

@@ -0,0 +1,46 @@
+{% extends "base_generic.html" %}
+{% load static %}
+{% load compress %}
+{% load crispy_forms_tags %}
+{% crispy product product.helper %}
+{% crispy credits credits.helper %}
+
+{% block content %}
+<link rel="stylesheet" href="{% static "ajaxuploader/css/fileuploader.css" %}">
+
+<style media="screen">
+
+
+
+</style>
+
+<div class="container-lg">
+
+<br><br>
+  <span class=" active boldkur" >
+    Was für ein Projekt magst du eintragen?
+  </span>
+
+<br><br>
+<button class="border-thin mybtn btn-toggle begleitet_true" style="margin-bottom: 2px; " onclick="window.location='{% url 'neues-projekt-type' type='WOHN' %}'" style="">Wohnprojekt</button><br><br>
+<button class="border-thin mybtn btn-toggle begleitet_true" style="margin-bottom: 2px; " onclick="window.location='{% url 'neues-projekt-type' type='MOBI' %}'" style="">Mobbilitätsprojekt</button><br><br>
+<button class="border-thin mybtn btn-toggle begleitet_true" style="margin-bottom: 2px; " onclick="window.location='{% url 'neues-projekt-type' type='ERNA' %}'" style="">Ernährungsprojekt</button><br><br>
+<button class="border-thin mybtn btn-toggle begleitet_true" style="margin-bottom: 2px; " onclick="window.location='{% url 'neues-projekt-type' type='ENER' %}'" style="">Energieprojekt</button>
+
+
+</div>
+
+<div class="">
+  &nbsp; &nbsp;
+</div>
+
+  {% compress js  %}
+  <script src="{% static "ajaxuploader/js/fileuploader.js" %}"></script>
+  <script src="{% static "file_form/file_form.js" %}"></script>
+  {% endcompress %}
+<script>
+  $(function() {
+    initUploadFields($('#upload_mab'));
+  });
+</script>
+{% endblock %}

+ 6 - 4
marktplatz/urls.py

@@ -28,10 +28,12 @@ urlpatterns = [
     # path('wohnprojekte/', views.WohnProjekteView.as_view(), name='wohnprojekte-list'),
 
     # CREATE
-    path('neues-wohnprojekt/', views.WohnProjektCreateView.as_view(), name='neues-wohnprojekt'),
-    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('neues-projekt/',             views.ProductDispatchView.as_view(),          name='neues-projekt-dispatch'),
+    path('neues-projekt/<slug:type>/', views.ProductGenericCreateView.as_view(),     name='neues-projekt-type'),
+    path('neues-wohnprojekt/',         views.WohnProjektCreateView.as_view(),        name='neues-wohnprojekt'),
+    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'),
 
     # UPDATE
     path('projekt-bearbeiten/<slug:type>/<int:pk>', views.ProductGenericUpdateView.as_view(),     name='projekt-bearbeiten-type'),

+ 75 - 25
marktplatz/views.py

@@ -299,46 +299,40 @@ class ProductsView(generic.ListView):
     context_object_name = 'product_list'
     #context_object_name = 'Products'
 
-    def get_queryset(self):
-        # original qs
-        # qs = super().get_queryset()
 
-        wohnprojekte = Wohnprojekt.objects.all()
-        mobilitaetsprojekte = MobilitaetsProjekt.objects.all()
-        ernaehrungsprojekte = ErnaehrungsProjekt.objects.all()
-        energyprojekte = EnergyProjekt.objects.all()
+    def filter_queryset(self, qs):
 
-        # qs = qs.order_by('frei')
-        qs = sorted ( itertools.chain(wohnprojekte, mobilitaetsprojekte, ernaehrungsprojekte, energyprojekte), key= lambda product: product.frei )
 
-        self.user = self.request.user
-        user = self.user
 
+        user = self.request.user
         if user.groups.filter(name='submission').exists():
             contact = Contact.objects.get(user=user)
-
-            # def filter_usr(product):
-            #     print( product.contact.pk, contact.pk,  product.contact.pk == contact.pk )
-            #     return product.contact.pk == contact.pk
-            # qs = list( filter(  filter_usr , qs ) )
-
             qs = list ( filter(  lambda product: (product.contact.pk == contact.pk) , qs ) )
-
             return qs
 
-
-        if user.groups.filter(name='submission').exists():
-            contact = Contact.objects.get(user=user)
-            return qs.filter(contact = contact)
-
         if user.is_superuser:
             return qs
 
-        # qs = qs.filter(public = True)
         qs = list ( filter(  lambda product: (product.public == True) , qs ) )
 
+        if 1==1:
+            return qs
+
+    def get_queryset(self):
+
+        wohnprojekte = Wohnprojekt.objects.all()
+        mobilitaetsprojekte = MobilitaetsProjekt.objects.all()
+        ernaehrungsprojekte = ErnaehrungsProjekt.objects.all()
+        energyprojekte = EnergyProjekt.objects.all()
+
+        # qs = qs.order_by('frei')
+        qs = sorted ( itertools.chain(wohnprojekte, mobilitaetsprojekte, ernaehrungsprojekte, energyprojekte), key= lambda product: product.frei )
+
+        qs = self.filter_queryset(qs)
         return qs
 
+
+
     def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
 
@@ -363,12 +357,19 @@ class WohnprojekteView(ProductsView):
     model = Wohnprojekt
     template_name = 'marktplatz/product_overview.html'
 
+    def get_queryset(self):
+
+        wohnprojekte = Wohnprojekt.objects.all()
+        qs = sorted ( itertools.chain(wohnprojekte), key= lambda product: product.frei )
+        qs = self.filter_queryset(qs)
+        return qs
+
     def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
 
             raum_agebote = {}
 
-            for product in context['product_list']:
+            for product in context['object_list']:
                 for raum in product.raumangebot:
                     if not (raum in raum_agebote):
                         raum_agebote[raum] = product.raumangebot.choices[raum]
@@ -384,14 +385,33 @@ class MobilitaetsProjekteView(ProductsView):
     model = MobilitaetsProjekt
     template_name = 'marktplatz/product_overview.html'
 
+    def get_queryset(self):
+        mobilitaetsprojekte = MobilitaetsProjekt.objects.all()
+        qs = sorted ( itertools.chain(mobilitaetsprojekte), key= lambda product: product.frei )
+        qs = self.filter_queryset(qs)
+        return qs
+
+    # def get_context_data(self, *, object_list=self.qs, **kwargs):
+
 class ErnaerungsProjekteView(ProductsView):
     model = ErnaehrungsProjekt
     template_name = 'marktplatz/product_overview.html'
 
+    def get_queryset(self):
+        ernaehrungsprojekte = ErnaehrungsProjekt.objects.all()
+        qs = sorted ( itertools.chain(ernaehrungsprojekte), key= lambda product: product.frei )
+        qs = self.filter_queryset(qs)
+        return qs
+
 class EnergyProjekteView(ProductsView):
     model = EnergyProjekt
     template_name = 'marktplatz/product_overview.html'
 
+    def get_queryset(self):
+        energyprojekte = EnergyProjekt.objects.all()
+        qs = sorted ( itertools.chain(energyprojekte), key= lambda product: product.frei )
+        qs = self.filter_queryset(qs)
+        return qs
 
 
 class FilterProductsView(ProductsView):
@@ -571,6 +591,9 @@ class ProduktCardDetailView(ProduktDetailView):
     template_name = 'marktplatz/product_detail_card.html'
 
 
+class ProductDispatchView(TemplateView):
+
+    template_name = 'marktplatz/product_create_dispatch.html'
 
 
 class ProductCreateView(LoginRequiredMixin, CreateView):
@@ -599,6 +622,33 @@ class ProductCreateView(LoginRequiredMixin, CreateView):
         else:
             return HttpResponseRedirect(  reverse('meine-projekte')  )
 
+class ProductGenericCreateView(ProductCreateView):
+
+    def  dispatch(self, request, *args, **kwargs):
+
+        if self.kwargs['type'] == 'BASE':
+            super().dispatch(request, *args, **kwargs)
+        elif self.kwargs['type'] == 'WOHN':
+            self.model = Wohnprojekt
+            self.form_class = WohnprojektForm
+            return super().dispatch(request, *args, **kwargs)
+        elif self.kwargs['type'] == 'MOBI':
+            self.model = MobilitaetsProjekt
+            self.form_class = MobilitaetsForm
+            return super().dispatch(request, *args, **kwargs)
+        elif self.kwargs['type'] == 'ERNA':
+            self.model = ErnaehrungsProjekt
+            self.form_class = ErnaehrungsForm
+            return super().dispatch(request, *args, **kwargs)
+        elif self.kwargs['type'] == 'ENER':
+            self.model = EnergyProjekt
+            self.form_class = EnergyForm
+            return super().dispatch(request, *args, **kwargs)
+
+        raise Http404('Keine Objekte gefunden' )
+
+
+
 class WohnProjektCreateView(ProductCreateView):
     model = Wohnprojekt
     form_class = WohnprojektForm

+ 1 - 1
project_base/templates/base_generic.html

@@ -289,7 +289,7 @@
       <!-- <a class=" nav-link active nav-right boldkur mab-menu-elm  " style="" href="{% url 'login' %}">Suchagent</a> -->
     </li>
     <li class="nav-item mab-nav-item mab-menu-mega">
-      <span class=" active boldkur mab-menu-elm" onclick="window.location='{% url 'neues-wohnprojekt' %}' ">Projekt eintragen</span>
+      <span class=" active boldkur mab-menu-elm" onclick="window.location='{% url 'neues-projekt-dispatch' %}' ">Projekt eintragen</span>
       <!-- <a class=" nav-link active nav-right boldkur mab-menu-elm " style="" href="{% url 'login' %}">Projekt eintragen</a> -->
     </li>