From 8840538c5b9a3b43e60e25bd9ec982fbe641f7ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu>
Date: Thu, 31 Jan 2019 18:10:55 +0100
Subject: [PATCH] Create emails

---
 src/account/auth_pipeline.py             |  4 ++--
 src/account/models.py                    |  2 +-
 src/account/serializers.py               |  4 ++--
 src/common/emails/admitted.txt           |  6 ++++++
 src/common/emails/denied.txt             |  6 ++++++
 src/common/emails/homework_corrected.txt |  7 +++++++
 src/common/emails/new_homework.txt       |  7 +++++++
 src/common/emails/registration.txt       | 10 ++++++++++
 src/homework/serializers.py              | 12 +++++++++---
 src/homework/views.py                    |  2 +-
 10 files changed, 51 insertions(+), 9 deletions(-)
 create mode 100644 src/common/emails/admitted.txt
 create mode 100644 src/common/emails/denied.txt
 create mode 100644 src/common/emails/homework_corrected.txt
 create mode 100644 src/common/emails/new_homework.txt
 create mode 100644 src/common/emails/registration.txt

diff --git a/src/account/auth_pipeline.py b/src/account/auth_pipeline.py
index 571b46d..34ca018 100644
--- a/src/account/auth_pipeline.py
+++ b/src/account/auth_pipeline.py
@@ -1,5 +1,5 @@
 from django.core import exceptions
-from common.email import registration
+from common import email
 
 from . import models
 
@@ -11,4 +11,4 @@ def create_profile(backend, user, response, *args, **kwargs):
         except exceptions.ObjectDoesNotExist:
             models.Profile.objects.create(user=user)
             if user.email is not None:
-                registration(user.email)
+                email.registration(user)
diff --git a/src/account/models.py b/src/account/models.py
index 64c1452..082a83c 100644
--- a/src/account/models.py
+++ b/src/account/models.py
@@ -30,7 +30,7 @@ class Profile(models.Model):
     user = models.OneToOneField(
         User,
         related_name='profile',
-        on_delete=models.CASCADE,
+        on_delete=models.CASCADE
     )
     # TODO: Change the default to json render side
     motivation_about = models.TextField(blank=True, default='')
diff --git a/src/account/serializers.py b/src/account/serializers.py
index 460feb7..e38ad58 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -54,9 +54,9 @@ class ProfileSerializer(serializers.ModelSerializer):
         new_role = validated_data.get('role', instance.role)
         if instance.role != new_role:
             if new_role == 'Student':
-                email.admitted(instance.user.email)
+                email.admitted(instance.user)
             if new_role == 'Denied':
-                email.denied(instance.user.email)
+                email.denied(instance.user)
         return super().update(instance, validated_data)
 
     def get_full_name(self, obj):
