Explorar el Código

rolled back to queryset; updated forms.

Juan Carlos hace 4 años
padre
commit
fb88cff895

+ 12 - 6
marktplatz/forms.py

@@ -242,7 +242,9 @@ class ProductForm(forms.ModelForm, GeneralFields):
 
     class Meta:
         model = Product
-        fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen','edit','public', )
+        fields = ( 'terms', 'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status',
+        'adresse', 'adresse_zusatz', 'plz', 'website','email','frei','kfrei','ort','rechtsform','orga','mitmachen',
+        'edit','public','type', )
 
 
     def __init__(self,*args, **kwargs):
@@ -254,6 +256,8 @@ class ProductForm(forms.ModelForm, GeneralFields):
        self.fields['learning'].widget  = TinyMCE(attrs={'cols': 80, 'rows': 30})
        self.fields['edit'].widget  = HiddenInput()
        self.fields['public'].widget  = HiddenInput()
+       self.fields['type'].widget  = HiddenInput()
+       self.fields['type'].initial  = 'BASE'
        #
        # extend_help_text
        #
@@ -290,7 +294,7 @@ class ProductForm(forms.ModelForm, GeneralFields):
                       Div('gruendungsjahr',  css_class='col-sm-6 col-6'),
                       Div('betriebgenommen', css_class='col-sm-6 col-6'),
                       css_class='form-row  row'),
-                 'edit','public', 'mitmachen',
+                 'edit','public', 'mitmachen', 'type',
                ),
            )
        self.helper.layout = self.product_layout
@@ -304,6 +308,7 @@ class MobilitaetsForm(ProductForm):
 
     def __init__(self,*args, **kwargs):
         super(MobilitaetsForm, self).__init__(*args, **kwargs)
+        self.fields['type'].initial  = 'MOBI'
 
 
 class ErnaehrungsForm(ProductForm):
@@ -314,7 +319,7 @@ class ErnaehrungsForm(ProductForm):
 
     def __init__(self,*args, **kwargs):
         super(ErnaehrungsForm, self).__init__(*args, **kwargs)
-
+        self.fields['type'].initial  = 'ERNA'
 
 class EnergyForm(ProductForm):
 
@@ -324,7 +329,7 @@ class EnergyForm(ProductForm):
 
     def __init__(self,*args, **kwargs):
         super(EnergyForm, self).__init__(*args, **kwargs)
-
+        self.fields['type'].initial  = 'ENER'
 
 
 class WohnprojektForm(ProductForm):
@@ -356,8 +361,9 @@ class WohnprojektForm(ProductForm):
        #
        self.fields['frei'].label   = "Wohnung Frei"
        self.fields['inseratstext'].label   = "Inseratstext für Raumangebote"
-
-
+       #
+       #
+       self.fields['type'].initial  = 'WOHN'
 
        self.helper = FormHelper()
        self.helper.form_tag = False

+ 10 - 15
marktplatz/models.py

@@ -139,13 +139,18 @@ class Product(models.Model):
         ('Sonstiges', 'Sonstiges'),
     ]
 
+    TYPE = [
+        ('BASE', 'Platz frei'),
+        ('WOHN', 'Wohnprojekt'),
+        ('MOBI', 'Mobilitätsprojekt'),
+        ('ERNA', 'Ernährunsprojekt'),
+        ('ENER', 'Energieprojekt'),
+    ]
+
     @property
     def kind_of_product(self):
             return "Basis Projekt"
 
-    @property
-    def type(self):
-            return "BASE"
 
     @property
     def viewURL(self):
@@ -164,6 +169,8 @@ class Product(models.Model):
     plz             = CharField   ( 'Postleitzahl',   max_length = 64,  help_text="PLZ des Projektes", null = True, blank=True )
     adresse_zusatz  = CharField   ( 'Adresse Zusatz',   max_length = 128,  help_text="Adresse Zusatz", null = True, blank=True )
     ort             = CharField   ( 'Ort',        max_length = 4, choices=ORT, default='WELT', help_text="Beispiel: Wien, 22", null = True, blank=True )
+
+    type            = CharField   ( 'Type',        max_length = 4, choices=TYPE, default='BASE', help_text="", null = True, blank=False )
     website         = URLField    ( 'Website',   max_length = 2048, help_text="Beispiel: https://seestern-aspern.at/", null = True, blank=True )
     email           = EmailField  ( 'Email',   max_length = 2048, help_text="Email des Projektes", null = True, blank=True )
     frei            = CharField   ( 'Platz frei', max_length = 4,    choices=FREI, default='NEIN', help_text="Gibt es freie Wohnungen? Wähle aus der Liste aus!", null = True, blank=False )
@@ -255,9 +262,6 @@ class MobilitaetsProjekt(Product):
     def kind_of_product(self):
             return "Mobilitätsprojekt"
 
-    @property
-    def type(self):
-            return "MOBI"
 
 class ErnaehrungsProjekt(Product):
 
