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