Skip to content

Commit

Permalink
Merge branch 'hotfix/4.15.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
blms committed Oct 18, 2023
2 parents 7ea098a + 9b61efd commit e0881af
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 5 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
Change Log
==========

4.15.3
------

- bugfix: Last chosen person not populating in person-document relations dropdown

4.15.2
------

Expand Down
2 changes: 1 addition & 1 deletion geniza/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version_info__ = (4, 15, 2, None)
__version_info__ = (4, 15, 3, None)


# Dot-connect all but the last. Last is dash-connected if not None.
Expand Down
10 changes: 9 additions & 1 deletion geniza/entities/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,15 @@ def get_queryset(self, request):
"""For autocomplete ONLY, remove self from queryset, so that Person-Person autocomplete
does not include self in the list of options"""
qs = super().get_queryset(request)
if self.own_pk and request and request.path == "/admin/autocomplete/":

# only modify if this is the person-person autocomplete request
is_autocomplete = request and request.path == "/admin/autocomplete/"
is_personperson = (
request
and request.GET
and request.GET.get("model_name") == "personpersonrelation"
)
if self.own_pk and is_autocomplete and is_personperson:
# exclude self from queryset
return qs.exclude(pk=int(self.own_pk))
# otherwise, return normal queryset
Expand Down
25 changes: 22 additions & 3 deletions geniza/entities/tests/test_entities_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,20 +131,39 @@ def test_get_queryset(self):
request_factory = RequestFactory()

# simulate request for person list page
request = request_factory.post("/admin/entities/person/")
request = request_factory.get("/admin/entities/person/")
qs = person_admin.get_queryset(request)
assert qs.count() == 3

# simulate get_form setting own_pk
person_admin.own_pk = goitein.pk

# simulate autocomplete request
request = request_factory.post("/admin/autocomplete/")
# simulate person-person autocomplete request
request = request_factory.get(
"/admin/autocomplete/",
{
"app_label": "entities",
"model_name": "personpersonrelation",
"field_name": "to_person",
},
)
qs = person_admin.get_queryset(request)
# should exclude Person with pk=own_pk
assert qs.count() == 2
assert not qs.filter(pk=goitein.pk).exists()

# simulate person-document autocomplete request
request = request_factory.get(
"/admin/autocomplete/",
{
"app_label": "entities",
"model_name": "persondocumentrelation",
"field_name": "person",
},
)
qs = person_admin.get_queryset(request)
assert qs.count() == 3


@pytest.mark.django_db
class TestNameInlineFormSet:
Expand Down

0 comments on commit e0881af

Please sign in to comment.