From 40eca361e6bb26fbd7461b803e99ad995cd98729 Mon Sep 17 00:00:00 2001 From: Julien FumeyY <julien.fumey@pasteur.fr> Date: Thu, 24 Apr 2025 11:08:25 +0200 Subject: [PATCH] add user fk + session fk to simulatorjob at creation --- ...er_simulatorjob_owning_session_and_more.py | 50 +++++++++++++++++++ src/InSillyCloWeb/assemblies/models.py | 14 ++++++ src/InSillyCloWeb/assemblies/wizard_views.py | 3 ++ 3 files changed, 67 insertions(+) create mode 100644 src/InSillyCloWeb/assemblies/migrations/0010_simulatorjob_owner_simulatorjob_owning_session_and_more.py diff --git a/src/InSillyCloWeb/assemblies/migrations/0010_simulatorjob_owner_simulatorjob_owning_session_and_more.py b/src/InSillyCloWeb/assemblies/migrations/0010_simulatorjob_owner_simulatorjob_owning_session_and_more.py new file mode 100644 index 0000000..d6d96f9 --- /dev/null +++ b/src/InSillyCloWeb/assemblies/migrations/0010_simulatorjob_owner_simulatorjob_owning_session_and_more.py @@ -0,0 +1,50 @@ +# Generated by Django 5.1.4 on 2025-04-24 08:47 + +import assemblies.models +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assemblies', '0009_simulatorjob_primers_file'), + ('sessions', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='simulatorjob', + name='owner', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='jobs', + to=settings.AUTH_USER_MODEL, + ), + ), + migrations.AddField( + model_name='simulatorjob', + name='owning_session', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='jobs', + to='sessions.session', + ), + ), + migrations.AlterField( + model_name='simulatorjob', + name='primers_file', + field=models.FileField( + blank=True, + help_text='A CSV file where the header is "primerId;sequence".\nNote that the separator is ";".', + null=True, + upload_to=assemblies.models.job_dependant_primers_file_upload_to, + verbose_name='Primers file', + ), + ), + ] diff --git a/src/InSillyCloWeb/assemblies/models.py b/src/InSillyCloWeb/assemblies/models.py index b9d424c..b9a8003 100644 --- a/src/InSillyCloWeb/assemblies/models.py +++ b/src/InSillyCloWeb/assemblies/models.py @@ -321,6 +321,20 @@ class SimulatorJob(models.Model): verbose_name="Restriction enzyme", help_text="Enzyme used to produce digestion gel", ) + owner = models.ForeignKey( + User, + on_delete=models.CASCADE, + related_name='jobs', + null=True, + blank=True, + ) + owning_session = models.ForeignKey( + Session, + on_delete=models.CASCADE, + related_name='jobs', + null=True, + blank=True, + ) ######################################################################### # Function and methods diff --git a/src/InSillyCloWeb/assemblies/wizard_views.py b/src/InSillyCloWeb/assemblies/wizard_views.py index e84ff12..c0c3012 100644 --- a/src/InSillyCloWeb/assemblies/wizard_views.py +++ b/src/InSillyCloWeb/assemblies/wizard_views.py @@ -101,6 +101,9 @@ class AssemblySimulatorNotProtected(wizard_views.NamedUrlSessionWizardView): def done(self, form_list, form_dict=None, **kwargs): sjob = SimulatorJob.objects.create() + if self.request.user.is_authenticated: + sjob.owner = self.request.user + sjob.owning_session = Session.objects.get(session_key=self.request.session.session_key) sjob.save() sjob.add_design_to_dir( -- GitLab