diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 2855f3a2..5efc3582 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -21,7 +21,7 @@ Added
- User login/logout logging signals (#1326)
- ``createdevusers`` management command (#1339)
- **Timeline**
- - Empty object reference name handling in ``add_object()`` (#1338)
+ - Empty object reference name handling in ``add_object()`` (#1338, #1341)
Changed
-------
diff --git a/timeline/api.py b/timeline/api.py
index 67f192d1..c717f2ed 100644
--- a/timeline/api.py
+++ b/timeline/api.py
@@ -18,6 +18,7 @@
ProjectEvent,
ProjectEventObjectRef,
EVENT_STATUS_TYPES,
+ OBJ_REF_UNNAMED,
)
@@ -38,8 +39,10 @@ class TimelineAPI:
# Internal Helpers ---------------------------------------------------------
@classmethod
- def _get_label(cls, label):
- """Format label to be displayed"""
+ def _get_ref_label(cls, label):
+ """Return reference object name in displayable form"""
+ if not label:
+ return OBJ_REF_UNNAMED
if not {' ', '-'}.intersection(label):
return Truncator(label).chars(LABEL_MAX_WIDTH)
return label
@@ -68,7 +71,7 @@ def _get_history_link(cls, ref_obj):
def _get_not_found_label(cls, ref_obj):
"""Get label for object which is not found in the database"""
return '{} {}'.format(
- cls._get_label(ref_obj.name), cls._get_history_link(ref_obj)
+ cls._get_ref_label(ref_obj.name), cls._get_history_link(ref_obj)
)
@classmethod
@@ -85,11 +88,11 @@ def _get_project_desc(cls, ref_obj, request=None):
'projectroles:detail',
kwargs={'project': project.sodar_uuid},
),
- cls._get_label(project.title),
+ cls._get_ref_label(project.title),
)
elif project:
return '{}'.format(
- cls._get_label(project.title)
+ cls._get_ref_label(project.title)
)
return ref_obj.name
@@ -173,6 +176,13 @@ def _get_ref_description(cls, event, ref_label, app_plugin, request):
raise ex
link_data = None
if link_data:
+ if not link_data['label']:
+ logger.warning(
+ 'Empty label returned by plugin "{}" for object '
+ 'reference "{}" ({})"'.format(
+ app_plugin.name, ref_obj, ref_obj.sodar_uuid
+ )
+ )
return '{} {}'.format(
link_data['url'],
(
@@ -180,7 +190,7 @@ def _get_ref_description(cls, event, ref_label, app_plugin, request):
if 'blank' in link_data and link_data['blank'] is True
else ''
),
- cls._get_label(link_data['label']),
+ cls._get_ref_label(link_data['label']),
cls._get_history_link(ref_obj),
)
else:
diff --git a/timeline/models.py b/timeline/models.py
index 1967474d..100cecf7 100644
--- a/timeline/models.py
+++ b/timeline/models.py
@@ -26,7 +26,7 @@
'INFO': 'Info level action',
'CANCEL': 'Action cancelled',
}
-OBJ_REF_UNNAMED = '(Unnamed)'
+OBJ_REF_UNNAMED = '(unnamed)'
class ProjectEventManager(models.Manager):
@@ -187,7 +187,7 @@ def add_object(self, obj, label, name, extra_data=None):
ref.label = label
if not name:
logger.warning(
- 'Adding object reference with no name: {} ({})'.format(
+ 'Adding object reference with no name: "{}" ({})'.format(
obj, getattr(obj, 'sodar_uuid')
)
)