Kaynağa Gözat

improved search to include more fields

Juan Carlos 4 yıl önce
ebeveyn
işleme
47b6115c94
2 değiştirilmiş dosya ile 81 ekleme ve 30 silme
  1. 8 18
      marktplatz/models.py
  2. 73 12
      marktplatz/views.py

+ 8 - 18
marktplatz/models.py

@@ -158,6 +158,8 @@ class Product(models.Model):
 
 
 
+
+
     name            = CharField   ( 'Name', max_length = 128, help_text="Name des Projekts. Beispiel: Seestern", null = True, blank=True )
     claim           = CharField   ( 'Claim / Untertitel', max_length = 256, help_text="Beispiel: Wohnprojekt Seestern Aspern", null = True, blank=True )
     beschreibung    = TextField   ( 'Projektbeschreibung', max_length = 2048, help_text="Beispiel: Das Wohnprojekt Seestern Aspern wurde als eines von fünf Baugruppenprojekten in der Seestadt aspern auf dem Baufeld D13 realisiert. Der Seestern ist ein Projekt für Menschen jeden Alters, die Initiative übernehmen und mit anderen einen gemeinsamen Mehrwert in einem eigenen Wohnhaus schaffen wollen. Gut erreichbar mit der U2 und in der Nähe der Lobau. Ein Wohnprojekt, das von Anfang an von den zukünftigen BewohnerInnen mitgestaltet wurde und mit den Menschen wächst. In der gemeinsam formulierten Vision steht die lebendige Architektur, die Gemeinschaft und Privatsphäre im Vordergrund.", null = True, blank=True )
@@ -188,27 +190,15 @@ class Product(models.Model):
 
 
 
+    # @property
+    # def stringToSearch(self):
+    #     stringToSearch = self.name +   self.claim +      self.beschreibung + self.learning
+    #     return stringToSearch
+
+
     def user_can_manage(self, user):
         return user.contact.id == self.contact.id
 
-    # @classmethod
-    # def get_manageable_or_404(cls, user, *args, **kwargs):
-    #     item = get_object_or_404(cls, *args, **kwargs)
-    #     if not item.user_can_manage(user):
-    #         raise PermissionDenied
-    #     return item
-    #
-    # @classmethod
-    # def check_manageable(cls, user, *args, **kwargs):
-    #     product = get_object_or_404(cls, *args, **kwargs)
-    #     if product.user_can_manage(user):
-    #         return True
-    #     return False
-
-    # def obj_check_manageable(self, user, *args, **kwargs):
-    #     if self.user_can_manage(user):
-    #         return True
-    #     return False
 
     def __str__(self):
         return str(self.name)

+ 73 - 12
marktplatz/views.py

@@ -431,7 +431,21 @@ class SearchProductsView(ProductsView):
         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)
+            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)
+            # qs =  qs.filter ( stringToSearch__icontains= qfilter )
 
         qs = qs.order_by('frei')
 
@@ -465,6 +479,63 @@ class SearchProductsView(ProductsView):
 
 
 
+
+class SearchWohnProjectsView(SearchProductsView):
+
+    model = Wohnprojekt
+    form_class = WohnprojektForm
+
+
+    def get_queryset(self, qfilter=None, **kwargs ):
+        # original qs
+        qs = super().get_queryset()
+
+        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) | \
+                    qs.filter (eigentum__icontains= qfilter) | \
+                    qs.filter (schwerpunkt__icontains= qfilter) | \
+                    qs.filter (artmodell__icontains= qfilter) | \
+                    qs.filter (bautraeger__icontains= qfilter) | \
+                    qs.filter (architektur__icontains= qfilter) | \
+                    qs.filter (kflaechen__icontains= qfilter) | \
+                    qs.filter (gemeinschaftr__icontains= qfilter) | \
+                    qs.filter (kgemeinschaftr__icontains= qfilter) | \
+                    qs.filter (raumangebot__icontains= qfilter) | \
+                    qs.filter (kraumangebot__icontains= qfilter) | \
+                    qs.filter (gewerbe__icontains= qfilter) | \
+                    qs.filter (inseratstext__icontains= qfilter) | \
+                    qs.filter (sonderwohnformen__icontains= qfilter) | \
+                    qs.filter (karbeiten__icontains= qfilter) | \
+                    qs.filter (bauweise__icontains= qfilter) | \
+                    qs.filter (zielgruppen__icontains= qfilter) | \
+                    qs.filter (gprojekte__icontains= qfilter) | \
+                    qs.filter (oekologie__icontains= qfilter) | \
+                    qs.filter (freiraumangebote__icontains= qfilter)
+
+            # qs =  qs.filter ( stringToSearch__icontains= qfilter )
+
+        qs = qs.order_by('frei')
+
+        return qs.filter(public = True)
+
+
+
+
 class GenericSearchView(SearchProductsView):
 
 
@@ -474,9 +545,7 @@ class GenericSearchView(SearchProductsView):
         if self.kwargs['type'] == 'BASE':
             return super().dispatch(request, *args, **kwargs)
         elif self.kwargs['type'] == 'WOHN':
-            self.model = Wohnprojekt
-            self.form_class = WohnprojektForm
-            return super().dispatch(request, *args, **kwargs)
+            return SearchWohnProjectsView.as_view()(request, *args, **kwargs)
         elif self.kwargs['type'] == 'MOBI':
             self.model = MobilitaetsProjekt
             self.form_class = MobilitaetsForm
@@ -492,14 +561,6 @@ class GenericSearchView(SearchProductsView):
 
 
 
-
-
-
-
-
-
-
-
 class ProductsListView(generic.ListView):
     model = Product
     template_name='marktplatz/object_list.html'