From dd3bb272c5ada31ef15f57c4bf11a9cbb4362b6e Mon Sep 17 00:00:00 2001
From: rlacko <rlacko@sch.bme.hu>
Date: Sun, 2 Feb 2020 22:32:34 +0100
Subject: [PATCH] mentors

---
 .gitignore                     |  8 +++++++-
 src/account/models.py          |  5 +++--
 src/account/views.py           |  3 ++-
 src/kszkepzes/settings/base.py |  1 +
 src/kszkepzes/urls.py          |  1 +
 src/mentors/__init__.py        |  0
 src/mentors/admin.py           |  5 +++++
 src/mentors/apps.py            |  5 +++++
 src/mentors/models.py          | 19 +++++++++++++++++++
 src/mentors/serializers.py     | 15 +++++++++++++++
 src/mentors/tests.py           |  0
 src/mentors/urls.py            |  8 ++++++++
 src/mentors/views.py           | 10 ++++++++++
 13 files changed, 76 insertions(+), 4 deletions(-)
 create mode 100644 src/mentors/__init__.py
 create mode 100644 src/mentors/admin.py
 create mode 100644 src/mentors/apps.py
 create mode 100644 src/mentors/models.py
 create mode 100644 src/mentors/serializers.py
 create mode 100644 src/mentors/tests.py
 create mode 100644 src/mentors/urls.py
 create mode 100644 src/mentors/views.py

diff --git a/.gitignore b/.gitignore
index ffb3de3..1b67e5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -110,4 +110,10 @@ environment.ps1
 environment.bat
 
 #PyCharm
-.idea/
\ No newline at end of file
+.idea/
+
+#Migrations
+**/migrations/
+
+#media
+/media/*
\ No newline at end of file
diff --git a/src/account/models.py b/src/account/models.py
index 83292a7..21bfbfa 100644
--- a/src/account/models.py
+++ b/src/account/models.py
@@ -46,7 +46,7 @@ class Profile(models.Model):
     groups = models.ManyToManyField(
         GroupChoice, related_name='profiles', blank=True)
     role = models.CharField(max_length=10, choices=ROLES, default='Applicant')
-
+    
     @property
     def events_visited(self):
         return self.events_visitor.all().count()
@@ -65,4 +65,5 @@ class Profile(models.Model):
 
 class Deadline(SingletonModel):
     deadline = models.DateTimeField(null=True)
-    text = models.CharField(max_length=50, blank=True, default='')
+    messageBefore = models.TextField(blank=True, default='')
+    messageAfter = models.TextField(blank=True, default='')
diff --git a/src/account/views.py b/src/account/views.py
index 04cb6d6..9321def 100644
--- a/src/account/views.py
+++ b/src/account/views.py
@@ -37,5 +37,6 @@ class ProfileViewSet(viewsets.ModelViewSet):
         deadline = models.Deadline.get_solo()
         return Response({
             'deadline': deadline.deadline,
-            'text': deadline.text
+            'messageBefore': deadline.messageBefore,
+            'messageAfter': deadline.messageAfter
         })
diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py
index d564e3d..0e504cc 100644
--- a/src/kszkepzes/settings/base.py
+++ b/src/kszkepzes/settings/base.py
@@ -48,6 +48,7 @@ INSTALLED_APPS = [
     'stats',
     'news',
     'document',
+    'mentors',
     'groups',
     'drf_yasg',
 ]
diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py
index 154ab83..36b2b6b 100644
--- a/src/kszkepzes/urls.py
+++ b/src/kszkepzes/urls.py
@@ -33,6 +33,7 @@ urlpatterns = [
     url(r'^api/v1/', include('news.urls')),
     url(r'^api/v1/', include('document.urls')),
     url(r'^api/v1/', include('groups.urls')),
+    url(r'^api/v1/', include('mentors.urls')),
     url(r'^api/v1/logout/$', auth_views.LogoutView.as_view(), name='logout'),
 ]
 
diff --git a/src/mentors/__init__.py b/src/mentors/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/mentors/admin.py b/src/mentors/admin.py
new file mode 100644
index 0000000..bacbf7e
--- /dev/null
+++ b/src/mentors/admin.py
@@ -0,0 +1,5 @@
+from django.contrib import admin
+from .models import Mentor
+
+admin.site.register(Mentor)
+# Register your models here.
diff --git a/src/mentors/apps.py b/src/mentors/apps.py
new file mode 100644
index 0000000..5649da6
--- /dev/null
+++ b/src/mentors/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class MentorsConfig(AppConfig):
+    name = 'mentors'
diff --git a/src/mentors/models.py b/src/mentors/models.py
new file mode 100644
index 0000000..75e6470
--- /dev/null
+++ b/src/mentors/models.py
@@ -0,0 +1,19 @@
+from django.db import models
+from account.models import Profile
+from common.middleware import CurrentUserMiddleware
+
+
+class Mentor(models.Model):
+    mentor = models.ForeignKey(
+        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()
+    image = models.ImageField(upload_to='mentors/images/', null=True, blank=True)
+    email = models.EmailField()
+
+    def __str__(self):
+        return self.name
diff --git a/src/mentors/serializers.py b/src/mentors/serializers.py
new file mode 100644
index 0000000..c5ef6d7
--- /dev/null
+++ b/src/mentors/serializers.py
@@ -0,0 +1,15 @@
+from mentors.models import Mentor
+from rest_framework import serializers
+from common.serializers import CurrentUserProfileDefault
+
+
+class MentorSerializer(serializers.ModelSerializer):
+    mentor = serializers.SerializerMethodField()
+
+    class Meta:
+        model = Mentor
+        read_only_fields = ('mentor', )
+        fields = '__all__'
+
+    def get_mentor(self, obj):
+        return obj.mentor.full_name
diff --git a/src/mentors/tests.py b/src/mentors/tests.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/mentors/urls.py b/src/mentors/urls.py
new file mode 100644
index 0000000..f83af81
--- /dev/null
+++ b/src/mentors/urls.py
@@ -0,0 +1,8 @@
+from rest_framework import routers
+from mentors import views
+
+
+router = routers.DefaultRouter()
+router.register(r'mentors', views.MentorssViewSet, base_name='mentors')
+
+urlpatterns = router.urls
diff --git a/src/mentors/views.py b/src/mentors/views.py
new file mode 100644
index 0000000..f294867
--- /dev/null
+++ b/src/mentors/views.py
@@ -0,0 +1,10 @@
+from common.permissions import IsStaffOrStudent
+from rest_framework import viewsets
+from mentors.models import Mentor
+from mentors.serializers import MentorSerializer
+
+
+class MentorssViewSet(viewsets.ModelViewSet):
+    serializer_class = MentorSerializer
+    permission_classes = (IsStaffOrStudent,)
+    queryset = Mentor.objects.all().order_by('name')
-- 
GitLab