From cda7e7d75621d7256bc3bd8a78fc09729d041f7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Mon, 30 Sep 2013 18:01:12 +0200 Subject: [PATCH] Refactor: greenmine.documents - Migrated api views to viewsets --- greenmine/documents/api.py | 16 ++++++---------- greenmine/documents/permissions.py | 2 +- greenmine/documents/urls.py | 10 ++++------ 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/greenmine/documents/api.py b/greenmine/documents/api.py index b16cbe11..bf99fd5d 100644 --- a/greenmine/documents/api.py +++ b/greenmine/documents/api.py @@ -1,21 +1,17 @@ # -*- coding: utf-8 -*- -from rest_framework import generics +from rest_framework import viewsets + +from greenmine.base import filters from . import serializers from . import models from . import permissions -class DocumentList(generics.ListCreateAPIView): +class DocumentsViewSet(viewsets.ModelViewSet): model = models.Document serializer_class = serializers.DocumentSerializer + permission_classes = (permissions.DocumentPermission,) + filter_backends = (filters.IsProjectMemberFilterBackend,) - def get_queryset(self): - return super(DocumentList, self).filter(project__members=self.request.user) - - -class DocumentDetail(generics.RetrieveUpdateDestroyAPIView): - model = models.Document - serializer_class = serializers.DocumentSerializer - permission_classes = (permissions.DocumentDetailPermission,) diff --git a/greenmine/documents/permissions.py b/greenmine/documents/permissions.py index 1e43a59d..7e2ef3a2 100644 --- a/greenmine/documents/permissions.py +++ b/greenmine/documents/permissions.py @@ -3,7 +3,7 @@ from greenmine.base.permissions import BaseDetailPermission -class DocumentDetailPermission(BaseDetailPermission): +class DocumentPermission(BaseDetailPermission): get_permission = "can_view_document" put_permission = "can_change_document" delete_permission = "can_delete_document" diff --git a/greenmine/documents/urls.py b/greenmine/documents/urls.py index 10fdd949..dbf39312 100644 --- a/greenmine/documents/urls.py +++ b/greenmine/documents/urls.py @@ -1,13 +1,11 @@ # -*- coding: utf-8 -*- -from django.conf.urls import patterns, url -from rest_framework.urlpatterns import format_suffix_patterns +from greenmine.base import routers from . import api -urlpatterns = format_suffix_patterns(patterns('', - url(r'^documents/$', api.DocumentList.as_view(), name='document-list'), - url(r'^documents/(?P[0-9]+)/$', api.DocumentDetail.as_view(), name='document-detail'), -)) +router = routers.SimpleRouter(trailing_slash=False) +router.register(r"documents", api.DocumentsViewSet, base_name="documents") +urlpatterns = router.urls