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