Files
fet2020/fet2020/search/forms.py
2023-03-23 17:48:05 +00:00

117 lines
3.6 KiB
Python

from collections import deque
from haystack.forms import SearchForm
from haystack.query import SQ
from gallery.models import Album
from intern.models import Etherpad
from members.models import Member
from posts.models import Post
from .legacy import es_search
class FetUserSearchForm(SearchForm):
def search(self):
if not self.is_valid():
return self.no_query_found()
if not self.cleaned_data.get("q"):
return self.no_query_found()
sqs_gallery = self.searchqueryset.models(Album)
sqs_gallery = sqs_gallery.filter(
SQ(title__icontains=self.cleaned_data["q"])
| SQ(description__icontains=self.cleaned_data["q"])
)
sqs_intern = self.searchqueryset.models(Etherpad)
sqs_intern = sqs_intern.filter(etherpad__icontains=self.cleaned_data["q"])
sqs_member = self.searchqueryset.models(Member)
sqs_member = sqs_member.filter(
SQ(firstname__icontains=self.cleaned_data["q"])
| SQ(surname__icontains=self.cleaned_data["q"])
)
sqs_post = self.searchqueryset.models(Post)
sqs_post = sqs_post.filter(
SQ(title__icontains=self.cleaned_data["q"])
| SQ(body__icontains=self.cleaned_data["q"])
| SQ(agenda__icontains=self.cleaned_data["q"])
| SQ(protocol__icontains=self.cleaned_data["q"])
)
tmp_results = deque([])
for elem in sqs_intern.order_by("-date"):
if elem.object:
tmp_results.append(elem.object)
for elem in sqs_post.order_by("-date"):
if elem.object:
tmp_results.append(elem.object)
tmp_results = sorted(tmp_results, key=lambda elem: elem.date, reverse=True)
results = []
for elem in sqs_gallery.order_by("-event_date"):
results.append(elem.object)
for elem in sqs_member:
results.append(elem.object)
print(self.cleaned_data.get("q"))
print("+++++++++++++")
results2 = es_search(self.cleaned_data.get("q"))
print(results2)
print("-------------------")
print(results)
return results + tmp_results + results2
class NonUserSearchForm(SearchForm):
def search(self):
if not self.is_valid():
return self.no_query_found()
if not self.cleaned_data.get("q"):
return self.no_query_found()
sqs_gallery = self.searchqueryset.models(Album).filter(status="20")
sqs_gallery = sqs_gallery.filter(
SQ(title__icontains=self.cleaned_data["q"])
| SQ(description__icontains=self.cleaned_data["q"])
)
sqs_member = self.searchqueryset.models(Member)
sqs_member = sqs_member.filter(
SQ(firstname__icontains=self.cleaned_data["q"])
| SQ(surname__icontains=self.cleaned_data["q"])
)
sqs_post = self.searchqueryset.models(Post).filter(status="20")
sqs_post = sqs_post.filter(
SQ(title__icontains=self.cleaned_data["q"])
| SQ(body__icontains=self.cleaned_data["q"])
| SQ(agenda__icontains=self.cleaned_data["q"])
)
tmp_results = deque([])
for elem in sqs_post.order_by("-date"):
if elem.object:
tmp_results.append(elem.object)
tmp_results = sorted(tmp_results, key=lambda elem: elem.date, reverse=True)
results = []
for elem in sqs_gallery.order_by("-event_date"):
results.append(elem.object)
for elem in sqs_member:
results.append(elem.object)
return results + tmp_results