diff --git a/.gitignore b/.gitignore index 02d4596dd940394e66b9c59543e42c2508760450..1d40e0537e5f4894bc7867676e6bfd9227d0c563 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 ae7b5bafeef15c9dca8de074aecacc5a5f9eda5e..e057bbd7f5d7b81ef578a2ba960709ee2ec99419 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 804231fc0ecd560e15b84e9bc20fac63943c2c40..07816cf92fca5bb885f047034c533c7a79f3ac52 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 0000000000000000000000000000000000000000..ede8e1160ad33290df6ff389ce011708c447485e --- /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 11eeb96fd9ab4990169d5e5b504e99175a9a6395..093434c91e2e82f277136f77bfee408269286501 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 7e24e70b6bd9e05d0172056753f489b3dc18d23c..937ecac3ee2630ed9770e7b745174ae9a8663929 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 00f53216570810c84504625b4c1f2abdf2896f2d..1adb1187c5e12e8f7c29cee642a2e412d34fb366 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 0000000000000000000000000000000000000000..6090358865bc28d8cac2e21255058ef866e2942f --- /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 75fddd9ea4c46938f630924f05044217a3489429..be416b1182356e443c499faa0650b7e04bb8a7cd 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 047752e0b783eef3104171572b2e963b96b051e4..e59ed06790824ae30bdaf891699df03960cdca68 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 fce43da9c8c315d38cbef91d700890bf8996e46a..b390abe11910b26ae2b0c9212123c9ca2d7263c1 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 0000000000000000000000000000000000000000..2eb444486c10b76fa2e42399a6257887395054f3 --- /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 59b9a720ba88eb81223696f7d7ff982541889230..2d952636f4339c5b7eda7ff4c8cd5d96a3e3a0b8 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 f83af8146a4078ca216ed2f398099b8478ec1932..027a533ba50729d7ac321e7c6a3068575a59e76c 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 f294867543eee37da0eeb0a4e12eed2a1adf829e..28fdcc0bca19e2e4904b560ac9efa0e603689679 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 0000000000000000000000000000000000000000..197ab856dab4ab25514574cef397b31a4e6bfdaa --- /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 d553d7175ba191cf73c075b83ea6f4ed0d631c1d..17837b5d6a2287cc7429c2a7fdb26a4b13e3589e 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 764d0a93c4aeb7f6ff4a493c6db4aed6f24a6c5c..87c9c7187c16c04d024f9fe3b621e033b32ea40a 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 0000000000000000000000000000000000000000..72e36a0128dd6695de5356eb8eb4e73384d66c1a --- /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 762173fad5b281f05295dac8cb8b2268defe33c2..366c1d4b7aef6aa518521cdae18343b1a970983c 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 c917e47dd8b96927fe4f1ec018975c84ed6656b5..6b022f2d23df404a1e81112006118023c26795f8 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)