diff --git a/src/bpp/multiseek_registry.py b/src/bpp/multiseek_registry.py index 431477f42..add39941f 100644 --- a/src/bpp/multiseek_registry.py +++ b/src/bpp/multiseek_registry.py @@ -208,9 +208,9 @@ class PierwszeNazwiskoIImie(NazwiskoIImieWZakresieKolejnosci): class OstatnieNazwiskoIImie(NazwiskoIImieWZakresieKolejnosci): - ops = [EQUAL,] + ops = [EQUAL, ] # bez operatora UNION, bo F('liczba_autorow') nie istnieje, gdy - # generujemy zapytanie dla niego. + # generujemy zapytanie dla niego. kolejnosc_gte = F('liczba_autorow') - 1 kolejnosc_lt = F('liczba_autorow') label = "Ostatnie nazwisko i imiÄ™" @@ -340,9 +340,10 @@ class JednostkaQueryObject(ForeignKeyDescribeMixin, AutocompleteQueryObject): def real_query(self, value, operation): if operation in EQUALITY_OPS_ALL: ret = Q(autorzy__jednostka__pk=value.pk) + elif operation in UNION_OPS_ALL: q = Autorzy.objects.filter( - autor__jednostka__pk=value.pk + jednostka__pk=value.pk ).values("rekord_id") ret = Q(pk__in=q) else: @@ -365,9 +366,10 @@ class WydzialQueryObject(ForeignKeyDescribeMixin, AutocompleteQueryObject): def real_query(self, value, operation): if operation in EQUALITY_OPS_ALL: ret = Q(autorzy__jednostka__wydzial__pk=value.pk) + elif operation in UNION_OPS_ALL: q = Autorzy.objects.filter( - jednostka__pk=value.pk + jednostka__wydzial__pk=value.pk ).values("rekord_id") ret = Q(pk__in=q) diff --git a/src/bpp/tests/test_multiseek_registry.py b/src/bpp/tests/test_multiseek_registry.py index 99e5461f1..8443bea1e 100644 --- a/src/bpp/tests/test_multiseek_registry.py +++ b/src/bpp/tests/test_multiseek_registry.py @@ -16,7 +16,8 @@ OpenaccessCzasPublikacjiQueryObject, ForeignKeyDescribeMixin, PierwszeNazwiskoIImie, \ TypOgolnyAutorQueryObject, TypOgolnyRedaktorQueryObject, TypOgolnyTlumaczQueryObject, TypOgolnyRecenzentQueryObject, \ NazwiskoIImieQueryObject, DataUtworzeniaQueryObject, OstatnieNazwiskoIImie, OstatnioZmieniony, \ - OstatnioZmienionyDlaPBN, RodzajKonferenckjiQueryObject, LiczbaAutorowQueryObject, UNION + OstatnioZmienionyDlaPBN, RodzajKonferenckjiQueryObject, LiczbaAutorowQueryObject, UNION, JednostkaQueryObject, \ + WydzialQueryObject @pytest.mark.django_db @@ -81,6 +82,32 @@ def test_NazwiskoIImieQueryObject(autor_jan_nowak): assert ret is not None +def test_JednostkaQueryObject(jednostka): + n = JednostkaQueryObject() + + ret = n.real_query(jednostka, logic.EQUAL) + assert ret is not None + + ret = n.real_query(jednostka, logic.DIFFERENT) + assert ret is not None + + ret = n.real_query(jednostka, UNION) + assert ret is not None + + +def test_WydzialQueryObject(wydzial): + n = WydzialQueryObject() + + ret = n.real_query(wydzial, logic.EQUAL) + assert ret is not None + + ret = n.real_query(wydzial, logic.DIFFERENT) + assert ret is not None + + ret = n.real_query(wydzial, UNION) + assert ret is not None + + @pytest.mark.django_db def test_PierwszeNazwiskoIImie_real_query(wydawnictwo_zwarte, autor_jan_kowalski, jednostka): wydawnictwo_zwarte.dodaj_autora(autor_jan_kowalski, jednostka)