From 82f7f9f7aed405a86a254d547b3fb0d228fde5e3 Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Fri, 18 Apr 2025 17:16:30 +0200
Subject: [PATCH] bugfix when removing primers file

---
 src/InSillyCloWeb/assemblies/forms.py  | 18 +++++++++---------
 src/InSillyCloWeb/assemblies/models.py |  8 ++++++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/InSillyCloWeb/assemblies/forms.py b/src/InSillyCloWeb/assemblies/forms.py
index 1197eb8..e7af71e 100644
--- a/src/InSillyCloWeb/assemblies/forms.py
+++ b/src/InSillyCloWeb/assemblies/forms.py
@@ -81,15 +81,15 @@ class PCRModelForm(forms.ModelForm):
     #
     #     super().__init__(initial=initial,instance=instance,*args, **kwargs)
 
-    def save(self, commit=True):
-        instance: SimulatorJob = super().save(commit=commit)
-        if not commit or self.cleaned_data['primers_file'] is None:
-            return instance
-        output_fp = instance.job_dir / insillyclo.main.DEFAULT_PCR_FILENAME
-        with open(output_fp, 'wb') as fh:
-            for chunk in self.cleaned_data['primers_file'].chunks():
-                fh.write(chunk)
-        return instance
+    # def save(self, commit=True):
+    #     instance: SimulatorJob = super().save(commit=commit)
+    #     if not commit or self.cleaned_data['primers_file'] is None:
+    #         return instance
+    #     output_fp = instance.job_dir / insillyclo.main.DEFAULT_PCR_FILENAME
+    #     with open(output_fp, 'wb') as fh:
+    #         for chunk in self.cleaned_data['primers_file'].chunks():
+    #             fh.write(chunk)
+    #     return instance
 
 
 RestrictionEnzymeModelForm = modelform_factory(
diff --git a/src/InSillyCloWeb/assemblies/models.py b/src/InSillyCloWeb/assemblies/models.py
index 066d64b..69d436e 100644
--- a/src/InSillyCloWeb/assemblies/models.py
+++ b/src/InSillyCloWeb/assemblies/models.py
@@ -381,6 +381,10 @@ class SimulatorJob(models.Model):
                         shutil.copyfileobj(source, dest)
 
     def run_insillyclo(self, request):
+        if self.primers_file.name:
+            primers_file = pathlib.Path(self.primers_file.name)
+        else:
+            primers_file = None
         return insillyclo.simulator.compute_all(
             observer=InSillyCloDjangoMessageObserver(
                 request=request,
@@ -393,8 +397,8 @@ class SimulatorJob(models.Model):
             gb_plasmids=self.genbank_dir.glob('**/*.gb'),
             output_dir=self.results_dir,
             data_source=insillyclo.data_source.DataSourceHardCodedImplementation(),
-            primers_file=self.primer_file,
-            primer_id_pairs=list(self.pcr_pairs),
+            primers_file=primers_file,
+            primer_id_pairs=list(self.pcr_pairs) if primers_file else None,
         )
 
     @property
-- 
GitLab