From e918e6d20e394c5b4878dfcb75b73ad0d59e0f25 Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Thu, 3 Jan 2019 18:00:07 +0800 Subject: [PATCH 1/7] Fix session filters is None from request session --- misago/admin/views/generic/list.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/misago/admin/views/generic/list.py b/misago/admin/views/generic/list.py index e3f5e4c476..d5787c61b3 100644 --- a/misago/admin/views/generic/list.py +++ b/misago/admin/views/generic/list.py @@ -200,7 +200,8 @@ def get_filters_from_GET(self, request, search_form): return self.clean_filtering_data(form.cleaned_data) def get_filters_from_session(self, request, search_form): - session_filters = request.session.get(self.filters_session_key, {}) + session_filters = request.session.get( + self.filters_session_key, {}) or {} form = search_form(session_filters) form.is_valid() return self.clean_filtering_data(form.cleaned_data) From 6ce77b7e82c4d499505bf4f97bc4ee26bc264438 Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Fri, 4 Jan 2019 00:38:15 +0800 Subject: [PATCH 2/7] Format code --- misago/admin/views/generic/list.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/misago/admin/views/generic/list.py b/misago/admin/views/generic/list.py index d5787c61b3..34683941d5 100644 --- a/misago/admin/views/generic/list.py +++ b/misago/admin/views/generic/list.py @@ -200,8 +200,7 @@ def get_filters_from_GET(self, request, search_form): return self.clean_filtering_data(form.cleaned_data) def get_filters_from_session(self, request, search_form): - session_filters = request.session.get( - self.filters_session_key, {}) or {} + session_filters = request.session.get(self.filters_session_key) or {} form = search_form(session_filters) form.is_valid() return self.clean_filtering_data(form.cleaned_data) From dfc57b699bb478da10b9334da92dd2e742941e71 Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Fri, 4 Jan 2019 12:11:22 +0800 Subject: [PATCH 3/7] Fix active_filters is None --- misago/admin/views/generic/list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misago/admin/views/generic/list.py b/misago/admin/views/generic/list.py index 34683941d5..67405c5ef9 100644 --- a/misago/admin/views/generic/list.py +++ b/misago/admin/views/generic/list.py @@ -134,7 +134,7 @@ def dispatch( if request.GET.get("set_filters"): # Force store filters in session session_key = self.filters_session_key - request.session[session_key] = context["active_filters"] + request.session[session_key] = context["active_filters"] or {} refresh_querystring = True if context["active_filters"] and not filtering_methods["GET"]: From dd0d0f39d5e9edf0fa797bd2ac7cc3ae597e915c Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Fri, 4 Jan 2019 12:12:01 +0800 Subject: [PATCH 4/7] Add search filters test --- misago/admin/tests/test_generic_admin_list_view.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/misago/admin/tests/test_generic_admin_list_view.py b/misago/admin/tests/test_generic_admin_list_view.py index d6f455b85e..a81a22d2bf 100644 --- a/misago/admin/tests/test_generic_admin_list_view.py +++ b/misago/admin/tests/test_generic_admin_list_view.py @@ -37,3 +37,12 @@ def test_unicode_is_preserved_in_redirect_querystring(admin_client): def test_view_is_not_redirecting_if_flag_is_set_in_querystring(admin_client): response = admin_client.get("%s?redirected=1" % list_link) assert response.status_code == 200 + + +def test_view_session_filter_is_none(admin_client): + response = admin_client.get("%s?set_filters=1&rank=1" % list_link) + assert response.status_code == 302 + response = admin_client.get("%s?set_filters=0" % list_link) + assert response.status_code == 302 + response = admin_client.get("%s" % list_link) + assert response.status_code == 200 From 991edd6c25464c67b3f853565223bacdf9b61b6f Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Sun, 6 Jan 2019 00:19:08 +0800 Subject: [PATCH 5/7] Fix active filters is possibly other type --- misago/admin/views/generic/list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misago/admin/views/generic/list.py b/misago/admin/views/generic/list.py index 67405c5ef9..34683941d5 100644 --- a/misago/admin/views/generic/list.py +++ b/misago/admin/views/generic/list.py @@ -134,7 +134,7 @@ def dispatch( if request.GET.get("set_filters"): # Force store filters in session session_key = self.filters_session_key - request.session[session_key] = context["active_filters"] or {} + request.session[session_key] = context["active_filters"] refresh_querystring = True if context["active_filters"] and not filtering_methods["GET"]: From 300a9430c67dbbe65afc9f13abc57e8a30d563bc Mon Sep 17 00:00:00 2001 From: Zhibin Chen Date: Sun, 6 Jan 2019 00:24:03 +0800 Subject: [PATCH 6/7] Rename the restoring filters test function --- misago/admin/tests/test_generic_admin_list_view.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misago/admin/tests/test_generic_admin_list_view.py b/misago/admin/tests/test_generic_admin_list_view.py index a81a22d2bf..17e8e7c3e7 100644 --- a/misago/admin/tests/test_generic_admin_list_view.py +++ b/misago/admin/tests/test_generic_admin_list_view.py @@ -39,10 +39,10 @@ def test_view_is_not_redirecting_if_flag_is_set_in_querystring(admin_client): assert response.status_code == 200 -def test_view_session_filter_is_none(admin_client): +def test_restoring_filters_from_session_handles_filters_entry_being_none(admin_client): response = admin_client.get("%s?set_filters=1&rank=1" % list_link) assert response.status_code == 302 response = admin_client.get("%s?set_filters=0" % list_link) assert response.status_code == 302 - response = admin_client.get("%s" % list_link) + response = admin_client.get("%s?redirected=1" % list_link) assert response.status_code == 200 From 167a71513c941323f0c1f60acd5acb5e8552cbe9 Mon Sep 17 00:00:00 2001 From: rafalp Date: Sat, 12 Jan 2019 19:18:05 +0100 Subject: [PATCH 7/7] Fix get_filtering_method_to_use returning None if no filters are found --- misago/admin/views/generic/list.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/misago/admin/views/generic/list.py b/misago/admin/views/generic/list.py index 34683941d5..b5aaa4222f 100644 --- a/misago/admin/views/generic/list.py +++ b/misago/admin/views/generic/list.py @@ -200,7 +200,7 @@ def get_filters_from_GET(self, request, search_form): return self.clean_filtering_data(form.cleaned_data) def get_filters_from_session(self, request, search_form): - session_filters = request.session.get(self.filters_session_key) or {} + session_filters = request.session.get(self.filters_session_key, {}) form = search_form(session_filters) form.is_valid() return self.clean_filtering_data(form.cleaned_data) @@ -215,6 +215,7 @@ def get_filtering_method_to_use(self, methods): for method in ("GET", "session"): if methods.get(method): return methods.get(method) + return {} def apply_filtering_on_context(self, context, active_filters, search_form): context["active_filters"] = active_filters