From 65185290dd1575621b1f6fef7e2b5e5be5925fa5 Mon Sep 17 00:00:00 2001 From: Sven Seeberg Date: Mon, 29 Jan 2024 08:47:12 +0100 Subject: [PATCH] Start simulations from REST API, fix #50 --- opendrift_leeway_webgui/api/v1/serializers.py | 6 ++++++ opendrift_leeway_webgui/leeway/celery.py | 2 +- opendrift_leeway_webgui/leeway/utils.py | 3 --- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/opendrift_leeway_webgui/api/v1/serializers.py b/opendrift_leeway_webgui/api/v1/serializers.py index 08e096f..1dcb518 100644 --- a/opendrift_leeway_webgui/api/v1/serializers.py +++ b/opendrift_leeway_webgui/api/v1/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from ...leeway.models import LeewaySimulation +from ...leeway.tasks import run_leeway_simulation class LeewaySimulationSerializer(serializers.ModelSerializer): @@ -33,3 +34,8 @@ class Meta: "simulation_started", "simulation_finished", ] + + def create(self, validated_data): + simulation = LeewaySimulation.objects.create(**validated_data) + run_leeway_simulation.apply_async([form.instance.uuid]) + return simulation diff --git a/opendrift_leeway_webgui/leeway/celery.py b/opendrift_leeway_webgui/leeway/celery.py index e6d69ff..ade09ac 100644 --- a/opendrift_leeway_webgui/leeway/celery.py +++ b/opendrift_leeway_webgui/leeway/celery.py @@ -10,7 +10,7 @@ from celery import Celery from django.conf import settings -from .utils import mail_to_simulation +from .utils import mail_to_simulation, run_leeway_simulation os.environ.setdefault("DJANGO_SETTINGS_MODULE", "opendrift_leeway_webgui.core.settings") app = Celery("leeway") diff --git a/opendrift_leeway_webgui/leeway/utils.py b/opendrift_leeway_webgui/leeway/utils.py index 7e1c328..80e2500 100644 --- a/opendrift_leeway_webgui/leeway/utils.py +++ b/opendrift_leeway_webgui/leeway/utils.py @@ -154,16 +154,13 @@ def send_result_mail(simulation): """ Create mail parts for result mail """ - # Initialize mail email = EmailMessage( subject="Leeway Drift Simulation Result", body=mail_result_text(simulation), to=[simulation.user.email], ) - # Attach result image if simulation.img: email.attach_file(simulation.img.path) - # Send email return email.send()