diff --git a/snippets/resources.py b/snippets/resources.py new file mode 100644 index 00000000..299b69db --- /dev/null +++ b/snippets/resources.py @@ -0,0 +1,20 @@ +from django.contrib.auth.models import User +from rest_framework import resources, permissions +from snippets.serializers import UserSerializer, SnippetSerializer +from snippets.models import Snippet +from snippets.permissions import IsOwnerOrReadOnly + + +class UserResource(resources.ModelResource): + model = User + serializer_class = UserSerializer + + +class SnippetResource(resources.ModelResource): + model = Snippet + serializer_class = SnippetSerializer + permission_classes = (permissions.IsAuthenticatedOrReadOnly, + IsOwnerOrReadOnly,) + + def pre_save(self, obj): + obj.owner = self.request.user diff --git a/snippets/serializers.py b/snippets/serializers.py index ae775307..39f655cf 100644 --- a/snippets/serializers.py +++ b/snippets/serializers.py @@ -5,11 +5,11 @@ class SnippetSerializer(serializers.HyperlinkedModelSerializer): owner = serializers.Field(source='owner.username') - highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html') + # highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html') class Meta: model = Snippet - fields = ('url', 'highlight', 'owner', + fields = ('url', 'owner', 'title', 'code', 'linenos', 'language', 'style') diff --git a/tutorial/urls.py b/tutorial/urls.py index de9f6812..0c5ffc47 100644 --- a/tutorial/urls.py +++ b/tutorial/urls.py @@ -1,14 +1,32 @@ -from snippets import views +from snippets import resources from django.conf.urls import patterns, url, include from rest_framework.urlpatterns import format_suffix_patterns +snippet_list = resources.SnippetResource.as_view(actions={ + 'get': 'list', + 'post': 'create' +}) +snippet_detail = resources.SnippetResource.as_view(actions={ + 'get': 'retrieve', + 'put': 'update', + 'delete': 'destroy' +}) +user_list = resources.UserResource.as_view(actions={ + 'get': 'list', + 'post': 'create' +}) +user_detail = resources.UserResource.as_view(actions={ + 'get': 'retrieve', + 'put': 'update', + 'delete': 'destroy' +}) + urlpatterns = format_suffix_patterns(patterns('snippets.views', url(r'^$', 'api_root'), - url(r'^snippets/$', views.SnippetList.as_view(), name='snippet-list'), - url(r'^snippets/(?P[0-9]+)/$', views.SnippetInstance.as_view(), name='snippet-detail'), - url(r'^snippets/(?P[0-9]+)/highlight/$', views.SnippetHighlight.as_view(), name='snippet-highlight'), - url(r'^users/$', views.UserList.as_view(), name='user-list'), - url(r'^users/(?P[0-9]+)/$', views.UserInstance.as_view(), name='user-detail') + url(r'^snippets/$', snippet_list, name='snippet-list'), + url(r'^snippets/(?P[0-9]+)/$', snippet_detail, name='snippet-detail'), + url(r'^users/$', user_list, name='user-list'), + url(r'^users/(?P[0-9]+)/$', user_detail, name='user-detail') )) urlpatterns += patterns('',