|
|
@ -2,6 +2,59 @@ from rest_framework import viewsets,filters |
|
|
|
from . import models as m |
|
|
|
from . import views |
|
|
|
|
|
|
|
class ReadWriteSerializerMixin(object): |
|
|
|
""" |
|
|
|
Overrides get_serializer_class to choose the read serializer |
|
|
|
for GET requests and the write serializer for POST requests. |
|
|
|
|
|
|
|
Set read_serializer_class and write_serializer_class attributes on a |
|
|
|
viewset. |
|
|
|
""" |
|
|
|
|
|
|
|
read_serializer_class = None |
|
|
|
create_serializer_class = None |
|
|
|
write_serializer_class = None |
|
|
|
|
|
|
|
def get_serializer_class(self): |
|
|
|
if self.action == "create": |
|
|
|
return self.get_create_serializer_class() |
|
|
|
if self.action in ["update", "partial_update", "destroy"]: |
|
|
|
return self.get_write_serializer_class() |
|
|
|
return self.get_read_serializer_class() |
|
|
|
|
|
|
|
def get_read_serializer_class(self): |
|
|
|
assert self.read_serializer_class is not None, ( |
|
|
|
"'%s' should either include a `read_serializer_class` attribute," |
|
|
|
"or override the `get_read_serializer_class()` method." |
|
|
|
% self.__class__.__name__ |
|
|
|
) |
|
|
|
return self.read_serializer_class |
|
|
|
|
|
|
|
def get_write_serializer_class(self): |
|
|
|
assert self.write_serializer_class is not None, ( |
|
|
|
"'%s' should either include a `write_serializer_class` attribute," |
|
|
|
"or override the `get_write_serializer_class()` method." |
|
|
|
% self.__class__.__name__ |
|
|
|
) |
|
|
|
return self.write_serializer_class |
|
|
|
|
|
|
|
def get_create_serializer_class(self): |
|
|
|
assert self.create_serializer_class is not None, ( |
|
|
|
"'%s' should either include a `create_serializer_class` attribute," |
|
|
|
"or override the `get_create_serializer_class()` method." |
|
|
|
% self.__class__.__name__ |
|
|
|
) |
|
|
|
return self.create_serializer_class |
|
|
|
|
|
|
|
class UlohaVzorakNodeViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = m.UlohaVzorakNode.objects.all() |
|
|
|
serializer_class = views.UlohaVzorakNodeSerializer |
|
|
|
|
|
|
|
class TextViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = m.Text.objects.all() |
|
|
|
serializer_class = views.TextSerializer |
|
|
|
|
|
|
|
class TextNodeViewSet(ReadWriteSerializerMixin,viewsets.ModelViewSet): |
|
|
|
queryset = m.TextNode.objects.all() |
|
|
|
read_serializer_class = views.TextNodeSerializer |
|
|
|
write_serializer_class = views.TextNodeWriteSerializer |
|
|
|