diff --git a/mayan/apps/appearance/templates/appearance/generic_list_subtemplate.html b/mayan/apps/appearance/templates/appearance/generic_list_subtemplate.html
index a95d4fe748..c19721fbbe 100644
--- a/mayan/apps/appearance/templates/appearance/generic_list_subtemplate.html
+++ b/mayan/apps/appearance/templates/appearance/generic_list_subtemplate.html
@@ -50,17 +50,19 @@
{% trans 'Identifier' %} |
{% else %}
{% get_source_columns source=object_list only_identifier=True as source_column %}
-
- {% if source_column.is_sortable %}
- {{ source_column.label }}
- {% if source_column.attribute == sort_field %}
- {% if icon_sort %}{{ icon_sort.render }}{% endif %}
+ {% if source_column %}
+ |
+ {% if source_column.is_sortable %}
+ {{ source_column.label }}
+ {% if source_column.get_sort_field == sort_field %}
+ {% if icon_sort %}{{ icon_sort.render }}{% endif %}
+ {% endif %}
+
+ {% else %}
+ {{ source_column.label }}
{% endif %}
-
- {% else %}
- {{ source_column.label }}
- {% endif %}
- |
+
+ {% endif %}
{% endif %}
{% if not hide_columns %}
@@ -69,7 +71,7 @@
{% if column.is_sortable %}
{{ column.label }}
- {% if column.attribute == sort_field %}
+ {% if column.get_sort_field == sort_field %}
{% if icon_sort %}{{ icon_sort.render }}{% endif %}
{% endif %}
diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py
index a49bbca026..2f8032eda1 100644
--- a/mayan/apps/navigation/classes.py
+++ b/mayan/apps/navigation/classes.py
@@ -561,7 +561,12 @@ class SourceColumn(object):
return final_result
- def __init__(self, source, attribute=None, empty_value=None, func=None, include_label=False, is_absolute_url=False, is_identifier=False, is_sortable=False, kwargs=None, label=None, order=None, views=None, widget=None):
+ def __init__(
+ self, source, attribute=None, empty_value=None, func=None,
+ include_label=False, is_absolute_url=False, is_identifier=False,
+ is_sortable=False, kwargs=None, label=None, order=None, sort_field=None,
+ views=None, widget=None
+ ):
self.source = source
self._label = label
self.attribute = attribute
@@ -576,6 +581,7 @@ class SourceColumn(object):
self.__class__._registry.setdefault(source, [])
self.__class__._registry[source].append(self)
self.label = None
+ self.sort_field = sort_field
self.views = views or []
self.widget = widget
@@ -603,6 +609,12 @@ class SourceColumn(object):
self.label = self._label
+ def get_sort_field(self):
+ if self.sort_field:
+ return self.sort_field
+ else:
+ return self.attribute
+
def get_sort_field_querystring(self, context):
# We do this to get an mutable copy we can modify
querystring = context.request.GET.copy()
@@ -612,7 +624,7 @@ class SourceColumn(object):
TEXT_SORT_ORDER_VARIABLE_NAME, TEXT_SORT_ORDER_CHOICE_DESCENDING
)
- if previous_sort_field != self.attribute:
+ if previous_sort_field != self.get_sort_field():
sort_order = TEXT_SORT_ORDER_CHOICE_ASCENDING
else:
if previous_sort_order == TEXT_SORT_ORDER_CHOICE_DESCENDING:
@@ -620,7 +632,7 @@ class SourceColumn(object):
else:
sort_order = TEXT_SORT_ORDER_CHOICE_DESCENDING
- querystring[TEXT_SORT_FIELD_PARAMETER] = self.attribute
+ querystring[TEXT_SORT_FIELD_PARAMETER] = self.get_sort_field()
querystring[TEXT_SORT_ORDER_PARAMETER] = sort_order
return '?{}'.format(querystring.urlencode())
|