From 81f6ffb079aff96f9faa13e2934e4e087e75a52d Mon Sep 17 00:00:00 2001
From: Vermaas <vermaas@astron.nl>
Date: Thu, 27 Jul 2023 09:03:12 +0200
Subject: [PATCH] show join/joined tasks as separate workflow icons

---
 atdb/taskdatabase/models.py                   | 23 +++++++++-------
 .../templates/taskdatabase/tasks.html         |  7 +++--
 .../taskdatabase/tasks/details_card.html      | 26 ++++++++++++++++---
 3 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 54592ab5..108cdb5d 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -321,18 +321,21 @@ class Task(models.Model):
 
     @property
     def task_type_join(self):
-        # find out if this is a join/joined type of task, or just a regular task
-        if self.joined_output_task:
-            # this tasks has a designated output task, so it is an input task (join)
-            return 'join'
-
-        joined_input_tasks = self.joined_input_tasks.all()
-        if joined_input_tasks.count()>0:
-            # this task has input tasks, so it is an output task (joined)
-            return 'joined'
+        try:
+            # find out if this is a join/joined type of task, or just a regular task
+            if self.joined_output_task:
+                # this tasks has a designated output task, so it is an input task (join)
+                return 'join'
 
-        return 'regular'
+            joined_input_tasks = self.joined_input_tasks.all()
+            if joined_input_tasks.count()>0:
+                # this task has input tasks, so it is an output task (joined)
+                return 'joined'
 
+            return 'regular'
+        except:
+            # 'the show must go on', don't crash if anything goes wrong, just show it as 'regular'
+            return 'regular'
 
     @property
     def joined_status(self):
diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks.html b/atdb/taskdatabase/templates/taskdatabase/tasks.html
index e9d7a5aa..29ef8b5f 100644
--- a/atdb/taskdatabase/templates/taskdatabase/tasks.html
+++ b/atdb/taskdatabase/templates/taskdatabase/tasks.html
@@ -30,23 +30,22 @@
                            href="{% url 'workflow-details' task.workflow.id %}"
                            data-popup-url="{% url 'workflow-details' task.workflow.id %}"
                            target="_blank"><i class="fas fa-project-diagram"></i> {{ task.workflow.id }}
-                        </a></td>
+                    </a></td>
                 {% endif %}
                 {% if task.task_type_join == 'joined'  %}
                     <a class="open-modal btn btn-primary btn-sm"
                            href="{% url 'workflow-details' task.workflow.id %}"
                            data-popup-url="{% url 'workflow-details' task.workflow.id %}"
                            target="_blank"><i class="fas fa-diagram-successor"></i> {{ task.workflow.id }}
-                        </a></td>
+                    </a></td>
                 {% endif %}
                {% if task.task_type_join == 'join'  %}
                     <a class="open-modal btn btn-secondary btn-sm"
                            href="{% url 'workflow-details' task.workflow.id %}"
                            data-popup-url="{% url 'workflow-details' task.workflow.id %}"
                            target="_blank"><i class="fas fa-diagram-predecessor"></i> {{ task.workflow.id }}
-                        </a></td>
+                    </a></td>
                 {% endif %}
-
             </td>
             <td>
                 {% if user.is_authenticated %}
diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks/details_card.html b/atdb/taskdatabase/templates/taskdatabase/tasks/details_card.html
index 280a5e0a..65f8cc4a 100644
--- a/atdb/taskdatabase/templates/taskdatabase/tasks/details_card.html
+++ b/atdb/taskdatabase/templates/taskdatabase/tasks/details_card.html
@@ -18,11 +18,29 @@
                 </td></tr>
                 <tr class="{{ task.status }}"><td><b>status</b></td><td>{{ task.status }}</td></tr>
                 <tr><td><b>workflow</b></td><td>
+
+                {% if task.task_type_join == 'regular'  %}
                     <a class="open-modal btn btn-primary btn-sm"
-                       href="{% url 'workflow-details' task.workflow.id %}"
-                       data-popup-url="{% url 'workflow-details' task.workflow.id %}"
-                       target="_blank"><i class="fas fa-project-diagram"></i> {{ task.workflow }}
-                    </a>
+                           href="{% url 'workflow-details' task.workflow.id %}"
+                           data-popup-url="{% url 'workflow-details' task.workflow.id %}"
+                           target="_blank"><i class="fas fa-project-diagram"></i> {{ task.workflow }}
+                    </a></td>
+                {% endif %}
+                {% if task.task_type_join == 'joined'  %}
+                    <a class="open-modal btn btn-primary btn-sm"
+                           href="{% url 'workflow-details' task.workflow.id %}"
+                           data-popup-url="{% url 'workflow-details' task.workflow.id %}"
+                           target="_blank"><i class="fas fa-diagram-successor"></i> {{ task.workflow }}
+                    </a></td>
+                {% endif %}
+               {% if task.task_type_join == 'join'  %}
+                    <a class="open-modal btn btn-secondary btn-sm"
+                           href="{% url 'workflow-details' task.workflow.id %}"
+                           data-popup-url="{% url 'workflow-details' task.workflow.id %}"
+                           target="_blank"><i class="fas fa-diagram-predecessor"></i> {{ task.workflow }}
+                    </a></td>
+                {% endif %}
+
                     {% if user.is_staff %}
                        <a href="/atdb/admin/taskdatabase/workflow/{{ task.workflow }}/change/" class="btn btn-secondary btn-sm" target="_blank" role="button"><i class="fas fa-cog"></i> Edit</a>&nbsp;</td></tr>
                     {% endif %}
-- 
GitLab