From fcf2a7e7d0f2430e79a408159469b23520cb394f Mon Sep 17 00:00:00 2001
From: rlacko <rlacko@sch.bme.hu>
Date: Tue, 4 Feb 2020 15:13:20 +0100
Subject: [PATCH] removed current user middleware usage

---
 .gitignore                                    |  3 +
 src/account/serializers.py                    |  5 +-
 src/common/email.py                           | 57 ++++++++++---------
 .../migrations/0007_auto_20200204_1442.py     | 19 +++++++
 src/document/models.py                        |  3 -
 src/document/serializers.py                   |  3 +-
 src/document/views.py                         |  7 +++
 .../migrations/0004_auto_20200204_1457.py     | 24 ++++++++
 src/homework/models.py                        |  3 -
 src/homework/serializers.py                   |  5 +-
 src/homework/views.py                         |  7 +++
 .../migrations/0002_auto_20200204_1500.py     | 19 +++++++
 src/mentors/models.py                         |  2 -
 src/mentors/urls.py                           |  2 +-
 src/mentors/views.py                          |  9 ++-
 .../migrations/0003_auto_20200204_1510.py     | 24 ++++++++
 src/news/models.py                            |  3 -
 src/news/views.py                             |  8 +++
 .../migrations/0004_auto_20200204_1510.py     | 24 ++++++++
 src/stats/models.py                           |  3 -
 src/stats/views.py                            | 21 +++++++
 21 files changed, 201 insertions(+), 50 deletions(-)
 create mode 100644 src/document/migrations/0007_auto_20200204_1442.py
 create mode 100644 src/homework/migrations/0004_auto_20200204_1457.py
 create mode 100644 src/mentors/migrations/0002_auto_20200204_1500.py
 create mode 100644 src/news/migrations/0003_auto_20200204_1510.py
 create mode 100644 src/stats/migrations/0004_auto_20200204_1510.py

diff --git a/.gitignore b/.gitignore
index 02d4596..1d40e05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,5 +112,8 @@ environment.bat
 #PyCharm
 .idea/
 
