Don't error out when an object doesn't provide a get_absolute_url

method.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-09-07 00:12:17 -04:00
parent 824c371d92
commit db83f09b19

View File

@@ -1,23 +1,28 @@
from __future__ import unicode_literals
from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.safestring import mark_safe
from .classes import EventType
def event_object_link(entry, attribute='target'):
label = ''
url = '#'
obj_type = ''
obj = getattr(entry, attribute)
if obj:
obj_type = '{}: '.format(obj._meta.verbose_name)
else:
obj_type = ''
if hasattr(obj, 'get_absolute_url'):
url = obj.get_absolute_url()
label = force_text(obj)
return mark_safe(
'<a href="%(url)s">%(obj_type)s%(label)s</a>' % {
'url': obj.get_absolute_url() if obj else '#',
'label': obj or '', 'obj_type': obj_type
'url': url, 'label': label, 'obj_type': obj_type
}
)