|
|
|
from dal import autocomplete
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
from django.db.models import Q
|
|
|
|
|
|
|
|
import seminar.models as m
|
|
|
|
from .helpers import LoginRequiredAjaxMixin
|
|
|
|
|
|
|
|
class SkolaAutocomplete(autocomplete.Select2QuerySetView):
|
|
|
|
def get_queryset(self):
|
|
|
|
# Don't forget to filter out results depending on the visitor !
|
|
|
|
qs = m.Skola.objects.all()
|
|
|
|
if self.q:
|
|
|
|
qs = qs.filter(
|
|
|
|
Q(nazev__istartswith=self.q)|
|
|
|
|
Q(kratky_nazev__istartswith=self.q)|
|
|
|
|
Q(ulice__istartswith=self.q)|
|
|
|
|
Q(mesto__istartswith=self.q))
|
|
|
|
|
|
|
|
return qs
|
|
|
|
|
|
|
|
class ResitelAutocomplete(LoginRequiredAjaxMixin,autocomplete.Select2QuerySetView):
|
|
|
|
def get_queryset(self):
|
|
|
|
qs = m.Resitel.objects.all()
|
|
|
|
if self.q:
|
|
|
|
qs = qs.filter(
|
|
|
|
Q(osoba__jmeno__startswith=self.q)|
|
|
|
|
Q(osoba__prijmeni__startswith=self.q)|
|
|
|
|
Q(osoba__prezdivka__startswith=self.q)
|
|
|
|
)
|
|
|
|
return qs
|
|
|
|
|
|
|
|
class OdevzdatelnyProblemAutocomplete(autocomplete.Select2QuerySetView):
|
|
|
|
def get_queryset(self):
|
|
|
|
nastaveni = get_object_or_404(m.Nastaveni)
|
|
|
|
rocnik = nastaveni.aktualni_rocnik
|
|
|
|
temata = m.Tema.objects.filter(rocnik=rocnik, stav=m.Problem.STAV_ZADANY)
|
|
|
|
ulohy = m.Uloha.objects.filter(cislo_deadline__rocnik = rocnik)
|
|
|
|
clanky = m.Clanek.objects.filter(cislo__rocnik = rocnik, stav=m.Problem.STAV_ZADANY) # FIXME: Je tohle to, co chceme?
|
|
|
|
ulohy.union(temata)
|
|
|
|
ulohy.union(clanky)
|
|
|
|
qs = ulohy
|
|
|
|
if self.q:
|
|
|
|
qs = qs.filter(
|
|
|
|
Q(nazev__startswith=self.q))
|
|
|
|
return qs
|
|
|
|
|
|
|
|
# Ceka na autocomplete v3
|
|
|
|
# class OrganizatorAutocomplete(autocomplete.Select2QuerySetView):
|
|
|
|
# def get_queryset(self):
|
|
|
|
# if not self.request.user.is_authenticated():
|
|
|
|
# return Organizator.objects.none()
|
|
|
|
#
|
|
|
|
# qs = aktivniOrganizatori()
|
|
|
|
#
|
|
|
|
# if self.q:
|
|
|
|
# if self.q[0] == "!":
|
|
|
|
# qs = Organizator.objects.all()
|
|
|
|
# query = self.q[1:]
|
|
|
|
# else:
|
|
|
|
# query = self.q
|
|
|
|
# qs = qs.filter(
|
|
|
|
# Q(prezdivka__isstartswith=query)|
|
|
|
|
# Q(user__first_name__isstartswith=query)|
|
|
|
|
# Q(user__last_name__isstartswith=query))
|
|
|
|
#
|
|
|
|
# return qs
|