Просмотр исходного кода

Small improvements in admin lists search handling.

Rafał Pitoń 11 лет назад
Родитель
Сommit
f528ab0a09

+ 11 - 2
misago/admin/views/generic/list.py

@@ -105,11 +105,16 @@ class ListView(AdminView):
 
     def get_filtering_methods(self, request):
         SearchForm = self.get_search_form(request)
-        return {
+        methods = {
             'GET': self.get_filters_from_GET(SearchForm, request),
             'session': self.get_filters_from_session(SearchForm, request),
         }
 
+        if request.GET.get('set_filters'):
+            methods['session'] = {}
+
+        return methods
+
     def get_filtering_method_to_use(self, methods):
         for method in ('GET', 'session'):
             if methods.get(method):
@@ -221,7 +226,6 @@ class ListView(AdminView):
                 })
         return dicts
 
-
     """
     Querystrings builder
     """
@@ -329,6 +333,11 @@ class ListView(AdminView):
                 # Clear filters from querystring
                 request.session.pop(self.filters_session_key, None)
                 context['active_filters'] = {}
+            elif request.GET.get('set_filters'):
+                # Force store filters in session
+                session_key = self.filters_session_key
+                request.session[session_key] = context['active_filters']
+                refresh_querystring = True
 
             if context['active_filters'] and not filtering_methods['GET']:
                 # Make view redirect to itself with querystring,

+ 1 - 0
misago/templates/misago/admin/generic/list.html

@@ -146,6 +146,7 @@
         </h4>
       </div>
       <form method="GET">
+        <input type="hidden" name="set_filters" value="1">
         {% for name, value in query_order.items %}
         <input type="hidden" name="{{ name }}" value="{{ value }}">
         {% endfor %}