|
@@ -1,48 +1,45 @@
|
|
|
-from django.shortcuts import render
|
|
|
|
|
-from django.views import generic
|
|
|
|
|
-from django.views.generic import TemplateView
|
|
|
|
|
-from django.views.generic.edit import *
|
|
|
|
|
-from marktplatz.models import *
|
|
|
|
|
|
|
+import csv
|
|
|
|
|
+import json
|
|
|
|
|
+import copy
|
|
|
|
|
+import itertools
|
|
|
|
|
+from PIL import Image
|
|
|
|
|
+from PIL import Image
|
|
|
|
|
+from PIL import ImageFont
|
|
|
|
|
+from PIL import ImageDraw
|
|
|
|
|
+
|
|
|
from django.db import models
|
|
from django.db import models
|
|
|
-from django.contrib.auth.models import User
|
|
|
|
|
-from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
|
|
|
|
+from django.db.models import Count
|
|
|
from django.core import serializers
|
|
from django.core import serializers
|
|
|
|
|
+from django.core.files import File
|
|
|
from django.core.mail import send_mail
|
|
from django.core.mail import send_mail
|
|
|
|
|
+from django.urls import reverse, reverse_lazy
|
|
|
|
|
+from django.http import HttpResponseRedirect, Http404, HttpResponse
|
|
|
|
|
+from django.contrib import messages
|
|
|
|
|
+from django.contrib.auth import login, authenticate
|
|
|
|
|
+from django.contrib.auth.models import User
|
|
|
|
|
+from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.auth.decorators import login_required
|
|
|
from django.contrib.auth.models import User, Group
|
|
from django.contrib.auth.models import User, Group
|
|
|
-from django.http import HttpResponseRedirect
|
|
|
|
|
-from django.urls import reverse, reverse_lazy
|
|
|
|
|
-from django.core.files import File
|
|
|
|
|
-from django.http import HttpResponse
|
|
|
|
|
|
|
+from django.views import generic
|
|
|
|
|
+from django.views.generic import TemplateView
|
|
|
from django.views.generic import FormView
|
|
from django.views.generic import FormView
|
|
|
-from django.shortcuts import get_object_or_404
|
|
|
|
|
-from django.contrib.auth import login, authenticate
|
|
|
|
|
-from django.shortcuts import render, redirect
|
|
|
|
|
|
|
+from django.views.generic.edit import *
|
|
|
|
|
+from django.shortcuts import render, get_object_or_404, redirect, get_list_or_404, get_object_or_404
|
|
|
from django.forms import formset_factory
|
|
from django.forms import formset_factory
|
|
|
from django.forms import BaseModelFormSet
|
|
from django.forms import BaseModelFormSet
|
|
|
from django.forms import modelformset_factory, inlineformset_factory
|
|
from django.forms import modelformset_factory, inlineformset_factory
|
|
|
from django.forms.models import model_to_dict
|
|
from django.forms.models import model_to_dict
|
|
|
-from django.contrib import messages
|
|
|
|
|
from django_file_form.uploader import FileFormUploader
|
|
from django_file_form.uploader import FileFormUploader
|
|
|
from django_countries import countries
|
|
from django_countries import countries
|
|
|
from django.template import Context, Template
|
|
from django.template import Context, Template
|
|
|
from django.conf import settings
|
|
from django.conf import settings
|
|
|
|
|
+
|
|
|
from constance import config
|
|
from constance import config
|
|
|
-from django.http import Http404
|
|
|
|
|
-from django.db.models import Count
|
|
|
|
|
-from PIL import Image
|
|
|
|
|
-from PIL import ImageFont
|
|
|
|
|
-from PIL import ImageDraw
|
|
|
|
|
from django.db.models import Q
|
|
from django.db.models import Q
|
|
|
-from django.shortcuts import get_list_or_404, get_object_or_404
|
|
|
|
|
# from .forms import LinkFormSet, LinkForm, FormsetHelper, MediaFormsetHelper, MediaFormSet
|
|
# from .forms import LinkFormSet, LinkForm, FormsetHelper, MediaFormsetHelper, MediaFormSet
|
|
|
|
|
+from marktplatz.models import *
|
|
|
from .forms import *
|
|
from .forms import *
|
|
|
-import itertools
|
|
|
|
|
-from PIL import Image
|
|
|
|
|
-import json
|
|
|
|
|
-import copy
|
|
|
|
|
|
|
|
|
|
-import csv
|
|
|
|
|
# Create your views here.
|
|
# Create your views here.
|
|
|
def index(request):
|
|
def index(request):
|
|
|
context = {}
|
|
context = {}
|
|
@@ -98,7 +95,7 @@ class SearchAgentCreate(CreateView):
|
|
|
if self.embed :
|
|
if self.embed :
|
|
|
kwargs['embed'] = True
|
|
kwargs['embed'] = True
|
|
|
kwargs['form_content'] = '<i class="fas fa-bell"></i> Suchagent einrichten'
|
|
kwargs['form_content'] = '<i class="fas fa-bell"></i> Suchagent einrichten'
|
|
|
- kwargs['content_a'] = 'Sehr gut, Dein Suchagent wurde erstellt!'
|
|
|
|
|
|
|
+ kwargs['content_a'] = 'Dein Suchagent wurde erstellt!'
|
|
|
return super().get_context_data(**kwargs)
|
|
return super().get_context_data(**kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
@@ -176,8 +173,6 @@ class ProductsView(generic.ListView):
|
|
|
orts[product.ort] = product.get_ort_display()
|
|
orts[product.ort] = product.get_ort_display()
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
years.remove('')
|
|
years.remove('')
|
|
|
context['year_list'] = years
|
|
context['year_list'] = years
|
|
|
context['count_list'] = used_countries
|
|
context['count_list'] = used_countries
|
|
@@ -191,12 +186,55 @@ class ProductsView(generic.ListView):
|
|
|
context['sponsor_cards'] = Template( config.SPONSOR_CARDS ).render( Context(context) )
|
|
context['sponsor_cards'] = Template( config.SPONSOR_CARDS ).render( Context(context) )
|
|
|
context['main_card'] = Template( config.MAIN_CARD ).render( Context(context) )
|
|
context['main_card'] = Template( config.MAIN_CARD ).render( Context(context) )
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ context['textSearchForm'] = textSearchForm()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
return context
|
|
return context
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template_name = 'marktplatz/product_overview.html'
|
|
template_name = 'marktplatz/product_overview.html'
|
|
|
|
|
|
|
|
|
|
+class SearchProductsView(ProductsView):
|
|
|
|
|
+
|
|
|
|
|
+ def get_queryset(self, qfilter, **kwargs ):
|
|
|
|
|
+ # original qs
|
|
|
|
|
+ qs = super().get_queryset()
|
|
|
|
|
+
|
|
|
|
|
+ self.user = self.request.user
|
|
|
|
|
+ user = self.user
|
|
|
|
|
+
|
|
|
|
|
+ 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.order_by('frei')
|
|
|
|
|
+
|
|
|
|
|
+ return qs.filter(public = True)
|
|
|
|
|
+
|
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
|
+
|
|
|
|
|
+ qform = textSearchForm( request.POST )
|
|
|
|
|
+ if qform.is_valid():
|
|
|
|
|
+ self.object_list = self.get_queryset(qfilter= qform.cleaned_data["searchText"] )
|
|
|
|
|
+
|
|
|
|
|
+ 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)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
class DetailView(generic.DetailView):
|
|
class DetailView(generic.DetailView):
|
|
|
model = Product
|
|
model = Product
|
|
|
template_name = 'marktplatz/product_detail.html'
|
|
template_name = 'marktplatz/product_detail.html'
|