Skip to content

Commit

Permalink
#46 Retain ordering, view style and limit
Browse files Browse the repository at this point in the history
  • Loading branch information
SebCorbin committed Oct 27, 2022
1 parent 4934ffe commit 13b18a9
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
11 changes: 5 additions & 6 deletions silk/templates/silk/base/root_base.html
Original file line number Diff line number Diff line change
Expand Up @@ -307,12 +307,11 @@
<nav class="cbp-spmenu cbp-spmenu-vertical cbp-spmenu-right" id="cbp-spmenu-s2">
<h3>Filters</h3>

<form id="filter-form2" action="." method="post">{% csrf_token %}</form>


{% block filters %}

{% endblock %}
<form id="filter-form2" action="" method="post">
{% csrf_token %}
{% block filters %}{% endblock %}
<input type="submit" style="display: none">
</form>

<div class="button-div">
<div class="apply-div" onclick="submitEmptyFilters()">Clear all filters</div>
Expand Down
29 changes: 22 additions & 7 deletions silk/views/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,15 +130,15 @@ def _get_objects(self, show=None, order_by=None, order_dir=None, path=None, filt
return query_set[:show]

def _create_context(self, request):
show = request.GET.get('show', self.default_show)
order_by = request.GET.get('order_by', self.default_order_by)
order_dir = request.GET.get('order_dir', self.default_order_dir)
view_style = request.GET.get('view_style', self.default_view_style)
raw_filters = request.session.get(self.session_key_request_filters, {}).copy()
show = raw_filters.pop('show', self.default_show)
order_by = raw_filters.pop('order_by', self.default_order_by)
order_dir = raw_filters.pop('order_dir', self.default_order_dir)
view_style = raw_filters.pop('view_style', self.default_view_style)

if show:
show = int(show)
path = request.GET.get('path', None)
raw_filters = request.session.get(self.session_key_request_filters, {})
context = {
'show': show,
'order_by': order_by,
Expand All @@ -153,7 +153,7 @@ def _create_context(self, request):
'options_status_codes': self._get_status_codes(),
'options_methods': self._get_methods(),
'view_names': self._get_views(),
'filters': raw_filters
'filters': raw_filters,
}
context.update(csrf(request))
if path:
Expand All @@ -165,11 +165,26 @@ def _create_context(self, request):
@method_decorator(login_possibly_required)
@method_decorator(permissions_possibly_required)
def get(self, request):
# Retain filters and ordering if they were modified by GET params
if request.GET:
filters = {
# filters from previous session
**request.session.get(self.session_key_request_filters, {}),
# new filters from GET, overriding old
**{k: v for k, v in request.GET.items() if k in ['show', 'order_by', 'order_dir', 'view_style']},
}
request.session[self.session_key_request_filters] = filters
return render(request, 'silk/requests.html', self._create_context(request))

@method_decorator(login_possibly_required)
@method_decorator(permissions_possibly_required)
def post(self, request):
previous_session = request.session.get(self.session_key_request_filters, {})
filters = filters_from_request(request)
request.session[self.session_key_request_filters] = {ident: f.as_dict() for ident, f in filters.items()}
request.session[self.session_key_request_filters] = {
# filters from previous session but only GET values
**{k: v for k, v in previous_session.items() if k in ['show', 'order_by', 'order_dir', 'view_style']},
# new filters from POST, overriding old
**{ident: f.as_dict() for ident, f in filters.items()},
}
return render(request, 'silk/requests.html', self._create_context(request))

0 comments on commit 13b18a9

Please sign in to comment.