From f3a723c6fb6a2b5b6d8ad24b901e26ec4a189afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu> Date: Sat, 19 Jan 2019 15:44:53 +0100 Subject: [PATCH] Add student event view --- src/stats/migrations/0002_event_description.py | 18 ++++++++++++++++++ src/stats/models.py | 1 + src/stats/serializers.py | 9 ++++++++- src/stats/urls.py | 3 ++- src/stats/views.py | 14 ++++++++++---- 5 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 src/stats/migrations/0002_event_description.py diff --git a/src/stats/migrations/0002_event_description.py b/src/stats/migrations/0002_event_description.py new file mode 100644 index 0000000..d7d0566 --- /dev/null +++ b/src/stats/migrations/0002_event_description.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.1 on 2019-01-19 14:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stats', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='description', + field=models.TextField(blank=True, default=''), + ), + ] diff --git a/src/stats/models.py b/src/stats/models.py index cf11e88..c4fcbec 100644 --- a/src/stats/models.py +++ b/src/stats/models.py @@ -8,6 +8,7 @@ from django.core.exceptions import ValidationError class Event(models.Model): name = models.CharField(max_length=255) date = models.DateTimeField(null=False) + description = models.TextField(blank=True, default='') visitors = models.ManyToManyField( Profile, related_name='events', diff --git a/src/stats/serializers.py b/src/stats/serializers.py index d18167b..42db8a8 100644 --- a/src/stats/serializers.py +++ b/src/stats/serializers.py @@ -3,7 +3,7 @@ from common.serializers import CurrentUserProfileDefault from . import models -class EventSerializer(serializers.ModelSerializer): +class StaffEventSerializer(serializers.ModelSerializer): created_by_name = serializers.SerializerMethodField() visitor_number = serializers.SerializerMethodField() @@ -19,6 +19,13 @@ class EventSerializer(serializers.ModelSerializer): return obj.visitors.all().count() +class StudentEventSerializer(serializers.ModelSerializer): + class Meta: + model = models.Event + fields = ('name', 'date', 'description', ) + read_only_fields = ('name', 'date', 'description', ) + + class NoteSerializer(serializers.ModelSerializer): created_by = serializers.HiddenField(default=CurrentUserProfileDefault()) created_by_name = serializers.SerializerMethodField() diff --git a/src/stats/urls.py b/src/stats/urls.py index f2a9110..0e669f8 100644 --- a/src/stats/urls.py +++ b/src/stats/urls.py @@ -2,7 +2,8 @@ from rest_framework import routers from . import views router = routers.DefaultRouter() -router.register(r'events', views.EventViewSet, base_name='events') +router.register(r'staff_events', views.StaffEventViewSet, base_name='staff_events') +router.register(r'student_events', views.StudentEventViewSet, base_name='student_events') router.register(r'notes', views.NoteViewSet, base_name='notes') urlpatterns = router.urls diff --git a/src/stats/views.py b/src/stats/views.py index 13d1cc0..b503c5f 100644 --- a/src/stats/views.py +++ b/src/stats/views.py @@ -1,13 +1,19 @@ from rest_framework import viewsets from . import models from . import serializers -from common.permissions import IsStaffUser, IsStaffOrReadOnlyForAuthenticated +from common.permissions import IsStaffUser, IsStaffOrStudent -class EventViewSet(viewsets.ModelViewSet): - serializer_class = serializers.EventSerializer +class StaffEventViewSet(viewsets.ModelViewSet): + serializer_class = serializers.StaffEventSerializer queryset = models.Event.objects.all() - permission_classes = (IsStaffOrReadOnlyForAuthenticated, ) + permission_classes = (IsStaffUser, ) + + +class StudentEventViewSet(viewsets.ModelViewSet): + serializer_class = serializers.StudentEventSerializer + queryset = models.Event.objects.all() + permission_classes = (IsStaffOrStudent, ) class NoteViewSet(viewsets.ModelViewSet): -- GitLab