From cbc7a236e2e41f20a379cfb63b2bbe38c404a94e Mon Sep 17 00:00:00 2001 From: Radovan Krebs <514294@mail.muni.cz> Date: Wed, 5 Jun 2024 13:22:27 +0200 Subject: [PATCH] Fix errors found during release Fixed setting of IsAuthenticated permissions class. Added send_emails field to pool serializer update method. Change condition for choosing email protocol. Allow deleting request groups with the pool. --- .../lib/email_notifications.py | 2 +- .../0011_alter_pool_send_emails_and_more.py | 25 +++++++++++++++++++ kypo/sandbox_instance_app/models.py | 2 +- kypo/sandbox_instance_app/serializers.py | 1 + kypo/sandbox_service_project/settings.py | 2 +- 5 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 kypo/sandbox_instance_app/migrations/0011_alter_pool_send_emails_and_more.py diff --git a/kypo/sandbox_instance_app/lib/email_notifications.py b/kypo/sandbox_instance_app/lib/email_notifications.py index a6b7a535..e1bfbe0d 100644 --- a/kypo/sandbox_instance_app/lib/email_notifications.py +++ b/kypo/sandbox_instance_app/lib/email_notifications.py @@ -21,7 +21,7 @@ def send_email(receiver_email, subject, body, kypo_config: KypoConfiguration): em['Subject'] = subject em.set_content(body) - if kypo_config.sender_email_password is None: + if not kypo_config.sender_email_password: send_insecure_email(receiver_email, em, kypo_config) else: send_secure_email(receiver_email, em, kypo_config) diff --git a/kypo/sandbox_instance_app/migrations/0011_alter_pool_send_emails_and_more.py b/kypo/sandbox_instance_app/migrations/0011_alter_pool_send_emails_and_more.py new file mode 100644 index 00000000..66381015 --- /dev/null +++ b/kypo/sandbox_instance_app/migrations/0011_alter_pool_send_emails_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 5.0.6 on 2024-06-07 10:49 + +import django.db.models.deletion +import kypo.sandbox_instance_app.lib.email_notifications +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sandbox_instance_app', '0010_pool_send_emails_sandboxrequestgroup'), + ] + + operations = [ + migrations.AlterField( + model_name='pool', + name='send_emails', + field=models.BooleanField(default=False, validators=[kypo.sandbox_instance_app.lib.email_notifications.validate_emails_enabled]), + ), + migrations.AlterField( + model_name='sandboxrequestgroup', + name='pool', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sandbox_instance_app.pool'), + ), + ] diff --git a/kypo/sandbox_instance_app/models.py b/kypo/sandbox_instance_app/models.py index 6bc2f5af..cef64e51 100644 --- a/kypo/sandbox_instance_app/models.py +++ b/kypo/sandbox_instance_app/models.py @@ -356,7 +356,7 @@ class SandboxRequestGroup(models.Model): Keeps track of the request progress and sends email notifications. """ - pool = models.ForeignKey(Pool, on_delete=models.PROTECT) + pool = models.ForeignKey(Pool, on_delete=models.CASCADE) unit_count = models.IntegerField() email = models.EmailField() failed_count = models.IntegerField(default=0) diff --git a/kypo/sandbox_instance_app/serializers.py b/kypo/sandbox_instance_app/serializers.py index dd2e9864..87750fed 100644 --- a/kypo/sandbox_instance_app/serializers.py +++ b/kypo/sandbox_instance_app/serializers.py @@ -40,6 +40,7 @@ class PoolSerializer(serializers.ModelSerializer): instance.max_size = validated_data.get('max_size', instance.max_size) instance.comment = validated_data.get('comment', instance.comment) instance.visible = validated_data.get('visible', instance.visible) + instance.send_emails = validated_data.get('send_emails', instance.send_emails) instance.save() return instance diff --git a/kypo/sandbox_service_project/settings.py b/kypo/sandbox_service_project/settings.py index ffca229d..1ec22700 100644 --- a/kypo/sandbox_service_project/settings.py +++ b/kypo/sandbox_service_project/settings.py @@ -180,7 +180,7 @@ if KYPO_SERVICE_CONFIG.authentication.authenticated_rest_api: REST_FRAMEWORK.update({ 'DEFAULT_PERMISSION_CLASSES': ( 'kypo.sandbox_common_lib.permissions.ModelPermissions', - 'kypo.sandbox_common_lib.permissions.IsAuthenticated', + 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( # For testing purposes, uncomment BasicAuthentication. -- GitLab