+#VSCode
+.vscode/
+
 #media
 /media/*
\ No newline at end of file
diff --git a/src/account/serializers.py b/src/account/serializers.py
index ae7b5ba..e057bbd 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -1,6 +1,5 @@
 from rest_framework import serializers
 from account import models
-from common.middleware import CurrentUserMiddleware
 from common import email
 
 
@@ -45,10 +44,10 @@ class ProfileSerializer_User(serializers.ModelSerializer):
         return value
 
     def validate_role(self, value):
-        modifier_role = CurrentUserMiddleware.get_current_user_profile().role
+        modifier_role = self.context['request'].user.profile.role
         if value != modifier_role:
             raise serializers.ValidationError(
-                "You don't have permission change role")
+                "You don't have permission to change role")
         return value
 
     def validate_signed(self, value):
diff --git a/src/common/email.py b/src/common/email.py
index 804231f..07816cf 100644
--- a/src/common/email.py
+++ b/src/common/email.py
@@ -12,42 +12,47 @@ def read_email(name):
 
 
 def registration(user):
-    subject = "Kszképzés regisztráció"
-    message = read_email('registration.txt')
-    message = str.format(message % {'name': user.get_full_name()})
-    send_mail(subject, message, sender_email, [user.email, ])
+    # subject = "Kszképzés regisztráció"
+    # message = read_email('registration.txt')
+    # message = str.format(message % {'name': user.get_full_name()})
+    # send_mail(subject, message, sender_email, [user.email, ])
+    pass
 
 
 def admitted(user):
     subject = "Jelentkezés eredménye"
-    message = read_email('admitted.txt')
-    message = str.format(message % {'name': user.get_full_name()})
-    send_mail(subject, message, sender_email, [user.email, ])
+    # message = read_email('admitted.txt')
+    # message = str.format(message % {'name': user.get_full_name()})
+    # send_mail(subject, message, sender_email, [user.email, ])
+    pass
 
 
 def denied(user):
-    subject = "Jelentkezés eredménye"
-    message = read_email('denied.txt')
-    message = str.format(message % {'name': user.get_full_name()})
-    send_mail(subject, message, sender_email, [user.email, ])
+    # subject = "Jelentkezés eredménye"
+    # message = read_email('denied.txt')
+    # message = str.format(message % {'name': user.get_full_name()})
+    # send_mail(subject, message, sender_email, [user.email, ])
+    pass
 
 
 def new_homework(user, deadline):
-    deadline = deadline.strftime('%Y-%m-%d %H:%M')
-    subject = "Új házifeladat"
-    message = read_email('new_homework.txt')
-    message = str.format(
-        message % {'name': user.get_full_name(), 'link': link, 'deadline': deadline})
-    send_mail(subject, message, sender_email, [user.email, ])
+    # deadline = deadline.strftime('%Y-%m-%d %H:%M')
+    # subject = "Új házifeladat"
+    # message = read_email('new_homework.txt')
+    # message = str.format(
+    #     message % {'name': user.get_full_name(), 'link': link, 'deadline': deadline})
+    # send_mail(subject, message, sender_email, [user.email, ])
+    pass
 
 
 def homework_corrected(user, title, accepted):
-    subject = "Házifeladat eredménye"
-    if accepted:
-        status = 'Elfogadva'
-    else:
-        status = 'Hibás'
-    message = read_email('homework_corrected.txt')
-    message = str.format(message % {'name': user.get_full_name(
-    ), 'link': link, 'status': status, 'title': title})
-    send_mail(subject, message, sender_email, [user.email, ])
+    # subject = "Házifeladat eredménye"
+    # if accepted:
+    #     status = 'Elfogadva'
+    # else:
+    #     status = 'Hibás'
+    # message = read_email('homework_corrected.txt')
+    # message = str.format(message % {'name': user.get_full_name(
+    # ), 'link': link, 'status': status, 'title': title})
+    # send_mail(subject, message, sender_email, [user.email, ])
+    pass
\ No newline at end of file
diff --git a/src/document/migrations/0007_auto_20200204_1442.py b/src/document/migrations/0007_auto_20200204_1442.py
new file mode 100644
index 0000000..ede8e11
--- /dev/null
+++ b/src/document/migrations/0007_auto_20200204_1442.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.4 on 2020-02-04 13:42
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('document', '0006_auto_20200203_0016'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='document',
+            name='uploaded_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='documents', to='account.Profile'),
+        ),
+    ]
diff --git a/src/document/models.py b/src/document/models.py
index 11eeb96..093434c 100644
--- a/src/document/models.py
+++ b/src/document/models.py
@@ -7,8 +7,6 @@ from account.models import Profile
 from homework.models import Solution
 from common.validators import FileSizeValidator
 
-from common.middleware import CurrentUserMiddleware
-
 
 def document_file_name(instance, filename):
     return '/'.join([
@@ -24,7 +22,6 @@ class Document(models.Model):
         Profile,
         on_delete=models.DO_NOTHING,
         related_name='documents',
-        default=CurrentUserMiddleware.get_current_user_profile,
     )
     uploaded_at = models.DateTimeField(auto_now_add=True, editable=False)
     name = models.CharField(max_length=150, blank=True, default='')
diff --git a/src/document/serializers.py b/src/document/serializers.py
index 7e24e70..937ecac 100644
--- a/src/document/serializers.py
+++ b/src/document/serializers.py
@@ -1,7 +1,6 @@
 from rest_framework import serializers
 from common.serializers import CurrentUserProfileDefault
 from . import models
-from common.middleware import CurrentUserMiddleware
 
 _max_count = 1
 
@@ -32,7 +31,7 @@ class DocumentSerializer(serializers.ModelSerializer):
         return obj.uploaded_by.full_name
 
     def validate_solution(self, value):
-        profile = CurrentUserMiddleware.get_current_user_profile()
+        profile = self.context['request'].user.profile
         if value not in profile.solution.all():
             raise serializers.ValidationError('You dont have permission!')
         count = models.Document.objects.filter(
diff --git a/src/document/views.py b/src/document/views.py
index 00f5321..1adb118 100644
--- a/src/document/views.py
+++ b/src/document/views.py
@@ -36,3 +36,10 @@ class DocumentViewSet(viewsets.ModelViewSet):
         if solution_id is not None:
             return queryset.filter(solution=solution_id)
         return queryset
+    
+    def perform_create(self, serializer):
+        kwargs = {
+            'uploaded_by': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
diff --git a/src/homework/migrations/0004_auto_20200204_1457.py b/src/homework/migrations/0004_auto_20200204_1457.py
new file mode 100644
index 0000000..6090358
--- /dev/null
+++ b/src/homework/migrations/0004_auto_20200204_1457.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.2.4 on 2020-02-04 13:57
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('homework', '0003_auto_20200202_1541'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='solution',
+            name='created_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='solution', to='account.Profile'),
+        ),
+        migrations.AlterField(
+            model_name='task',
+            name='created_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tasks', to='account.Profile'),
+        ),
+    ]
diff --git a/src/homework/models.py b/src/homework/models.py
index 75fddd9..be416b1 100755
--- a/src/homework/models.py
+++ b/src/homework/models.py
@@ -1,5 +1,4 @@
 from django.db import models
-from common.middleware import CurrentUserMiddleware
 from account.models import Profile
 
 
@@ -8,7 +7,6 @@ class Task(models.Model):
         Profile,
         on_delete=models.DO_NOTHING,
         related_name='tasks',
-        default=CurrentUserMiddleware.get_current_user_profile,
     )
     created_at = models.DateTimeField(auto_now_add=True, editable=False)
     updated_at = models.DateTimeField(auto_now=True, editable=False)
@@ -28,7 +26,6 @@ class Solution(models.Model):
         Profile,
         related_name='solution',
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
     created_at = models.DateTimeField(auto_now_add=True, editable=False)
     updated_at = models.DateTimeField(auto_now=True, editable=False)
diff --git a/src/homework/serializers.py b/src/homework/serializers.py
index 047752e..e59ed06 100755
--- a/src/homework/serializers.py
+++ b/src/homework/serializers.py
@@ -3,7 +3,6 @@ from django.utils import timezone
 from account.models import Profile
 from . import models
 from common import email
-from common.middleware import CurrentUserMiddleware
 
 
 class TaskSerializer(serializers.ModelSerializer):
@@ -70,7 +69,7 @@ class SolutionSerializer_Student(serializers.ModelSerializer):
         return super().update(instance, validated_data)
 
     def create(self, validated_data):
-        profile = CurrentUserMiddleware.get_current_user_profile()
+        profile = self.context['request'].user.profile
         models.Solution.objects.filter(
             created_by=profile,
             task=validated_data['task']).delete()
@@ -114,7 +113,7 @@ class SolutionSerializer_Staff(serializers.ModelSerializer):
         return super().update(instance, validated_data)
 
     def create(self, validated_data):
-        profile = CurrentUserMiddleware.get_current_user_profile()
+        profile = self.context['request'].user.profile
         models.Solution.objects.filter(
             created_by=profile,
             task=validated_data['task']).delete()
diff --git a/src/homework/views.py b/src/homework/views.py
index fce43da..b390abe 100755
--- a/src/homework/views.py
+++ b/src/homework/views.py
@@ -33,3 +33,10 @@ class SolutionsViewSet(viewsets.ModelViewSet):
             if profile_id is not None:
                 queryset = queryset.filter(created_by=profile_id)
         return queryset
+    
+    def perform_create(self, serializer):
+        kwargs = {
+            'created_by': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
diff --git a/src/mentors/migrations/0002_auto_20200204_1500.py b/src/mentors/migrations/0002_auto_20200204_1500.py
new file mode 100644
index 0000000..2eb4444
--- /dev/null
+++ b/src/mentors/migrations/0002_auto_20200204_1500.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.4 on 2020-02-04 14:00
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('mentors', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mentor',
+            name='mentor',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='mentor', to='account.Profile'),
+        ),
+    ]
diff --git a/src/mentors/models.py b/src/mentors/models.py
index 59b9a72..2d95263 100644
--- a/src/mentors/models.py
+++ b/src/mentors/models.py
@@ -1,6 +1,5 @@
 from django.db import models
 from account.models import Profile
-from common.middleware import CurrentUserMiddleware
 
 
 class Mentor(models.Model):
@@ -8,7 +7,6 @@ class Mentor(models.Model):
         Profile,
         related_name="mentor",
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
     name = models.CharField(null=False, max_length=200)
     text = models.TextField()
diff --git a/src/mentors/urls.py b/src/mentors/urls.py
index f83af81..027a533 100644
--- a/src/mentors/urls.py
+++ b/src/mentors/urls.py
@@ -3,6 +3,6 @@ from mentors import views
 
 
 router = routers.DefaultRouter()
-router.register(r'mentors', views.MentorssViewSet, base_name='mentors')
+router.register(r'mentors', views.MentorsViewSet, base_name='mentors')
 
 urlpatterns = router.urls
diff --git a/src/mentors/views.py b/src/mentors/views.py
index f294867..28fdcc0 100644
--- a/src/mentors/views.py
+++ b/src/mentors/views.py
@@ -4,7 +4,14 @@ from mentors.models import Mentor
 from mentors.serializers import MentorSerializer
 
 
-class MentorssViewSet(viewsets.ModelViewSet):
+class MentorsViewSet(viewsets.ModelViewSet):
     serializer_class = MentorSerializer
     permission_classes = (IsStaffOrStudent,)
     queryset = Mentor.objects.all().order_by('name')
+
+    def perform_create(self, serializer):
+        kwargs = {
+            'mentor': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
\ No newline at end of file
diff --git a/src/news/migrations/0003_auto_20200204_1510.py b/src/news/migrations/0003_auto_20200204_1510.py
new file mode 100644
index 0000000..197ab85
--- /dev/null
+++ b/src/news/migrations/0003_auto_20200204_1510.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.2.4 on 2020-02-04 14:10
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('news', '0002_auto_20200202_1541'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='article',
+            name='author',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='account.Profile'),
+        ),
+        migrations.AlterField(
+            model_name='article',
+            name='updated_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='updater', to='account.Profile'),
+        ),
+    ]
diff --git a/src/news/models.py b/src/news/models.py
index d553d71..17837b5 100644
--- a/src/news/models.py
+++ b/src/news/models.py
@@ -1,6 +1,5 @@
 from django.db import models
 from account.models import Profile
-from common.middleware import CurrentUserMiddleware
 
 
 class Article(models.Model):
@@ -8,7 +7,6 @@ class Article(models.Model):
         Profile,
         related_name="author",
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
     title = models.CharField(null=False, max_length=200)
     text = models.TextField()
@@ -18,7 +16,6 @@ class Article(models.Model):
         Profile,
         related_name="updater",
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
 
     def __str__(self):
diff --git a/src/news/views.py b/src/news/views.py
index 764d0a9..87c9c71 100644
--- a/src/news/views.py
+++ b/src/news/views.py
@@ -8,3 +8,11 @@ class NewsViewSet(viewsets.ModelViewSet):
     serializer_class = ArticleSerializer
     permission_classes = (IsStaffOrReadOnly,)
     queryset = Article.objects.all().order_by('-created_at')
+
+    def perform_create(self, serializer):
+        kwargs = {
+            'author': self.request.user.profile,
+            'updated_by': self.request.user.profile,
+        }
+ 
+        serializer.save(**kwargs)
\ No newline at end of file
diff --git a/src/stats/migrations/0004_auto_20200204_1510.py b/src/stats/migrations/0004_auto_20200204_1510.py
new file mode 100644
index 0000000..72e36a0
--- /dev/null
+++ b/src/stats/migrations/0004_auto_20200204_1510.py
@@ -0,0 +1,24 @@
+# Generated by Django 2.2.4 on 2020-02-04 14:10
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('stats', '0003_auto_20190122_1449'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='event',
+            name='created_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_event', to='account.Profile'),
+        ),
+        migrations.AlterField(
+            model_name='note',
+            name='created_by',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_notes', to='account.Profile'),
+        ),
+    ]
diff --git a/src/stats/models.py b/src/stats/models.py
index 762173f..366c1d4 100644
--- a/src/stats/models.py
+++ b/src/stats/models.py
@@ -1,6 +1,5 @@
 from django.db import models
 from account.models import Profile
-from common.middleware import CurrentUserMiddleware
 
 
 class Event(models.Model):
@@ -21,7 +20,6 @@ class Event(models.Model):
         Profile,
         related_name='created_event',
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
     created_at = models.DateTimeField(auto_now_add=True, editable=False)
     updated_at = models.DateTimeField(auto_now=True, editable=False)
@@ -40,7 +38,6 @@ class Note(models.Model):
         Profile,
         related_name='created_notes',
         on_delete=models.DO_NOTHING,
-        default=CurrentUserMiddleware.get_current_user_profile
     )
     created_at = models.DateTimeField(auto_now_add=True, editable=False)
     updated_at = models.DateTimeField(auto_now=True, editable=False)
diff --git a/src/stats/views.py b/src/stats/views.py
index c917e47..6b022f2 100644
--- a/src/stats/views.py
+++ b/src/stats/views.py
@@ -9,12 +9,26 @@ class StaffEventViewSet(viewsets.ModelViewSet):
     queryset = models.Event.objects.all().order_by('date')
     permission_classes = (IsStaffUser, )
 
+    def perform_create(self, serializer):
+        kwargs = {
+            'created_by': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
+
 
 class StudentEventViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.StudentEventSerializer
     queryset = models.Event.objects.all().order_by('date')
     permission_classes = (IsStaffOrStudent, )
 
+    def perform_create(self, serializer):
+        kwargs = {
+            'created_by': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
+
 
 class NoteViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.NoteSerializer
@@ -31,3 +45,10 @@ class NoteViewSet(viewsets.ModelViewSet):
         if event_id is not None:
             return queryset.filter(event=event_id)
         return queryset
+    
+    def perform_create(self, serializer):
+        kwargs = {
+            'created_by': self.request.user.profile
+        }
+ 
+        serializer.save(**kwargs)
-- 
GitLab