From 6839f1b529de53d11efaa57df760170af877bd7b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 16 Apr 2018 15:19:16 -0400 Subject: [PATCH] Make the 'label' argument of SourceColumn optional and introspect its value from the model meta if not specified. Signed-off-by: Roberto Rosario --- mayan/apps/navigation/classes.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py index 245c1d837f..0f735aff3a 100644 --- a/mayan/apps/navigation/classes.py +++ b/mayan/apps/navigation/classes.py @@ -7,6 +7,7 @@ from furl import furl from django.apps import apps from django.conf import settings +from django.contrib.admin.utils import label_for_field from django.core.exceptions import PermissionDenied from django.shortcuts import resolve_url from django.template import VariableDoesNotExist, Variable @@ -438,15 +439,28 @@ class SourceColumn(object): # unhashable type: list return () - def __init__(self, source, label, attribute=None, func=None, order=None): + def __init__(self, source, label=None, attribute=None, func=None, order=None): self.source = source - self.label = label + self._label = label self.attribute = attribute self.func = func self.order = order or 0 self.__class__._registry.setdefault(source, []) self.__class__._registry[source].append(self) + @property + def label(self): + # TODO: Add support for related fields (dotted or double underscore attributes) + if not self._label: + if self.attribute: + self._label = label_for_field( + name=self.attribute, model=self.source._meta.model + ) + else: + self._label = 'Function' + + return self._label + def resolve(self, context): if self.attribute: result = return_attrib(context['object'], self.attribute)