diff --git a/src/stats/migrations/0002_event_description.py b/src/stats/migrations/0002_event_description.py new file mode 100644 index 0000000000000000000000000000000000000000..d7d056636e1bc6c5ad18457d09a92bc56ba30927 --- /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 cf11e885fcad7924f8c9e396e7ba037977c86382..c4fcbecaa8cbf102f1766c95d1c0bb1e8c735cc1 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 d18167b37f7fe847681259c569e39d6dbde3bb8c..42db8a865bd95c17c1a0df79c377b4ffa6ae2183 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 f2a911041c8e7fad05bdbfdae40749ac4d044e92..0e669f8037c98287185212ecbe0c2b43c03bd267 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 13d1cc0493df246e02b8f2bbd0b6e1f8df0f958e..b503c5ffc5efebb2bc5dc06796443b53c954cf72 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):