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