117 lines
3.6 KiB
Python
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
|