diff --git a/umap/tests/test_views.py b/umap/tests/test_views.py index 780cf5ad..e53d2230 100644 --- a/umap/tests/test_views.py +++ b/umap/tests/test_views.py @@ -11,6 +11,8 @@ from django.test import RequestFactory from umap import VERSION from umap.views import validate_url +from .base import UserFactory + User = get_user_model() @@ -283,6 +285,21 @@ def test_user_dashboard_display_user_maps(client, map): assert "Owner only" in body +@pytest.mark.django_db +def test_user_dashboard_display_user_maps_distinct(client, map): + # cf https://github.com/umap-project/umap/issues/1325 + user1 = UserFactory(username='user1') + user2 = UserFactory(username='user2') + map.editors.add(user1) + map.editors.add(user2) + map.save() + client.login(username=map.owner.username, password="123123") + response = client.get(reverse("user_dashboard")) + assert response.status_code == 200 + body = response.content.decode() + assert body.count(map.name) == 1 + + @pytest.mark.django_db def test_logout_should_return_json_in_ajax(client, user, settings): client.login(username=user.username, password="123123") diff --git a/umap/views.py b/umap/views.py index f33296d9..73c98028 100644 --- a/umap/views.py +++ b/umap/views.py @@ -275,7 +275,7 @@ class UserDashboard(PaginatorMixin, DetailView, SearchMixin): def get_maps(self): qs = self.get_search_queryset() or Map.objects.all() - qs = qs.filter(Q(owner=self.object) | Q(editors=self.object)) + qs = qs.filter(owner=self.object).union(qs.filter(editors=self.object)) return qs.order_by("-modified_at") def get_context_data(self, **kwargs):