Add common.utils.return_related function to support double underscore related model references.

Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
Michael Price
2018-03-01 18:30:27 -04:00
committed by Roberto Rosario
parent 0edb028bbf
commit e3d400c70d
2 changed files with 11 additions and 2 deletions

View File

@@ -8,7 +8,7 @@ from django.db import models
from django.db.models import Q
from django.utils.translation import ugettext, ugettext_lazy as _
from common.utils import return_attrib
from common.utils import return_attrib, return_related
from permissions import Permission
from permissions.models import StoredPermission
@@ -115,7 +115,7 @@ class AccessControlListManager(models.Manager):
else:
instance = queryset.first()
if instance:
parent_object = getattr(instance, parent_accessor)
parent_object = return_related(instance, parent_accessor)
try:
# Try to see if parent_object is a function

View File

@@ -149,6 +149,15 @@ def return_attrib(obj, attrib, arguments=None):
return force_text(exception)
def return_related(instance, attribute):
"""
This functions works in a similar method to return_attrib but is
meant for related models. Support multiple levels of relationship
using double underscore.
"""
return reduce_function(getattr, attribute.split('__'), instance)
def urlquote(link=None, get=None):
"""
This method does both: urlquote() and urlencode()