@@ -265,9 +269,6 @@ class ErnaehrungsProjekt(Product):
     def kind_of_product(self):
             return "Ernährungsprojekt"
 
-    @property
-    def type(self):
-            return "ERNA"
 
 class EnergyProjekt(Product):
 
@@ -275,9 +276,6 @@ class EnergyProjekt(Product):
     def kind_of_product(self):
             return "Energyprojekt"
 
-    @property
-    def type(self):
-            return "ENER"
 
 
 
@@ -397,9 +395,6 @@ class Wohnprojekt(Product):
     def kind_of_product(self):
             return "Wohnprojekt"
 
-    @property
-    def type(self):
-            return "WOHN"
 
     eigentum          = CharField    ( 'Rechtliche Konstruktion', max_length = 6,    choices=EIGENTUM, help_text="Wähle aus der Liste aus!", null = True, blank=True )
     altneu            = CharField    ( 'Altbau/Neubau',  max_length = 4, choices=ALTNEU, help_text="Wähle aus der Liste aus!", null = True, blank=False )

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

@@ -340,7 +340,7 @@ $(document).ready(function(){
 
   <hr class="division-color" style="margin: 35px 0px 35px 0px">
 
-  {% for product in product_list %}
+  {% for product in object_list %}
 
     <!-- rounded-0 border-0 -->
     <div
@@ -415,7 +415,7 @@ $(document).ready(function(){
                     <h3> {{ product.name }}</h3>
                   </div>
                   <button id='product_{{product.pk}}_flipper_back' onclick="" class="border-thin mybtn " data-flip-card="product_{{product.pk}}_card" style=""><i class="fas fa-sync-alt"></i> Steckbrief</button>
-                  <div class="" style=""><span>{{ product.beschreibung }}</span></div>
+                  <div class="" style=""><span>{{ product.beschreibung | safe }}</span></div>
                   <div class="" style=""><strong>Wohnungen:</strong> <span>{{ product.awohnungen }}</span></div>
                   <div class="" style=""><span>{% if product.gemeinschaftr  %}<strong>{% field_name product 'gemeinschaftr' %}:</strong> {{  product.gemeinschaftr  }}{% endif %}</span></div>
                   <div class="" style=""><span>{% if product.kgemeinschaftr  %}<strong>{% field_name product 'kgemeinschaftr' %}:</strong> {{  product.kgemeinschaftr  }}{% endif %}</span></div>

+ 31 - 97
marktplatz/views.py

@@ -143,7 +143,6 @@ class genericView(TemplateView):
         context = {}
         context['object'] = model_to_dict ( instance )
         context['object']['myfield'] = '----------------------------'
-        # print (context)
         return render(request, self.template_name, context )
 
 
@@ -152,7 +151,7 @@ class pagesView(TemplateView):
     template_name =  'marktplatz/generic.html'
     def get(self, request, *args, **kwargs):
         context = {}
-        context['content_a'] = "lalalala"
+        context['content_a'] = ""
         context['content_b'] = config
         # print (config.items() )
 
@@ -290,79 +289,53 @@ class ProductPublish(LoginRequiredMixin, DetailView):
 
 
 
-
-
-
 class ProductsView(generic.ListView):
     model = Product
     template_name = 'marktplatz/product_overview.html'
-    context_object_name = 'product_list'
-    #context_object_name = 'Products'
+    context_object_name = 'object_list'
 
+    def get_queryset(self):
 
-    def filter_queryset(self, qs):
+        qs = super().get_queryset()
 
+        user = self.request.user
 
+        qs = qs.order_by('frei')
 
-        user = self.request.user
         if user.groups.filter(name='submission').exists():
             contact = Contact.objects.get(user=user)
-            qs = list ( filter(  lambda product: (product.contact.pk == contact.pk) , qs ) )
-            return qs
+            return qs.filter(contact = contact)
 
         if user.is_superuser:
             return qs
 
-        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 = qs.filter(public = True)
 
-        qs = self.filter_queryset(qs)
         return qs
 
 
-
     def get_context_data(self, **kwargs):
-            context = super().get_context_data(**kwargs)
-
-            orts = {}
-            for product in context['product_list']:
+        context = super().get_context_data(**kwargs)
 
-                if not product.ort in orts:
-                    orts[product.ort] = product.get_ort_display()
-            context['ort_dict'] = orts
+        orts = {}
+        for product in context['object_list']:
+            if not product.ort in orts:
+                orts[product.ort] = product.get_ort_display()
+        context['ort_dict'] = orts
 
-            user =self.request.user
-            context['user'] = user
-            context['frei_list'] = Product.FREI
-            context['status_list'] = Product.STATUS
-            context['sponsor_cards'] =  Template( config.SPONSOR_CARDS ).render( Context(context) )
-            context['main_card'] =      Template( config.MAIN_CARD ).render( Context(context) )
-            context['textSearchForm'] = textSearchForm()
+        context['user'] = self.request.user
+        context['frei_list'] = Product.FREI
+        context['status_list'] = Product.STATUS
+        context['sponsor_cards'] =  Template( config.SPONSOR_CARDS ).render( Context(context) )
+        context['main_card'] =      Template( config.MAIN_CARD ).render( Context(context) )
+        context['textSearchForm'] = textSearchForm()
 
-            return context
+        return context
 
 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
+    context_object_name = 'object_list'
 
     def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
@@ -380,38 +353,22 @@ class WohnprojekteView(ProductsView):
 
             return context
 
-
 class MobilitaetsProjekteView(ProductsView):
     model = MobilitaetsProjekt
     template_name = 'marktplatz/product_overview.html'
+    context_object_name = 'object_list'
 
-    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
+    context_object_name = 'object_list'
 
 class EnergyProjekteView(ProductsView):
     model = EnergyProjekt
     template_name = 'marktplatz/product_overview.html'
+    context_object_name = 'object_list'
 
-    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):
@@ -438,18 +395,6 @@ class FilterProductsView(ProductsView):
 
         allow_empty = self.get_allow_empty()
 
-        # if not allow_empty:
-        #     # When pagination is enabled and object_list is a queryset,
-        #     # it's better to do a cheap query than to load the unpaginated
-        #     # queryset in memory.
-        #     if self.get_paginate_by(self.object_list) is not None and hasattr(self.object_list, 'exists'):
-        #         is_empty = not self.object_list.exists()
-        #     else:
-        #         is_empty = not self.object_list
-        #     if is_empty:
-        #         raise Http404(_("Empty list and '%(class_name)s.allow_empty' is False.") % {
-        #             'class_name': self.__class__.__name__,
-        #         })
         context = self.get_context_data()
         return self.render_to_response(context)
 
@@ -462,8 +407,7 @@ class SearchProductsView(ProductsView):
         # original qs
         qs = super().get_queryset()
 
-        self.user = self.request.user
-        user = self.user
+        user = self.request.user
 
         if qfilter!=None:
             qs =  qs.filter (name__icontains= qfilter) | qs.filter (claim__icontains= qfilter) | qs.filter (beschreibung__icontains= qfilter) | qs.filter (learning__icontains= qfilter) | qs.filter (status__icontains= qfilter) | qs.filter (adresse__icontains= qfilter) | qs.filter (plz__icontains= qfilter) | qs.filter (adresse__icontains= qfilter) | qs.filter (ort__icontains= qfilter) | qs.filter (website__icontains= qfilter) | qs.filter (email__icontains= qfilter) | qs.filter (kfrei__icontains= qfilter) | qs.filter (rechtsform__icontains= qfilter) | qs.filter (orga__icontains= qfilter)
@@ -493,6 +437,7 @@ class SearchProductsView(ProductsView):
                     'class_name': self.__class__.__name__,
                 })
         context = self.get_context_data()
+        print(context)
         return self.render_to_response(context)
 
 
@@ -500,7 +445,7 @@ class SearchProductsView(ProductsView):
 
 class ProductsListView(generic.ListView):
     model = Product
-    template_name='marktplatz/product_list.html'
+    template_name='marktplatz/object_list.html'
     embed = False
 
     def get_queryset(self):
@@ -810,17 +755,6 @@ class AdminView(LoginRequiredMixin, generic.ListView):
                 current_product.public = False
                 current_product.save()
 
-        # edit = {k: v for k, v in context.items() if k.startswith('product_e')}
-        # for elemk in edit:
-        #     keys = elemk.split(".")
-        #     current_product = Product.objects.get(pk=keys[1])
-        #     if edit[elemk] == 'true'
-        #         if current_product.edit == False :
-        #             current_product.edit = True
-        #             current_product.save()
-        #     else:
-        #         current_product.edit = False
-        #         current_product.save()
 
         return HttpResponseRedirect('')
 
@@ -983,11 +917,11 @@ class addImageView(LoginRequiredMixin, FormView):
     def get(self, request, pk):
         user = self.request.user
         contact = Contact.objects.get(user=user)
-        print (contact.id)
+        # print (contact.id)
         product = Product.objects.filter(contact=contact)
 
         if not Product.objects.filter(contact=contact).filter(pk=pk).exists():
-            print( "no product 1" )
+            # print( "no product 1" )
             raise Http404
 
         product = Product.objects.get(pk=pk)
@@ -996,7 +930,7 @@ class addImageView(LoginRequiredMixin, FormView):
 
         context = request.GET.dict()
         contact = Contact.objects.get(user=self.request.user)
-        print( "before 404" )
+        # print( "before 404" )
         product = get_object_or_404(Product, (Q(pk=pk) & Q(contact=contact)))
         context['product'] = product
         context['images'] = Media.objects.filter(product=product)