Faster search queries
This commit is contained in:
1 file changed
+13
-13
+13
-13
@@ -25,7 +25,7 @@ from common.utils import append_uri_params, mkdir_p, multi_key_sort
|
|||||||
from django_huey import DJANGO_HUEY, get_queue
|
from django_huey import DJANGO_HUEY, get_queue
|
||||||
from common.huey import h_q_reset_tasks
|
from common.huey import h_q_reset_tasks
|
||||||
from common.logger import log
|
from common.logger import log
|
||||||
from .models import Source, Media, MediaServer
|
from .models import Source, Media, MediaServer, Metadata
|
||||||
from .forms import (ValidateSourceForm, ConfirmDeleteSourceForm, RedownloadMediaForm,
|
from .forms import (ValidateSourceForm, ConfirmDeleteSourceForm, RedownloadMediaForm,
|
||||||
SkipMediaForm, EnableMediaForm, ResetTasksForm, ScheduleTaskForm,
|
SkipMediaForm, EnableMediaForm, ResetTasksForm, ScheduleTaskForm,
|
||||||
ConfirmDeleteMediaServerForm, SourceForm)
|
ConfirmDeleteMediaServerForm, SourceForm)
|
||||||
@@ -530,24 +530,24 @@ class MediaView(ListView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
q = Media.objects.all()
|
q = Media.objects.all()
|
||||||
|
md_qs = Metadata.objects.all()
|
||||||
|
|
||||||
if self.filter_source:
|
if self.filter_source:
|
||||||
q = q.filter(source=self.filter_source)
|
q = q.filter(source=self.filter_source)
|
||||||
if self.query:
|
if self.query:
|
||||||
|
m_q = q
|
||||||
needle = self.query
|
needle = self.query
|
||||||
|
md_q = md_qs.filter(
|
||||||
|
Q(media__in=m_q) &
|
||||||
|
(
|
||||||
|
Q(key__contains=needle) |
|
||||||
|
Q(media__title__icontains=needle) |
|
||||||
|
Q(value__fulltitle__icontains=needle)
|
||||||
|
)
|
||||||
|
).only('pk')
|
||||||
|
q = q.filter(new_metadata__in=md_q)
|
||||||
if self.search_description:
|
if self.search_description:
|
||||||
q = q.filter(
|
q = q.union(m_q.filter(new_metadata__value__description__icontains=needle))
|
||||||
Q(new_metadata__value__fulltitle__icontains=needle) |
|
|
||||||
Q(new_metadata__value__description__icontains=needle) |
|
|
||||||
Q(title__icontains=needle) |
|
|
||||||
Q(key__contains=needle)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
q = q.filter(
|
|
||||||
Q(new_metadata__value__fulltitle__icontains=needle) |
|
|
||||||
Q(title__icontains=needle) |
|
|
||||||
Q(key__contains=needle)
|
|
||||||
)
|
|
||||||
if self.only_skipped:
|
if self.only_skipped:
|
||||||
q = q.filter(Q(can_download=False) | Q(skip=True) | Q(manual_skip=True))
|
q = q.filter(Q(can_download=False) | Q(skip=True) | Q(manual_skip=True))
|
||||||
elif not self.show_skipped:
|
elif not self.show_skipped:
|
||||||
|
|||||||
Reference in new issue
Block a user