From e24f927a7f762ea70624b1639addedfb3aa66098 Mon Sep 17 00:00:00 2001
From: Andreas Hubel <andi@saerdnaer.de>
Date: Sat, 21 Dec 2024 22:42:30 +0100
Subject: [PATCH] chore(scheduleadmin): add some a-href's to simplfy debugging
 process

---
 .../templates/backoffice/schedule_source-detail.html |  4 ++--
 .../backoffice/schedule_source_import-detail.html    |  2 +-
 src/core/models/rooms.py                             |  5 +++++
 src/core/models/schedules.py                         | 12 ++++++++++++
 src/core/models/shared.py                            |  6 ++++++
 5 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/backoffice/templates/backoffice/schedule_source-detail.html b/src/backoffice/templates/backoffice/schedule_source-detail.html
index 2122ae2de..60aeb76e7 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>&nbsp;</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 8b7e2c259..ec3be0302 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 f614d7ee2..cd783c94a 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 647c0b419..c47dad72c 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 77d69925d..967c37ee6 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
 
-- 
GitLab