- Appplied filters to queryset check for length of items in change list

- Added conditional in template to show/hide sort link
master
Brandon Taylor 2019-02-14 16:04:17 -05:00
parent 1e395ab3f0
commit 478600fd5a
2 changed files with 18 additions and 2 deletions

View File

@ -40,7 +40,19 @@ class SortableAdminBase(object):
its sort order can be changed. This view adds a link to the its sort order can be changed. This view adds a link to the
object_tools block to take people to the view to change the sorting. object_tools block to take people to the view to change the sorting.
""" """
if get_is_sortable(self.get_queryset(request)):
# apply any filters via the querystring
filters = {}
for k, v in request.GET.items():
filters.update({ k: v })
# Check if the filtered queryset contains more than 1 item
# to enable sort link
queryset = self.get_queryset(request).filter(**filters)
self.is_sortable = False
if get_is_sortable(queryset):
self.change_list_template = \ self.change_list_template = \
self.sortable_change_list_with_sort_link_template self.sortable_change_list_with_sort_link_template
self.is_sortable = True self.is_sortable = True
@ -51,8 +63,10 @@ class SortableAdminBase(object):
extra_context.update({ extra_context.update({
'change_list_template_extends': self.change_list_template_extends, 'change_list_template_extends': self.change_list_template_extends,
'sorting_filters': [sort_filter[0] for sort_filter 'sorting_filters': [sort_filter[0] for sort_filter
in getattr(self.model, 'sorting_filters', [])] in getattr(self.model, 'sorting_filters', [])],
'is_sortable': self.is_sortable
}) })
return super(SortableAdminBase, self).changelist_view(request, return super(SortableAdminBase, self).changelist_view(request,
extra_context=extra_context) extra_context=extra_context)

View File

@ -24,9 +24,11 @@
<a href="./sort/?sort_filter={{ forloop.counter0 }}">{% trans 'Change Order of' %} {{ sorting_filter }}</a> <a href="./sort/?sort_filter={{ forloop.counter0 }}">{% trans 'Change Order of' %} {{ sorting_filter }}</a>
</li> </li>
{% empty %} {% empty %}
{% if is_sortable %}
<li> <li>
<a id="change-order" href="./sort/">{% trans 'Change Order' %}</a> <a id="change-order" href="./sort/">{% trans 'Change Order' %}</a>
</li> </li>
{% endif %}
{% endfor %} {% endfor %}
{{ block.super }} {{ block.super }}
{% endblock %} {% endblock %}