diff --git a/src/backoffice/templates/backoffice/schedule_source-detail.html b/src/backoffice/templates/backoffice/schedule_source-detail.html index 2122ae2de9557aecdc34277179b406c8cf5f687d..60aeb76e799b74fb3f38a373b7308123977cb404 100644 --- a/src/backoffice/templates/backoffice/schedule_source-detail.html +++ b/src/backoffice/templates/backoffice/schedule_source-detail.html @@ -20,7 +20,7 @@ </div> <div class="card-body"> <p> - Assembly: <strong>{{ object.assembly|default:"<em>WILDCARD</em>" }}</strong> + Assembly: <strong><a href="{% url 'backoffice:assembly-edit' pk=object.assembly.id %}">{{ object.assembly|default:"<em>WILDCARD</em>" }}</a></strong> </p> <p> Type: <strong>{{ object.import_type }}</strong> @@ -109,7 +109,7 @@ <tr> <td>{{ mapping.get_mapping_type_display }}</td> <td>{{ mapping.source_id|default:"-" }}</td> - <td>{{ mapping.local_id|default:"-" }}</td> + <td><a href="{{ mapping.local_url }}">{{ mapping.local_id|default:"-" }}</a></td> <td>{{ mapping.skip|yesno }}</td> <td> </td> </tr> diff --git a/src/backoffice/templates/backoffice/schedule_source_import-detail.html b/src/backoffice/templates/backoffice/schedule_source_import-detail.html index 8b7e2c2597d29b28450036f892667917660171ba..ec3be03022ad3a310bf8c4ac15812b7502b0a77a 100644 --- a/src/backoffice/templates/backoffice/schedule_source_import-detail.html +++ b/src/backoffice/templates/backoffice/schedule_source_import-detail.html @@ -95,7 +95,7 @@ {{ item.source_id|default:"-/-" }} </td> <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}"> - {{ item.local_id|default:"-/-" }} + <a href="{{ item.local_url }}">{{ item.local_id|default:"-/-" }}</a> </td> </tr> {% endfor %} diff --git a/src/core/models/rooms.py b/src/core/models/rooms.py index f614d7ee2e87a7a3555b88ea4d89730321456a4a..cd783c94a17d384867d3469171009f9d41ee4a49 100644 --- a/src/core/models/rooms.py +++ b/src/core/models/rooms.py @@ -273,6 +273,11 @@ class Room(BackendMixin, models.Model): return link.link return None + def get_absolute_url(self): + from core.templatetags.hub_absolute import hub_absolute # pylint: disable=import-outside-toplevel + + return hub_absolute('plainui:room', slug=self.slug, i18n=settings.ARCHIVE_MODE) + def __create_slug(self, extension='', max_length: int = 50): """ recursive function to generate a free room slug based on the room name diff --git a/src/core/models/schedules.py b/src/core/models/schedules.py index 647c0b419e38cc3d2e46491e270445347e1957f2..c47dad72c7b6a0dad0df52e90b78c8ab98e962fc 100644 --- a/src/core/models/schedules.py +++ b/src/core/models/schedules.py @@ -690,6 +690,18 @@ class ScheduleSourceMapping(models.Model): # we don't know about that mapping type, bail out raise LocalObjectAccessViolation('Unknown mapping.') + @property + def local_url(self): + if self.mapping_type == self.MappingType.ROOM: + return Room.admin_url(self.local_id) + + if self.mapping_type == self.MappingType.EVENT: + return Event.admin_url(self.local_id) + if self.mapping_type == self.MappingType.SPEAKER: + return '' + + return '' + @property def local_object(self): if self._local_object is None: diff --git a/src/core/models/shared.py b/src/core/models/shared.py index 77d69925df55fca9553719454a82412b1a4070de..967c37ee60402d618d187cd832c8a2f91aefce67 100644 --- a/src/core/models/shared.py +++ b/src/core/models/shared.py @@ -3,6 +3,12 @@ from django.utils.translation import gettext_lazy as _ class BackendMixin(models.Model): + @classmethod + def admin_url(cls, pk): + from django.urls import reverse + + return reverse(f'admin:{cls._meta.app_label}_{cls._meta.model_name}_change', args=[pk]) + class Meta: abstract = True