diff --git a/src/common/emails/admitted.txt b/src/common/emails/admitted.txt
new file mode 100644
index 0000000..f719168
--- /dev/null
+++ b/src/common/emails/admitted.txt
@@ -0,0 +1,6 @@
+ďťżKedves %(name)s!
+
+Gratulálunk! Jelentkezésedet elfogadtuk! Innentől kezdve aktívan figyeld leveleidet, mert hamarosan megkapod az első képzésalkalmunkra szóló meghívódat!
+
+Üdvözlettel:
+A mentorok
\ No newline at end of file
diff --git a/src/common/emails/denied.txt b/src/common/emails/denied.txt
new file mode 100644
index 0000000..b085e7a
--- /dev/null
+++ b/src/common/emails/denied.txt
@@ -0,0 +1,6 @@
+ďťżKedves %(name)s!
+
+Sajnos - hely hiányában - idei képzésalkamunkon nem tudsz részt venni. Ne csüggedj, következő évben is indítunk ilyen programot, és ha addig is szorgalmasan tevékenykedsz, akkor biztosan be fogsz kerülni!
+
+Üdvözlettel:
+A mentorok
\ No newline at end of file
diff --git a/src/common/emails/homework_corrected.txt b/src/common/emails/homework_corrected.txt
new file mode 100644
index 0000000..0128e57
--- /dev/null
+++ b/src/common/emails/homework_corrected.txt
@@ -0,0 +1,7 @@
+ďťżKedves %(name)s!
+
+A(z) %(title)s cĂ­mĹą hĂĄzi feladatod stĂĄtusza %(status)s lett.
+Az alĂĄbbi linken tudod megtekinteni a rĂŠszleteket: %(link)s  .
+
+Üdvözlettel:
+A mentorok
\ No newline at end of file
diff --git a/src/common/emails/new_homework.txt b/src/common/emails/new_homework.txt
new file mode 100644
index 0000000..9a66183
--- /dev/null
+++ b/src/common/emails/new_homework.txt
@@ -0,0 +1,7 @@
+ďťżKedves %(name)s!
+
+Új házi feladat került kiadásra, melyet az alábbi linken tudsz megtekinteni: %(link)s
+Határidő: %(deadline)s
+
+Sok sikert!
+A mentorok
\ No newline at end of file
diff --git a/src/common/emails/registration.txt b/src/common/emails/registration.txt
new file mode 100644
index 0000000..f9068e2
--- /dev/null
+++ b/src/common/emails/registration.txt
@@ -0,0 +1,10 @@
+ďťżKedves %(name)s!
+
+Örömmel vettük jelenkezésedet az idei KSZKépzés programunkba. Azonban ahhoz, hogy ezt el is tudjuk bírálni, még szükségünk van pár dologra tőled:
+	- ki kell tĂśltened a profilodat,
+	- talĂĄlsz pĂĄr feladatot is az oldalon, ezeket meg kell oldanod,
+	- gyere el Újoncdélutánunkra, erről majd még küldünk emailt.
+A feladatokhoz jó szórakozást kívánunk, és ne ijedj meg, ha valamit nem tudsz fejből, Google-t és egyéb segítséget természetesen használhatsz!
+
+Üdvözlettel:
+A mentorok
diff --git a/src/homework/serializers.py b/src/homework/serializers.py
index 9afed27..c6e4fde 100755
--- a/src/homework/serializers.py
+++ b/src/homework/serializers.py
@@ -18,8 +18,9 @@ class TaskSerializer(serializers.ModelSerializer):
         return data
 
     def create(self, validated_data):
-        emails = Profile.objects.filter(role="Student").exclude(user__email='').values_list('user__email', flat=True)
-        email.new_homework(emails)
+        profiles = Profile.objects.filter(role="Student").exclude(user__email='')
+        for profile in profiles:
+            email.new_homework(profile.user, validated_data.get('deadline'))
         return self.Meta.model.objects.create(**validated_data)
 
 
@@ -64,10 +65,15 @@ class SolutionSerializer(serializers.ModelSerializer):
 
     def update(self, instance, validated_data):
         if instance.corrected == False and validated_data.get('corrected', instance.corrected) == True:
-            email.homework_corrected(instance.created_by.user.email)
+            email.homework_corrected(
+                instance.created_by.user,
+                instance.task.title,
+                validated_data.get('accepted', instance.accepted)
+            )
         return super().update(instance, validated_data)
 
     def create(self, validated_data):
         profile = CurrentUserMiddleware.get_current_user_profile()
         models.Solution.objects.filter(created_by=profile, task=validated_data['task']).delete()
         return super().create(validated_data)
+
diff --git a/src/homework/views.py b/src/homework/views.py
index cff6e52..9a9d88c 100755
--- a/src/homework/views.py
+++ b/src/homework/views.py
@@ -8,7 +8,7 @@ from common import permissions
 class TasksViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.TaskSerializer
     queryset = models.Task.objects.all()
-    permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, permissions.IsStaffOrStudent )
+    permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, permissions.IsStaffOrStudent, )
 
 
 class SolutionsViewSet(viewsets.ModelViewSet):
-- 
GitLab