From 33b15bae497c3501c35b55db9fd372748a22e4e2 Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Thu, 17 Apr 2025 16:34:50 +0200
Subject: [PATCH] generic job update view

---
 src/InSillyCloWeb/assemblies/urls.py  |  2 +-
 src/InSillyCloWeb/assemblies/views.py | 21 +++++++++++++++++----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/InSillyCloWeb/assemblies/urls.py b/src/InSillyCloWeb/assemblies/urls.py
index ea702e2..66a9f4d 100644
--- a/src/InSillyCloWeb/assemblies/urls.py
+++ b/src/InSillyCloWeb/assemblies/urls.py
@@ -68,7 +68,7 @@ urlpatterns = [
     path('assembly-simulator/create/<str:step>/', simulator_wizard, name='simulator-create-step'),
     path('assembly-simulator/create/', simulator_wizard, name='simulator-create'),
     path('assembly-simulator/<slug:uuid>/', views.JobSimulatorResult.as_view(), name='simulator-detail'),
-    path('assembly-simulator-job/<slug:uuid>/pcr/', views.JobPCREdit.as_view(), name='simulator-pcr-edit'),
+    path('assembly-simulator/<slug:uuid>/pcr-edit/', views.JobPCREdit.as_view(), name='simulator-pcr-edit'),
     path('assembly/<int:pk>/download/', views.AssemblyDetailDownloadView.as_view(), name='assembly-download'),
     path('assembly/<int:pk>/delete/', views.AssemblyDeleteView.as_view(), name='assembly-delete'),
     path('fragment', views.show_fragment, name='fragment'),
diff --git a/src/InSillyCloWeb/assemblies/views.py b/src/InSillyCloWeb/assemblies/views.py
index 3789e53..872f4b9 100644
--- a/src/InSillyCloWeb/assemblies/views.py
+++ b/src/InSillyCloWeb/assemblies/views.py
@@ -1,4 +1,5 @@
 import traceback
+from abc import ABC, abstractmethod
 from io import BytesIO
 from typing import Tuple
 
@@ -116,14 +117,13 @@ class JobSimulatorResult(DetailView):
     slug_url_kwarg = 'uuid'
 
 
-class JobPCREdit(
+class SimulatorJobEdit(
+    ABC,
     UpdateView,
 ):
     model = models.SimulatorJob
-    form_class = forms.PCRModelForm
     slug_field = 'uuid'
     slug_url_kwarg = 'uuid'
-    success_url = reverse_lazy("assemblies:home")
     template_name = "assemblies/form_host.html"
 
     def form_valid(self, form):
@@ -132,5 +132,18 @@ class JobPCREdit(
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
-        context["title"] = _("PCR primers to use for gel simulation")
+        context["title"] = self.get_title()
         return context
+
+    @abstractmethod
+    def get_title(self):
+        pass
+
+
+class JobPCREdit(
+    SimulatorJobEdit,
+):
+    form_class = forms.PCRModelForm
+
+    def get_title(self):
+        return _("PCR primers to use for gel simulation")
-- 
GitLab