Viewsets, restapi: editovat mohou jen organizátoři, vidět mohou všichni
This commit is contained in:
parent
9726dca10a
commit
87f2ad7a84
3 changed files with 29 additions and 5 deletions
|
@ -123,6 +123,7 @@ INSTALLED_APPS = (
|
||||||
|
|
||||||
'webpack_loader',
|
'webpack_loader',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
|
'rest_framework.authtoken',
|
||||||
|
|
||||||
# MaMweb
|
# MaMweb
|
||||||
'mamweb',
|
'mamweb',
|
||||||
|
|
7
seminar/permissions.py
Normal file
7
seminar/permissions.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
from rest_framework.permissions import BasePermission
|
||||||
|
|
||||||
|
class AllowWrite(BasePermission):
|
||||||
|
|
||||||
|
def has_permission(self, request, view):
|
||||||
|
return request.user.has_perm('auth.org')
|
||||||
|
|
|
@ -1,7 +1,23 @@
|
||||||
from rest_framework import viewsets,filters
|
from rest_framework import viewsets,filters
|
||||||
|
from rest_framework.permissions import BasePermission, AllowAny
|
||||||
from . import models as m
|
from . import models as m
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
|
from seminar.permissions import AllowWrite
|
||||||
|
|
||||||
|
class PermissionMixin(object):
|
||||||
|
""" Redefines get_permissions so that only organizers can make changes. """
|
||||||
|
|
||||||
|
def get_permissions(self):
|
||||||
|
permission_classes = []
|
||||||
|
print("get_permissions have been called.")
|
||||||
|
if self.action in ["create", "update", "partial_update", "destroy"]:
|
||||||
|
permission_classes = [AllowWrite] # speciální permission na zápis - orgové
|
||||||
|
else:
|
||||||
|
permission_classes = [AllowAny] # návštěvník nemusí být zalogován, aby si prohlížel obsah
|
||||||
|
return [permission() for permission in permission_classes]
|
||||||
|
|
||||||
|
|
||||||
class ReadWriteSerializerMixin(object):
|
class ReadWriteSerializerMixin(object):
|
||||||
"""
|
"""
|
||||||
Overrides get_serializer_class to choose the read serializer
|
Overrides get_serializer_class to choose the read serializer
|
||||||
|
@ -46,27 +62,27 @@ class ReadWriteSerializerMixin(object):
|
||||||
)
|
)
|
||||||
return self.create_serializer_class
|
return self.create_serializer_class
|
||||||
|
|
||||||
class UlohaVzorakNodeViewSet(viewsets.ModelViewSet):
|
class UlohaVzorakNodeViewSet(PermissionMixin, viewsets.ModelViewSet):
|
||||||
queryset = m.UlohaVzorakNode.objects.all()
|
queryset = m.UlohaVzorakNode.objects.all()
|
||||||
serializer_class = views.UlohaVzorakNodeSerializer
|
serializer_class = views.UlohaVzorakNodeSerializer
|
||||||
|
|
||||||
class TextViewSet(viewsets.ModelViewSet):
|
class TextViewSet(PermissionMixin, viewsets.ModelViewSet):
|
||||||
queryset = m.Text.objects.all()
|
queryset = m.Text.objects.all()
|
||||||
serializer_class = views.TextSerializer
|
serializer_class = views.TextSerializer
|
||||||
|
|
||||||
class TextNodeViewSet(ReadWriteSerializerMixin,viewsets.ModelViewSet):
|
class TextNodeViewSet(PermissionMixin, ReadWriteSerializerMixin,viewsets.ModelViewSet):
|
||||||
queryset = m.TextNode.objects.all()
|
queryset = m.TextNode.objects.all()
|
||||||
read_serializer_class = views.TextNodeSerializer
|
read_serializer_class = views.TextNodeSerializer
|
||||||
write_serializer_class = views.TextNodeWriteSerializer
|
write_serializer_class = views.TextNodeWriteSerializer
|
||||||
create_serializer_class = views.TextNodeCreateSerializer
|
create_serializer_class = views.TextNodeCreateSerializer
|
||||||
|
|
||||||
class CastNodeViewSet(ReadWriteSerializerMixin,viewsets.ModelViewSet):
|
class CastNodeViewSet(PermissionMixin, ReadWriteSerializerMixin,viewsets.ModelViewSet):
|
||||||
queryset = m.CastNode.objects.all()
|
queryset = m.CastNode.objects.all()
|
||||||
read_serializer_class = views.CastNodeSerializer
|
read_serializer_class = views.CastNodeSerializer
|
||||||
write_serializer_class = views.CastNodeSerializer
|
write_serializer_class = views.CastNodeSerializer
|
||||||
create_serializer_class = views.CastNodeCreateSerializer
|
create_serializer_class = views.CastNodeCreateSerializer
|
||||||
|
|
||||||
class UlohaVzorakNodeViewSet(viewsets.ModelViewSet):
|
class UlohaVzorakNodeViewSet(PermissionMixin, viewsets.ModelViewSet):
|
||||||
serializer_class = views.UlohaVzorakNodeSerializer
|
serializer_class = views.UlohaVzorakNodeSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
|
Loading…
Reference in a new issue