Skip to content

Commit

Permalink
Added api serialisers for drf extras
Browse files Browse the repository at this point in the history
  • Loading branch information
qoda committed Nov 16, 2016
1 parent 47a84b3 commit c376bd0
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions navbuilder/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from rest_framework import viewsets
from rest_framework import serializers

import rest_framework_extras

from navbuilder.models import Menu, MenuItem


class MenuRelatedMixin(serializers.Serializer):
menuitems = serializers.HyperlinkedRelatedField(
many=True, read_only=True, view_name="menuitem-detail"
)

class Meta(object):
fields = ("menuitems", )


class MenuItemRelatedMixin(serializers.Serializer):
submenuitems = serializers.HyperlinkedRelatedField(
many=True, read_only=True, view_name="menuitem-detail"
)

class Meta(object):
fields = ("submenuitems", )


class PropertiesMixin(serializers.Serializer):
absolute_url = serializers.ReadOnlyField()

class Meta(object):
fields = ("absolute_url", )


class MenuSerializer(MenuRelatedMixin, serializers.HyperlinkedModelSerializer):
class Meta(object):
model = Menu


class MenuObjectsViewSet(viewsets.ModelViewSet):
queryset = Menu.objects.all()
serializer_class = MenuSerializer


class MenuItemSerializer(
MenuItemRelatedMixin, PropertiesMixin,
serializers.HyperlinkedModelSerializer):
class Meta(object):
model = MenuItem


class MenuItemObjectsViewSet(viewsets.ModelViewSet):
queryset = MenuItem.objects.all()
serializer_class = MenuItemSerializer


def register(router):
return rest_framework_extras.register(
router, (
("navbuilder-menu", MenuObjectsViewSet),
("navbuilder-menuitem", MenuItemObjectsViewSet),
)
)

0 comments on commit c376bd0

Please sign in to comment.