diff -r ebdd1d769158 -r eb4f4eceada0 server/python/django2/renkanmanager/api/views.py --- a/server/python/django2/renkanmanager/api/views.py Fri Mar 18 14:15:23 2016 +0100 +++ b/server/python/django2/renkanmanager/api/views.py Thu Mar 31 17:12:38 2016 +0200 @@ -27,7 +27,7 @@ logger = logging.getLogger(__name__) - + class RenkanList(APIView): """ View for listing renkans or posting new renkan @@ -36,15 +36,15 @@ permissions.IsAuthenticatedOrReadOnly, CanCreateRenkan, ) - + def get(self, request, workspace_guid='', format=None): if workspace_guid == '': renkans = Renkan.objects.all() else: renkans = Renkan.objects.filter(workspace_guid=workspace_guid) serializer = RenkanSerializer(renkans, many=True) - return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') - + return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') + def post(self, request, workspace_guid='', format=None): create_data = request.data source_renkan_guid = request.GET.get("source_renkan_id", request.data.get("source_renkan_id", None)) @@ -69,13 +69,13 @@ except Workspace.DoesNotExist: return Response({'detail': 'Workspace '+workspace_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) create_data["workspace_id"] = workspace_guid - + serializer = RenkanSerializer(data=create_data) if serializer.is_valid(): - serializer.save(creator=request.user) + serializer.save(creator=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED, content_type='application/json') return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - + class RenkanDetail(APIView): """ @@ -83,19 +83,19 @@ """ lookup_field = "renkan_guid" permission_classes = ( - permissions.IsAuthenticatedOrReadOnly, + permissions.IsAuthenticatedOrReadOnly, CanEditRenkan, CanDeleteRenkan, ) authentication_classes = tuple(APIView.authentication_classes) + (CsrfExemptSessionAuthentication,) - + @csrf_exempt def dispatch(self, *args, **kwargs): return super(RenkanDetail, self).dispatch(*args, **kwargs) - + def get_object(self, renkan_guid): return Renkan.objects.get(renkan_guid=renkan_guid) - + def get(self, request, renkan_guid, format=None): try: renkan = self.get_object(renkan_guid=renkan_guid) @@ -106,7 +106,7 @@ if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()): return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json') return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') - + def put(self, request, renkan_guid, format=None): try: renkan = self.get_object(renkan_guid=renkan_guid) @@ -117,14 +117,14 @@ put_data = {} put_data["content"] = json.dumps(request.data) put_data["title"] = request.data.get("title", "") - else: + else: put_data = request.data serializer = RenkanSerializer(renkan, data=put_data) if serializer.is_valid(): serializer.save(updator=request.user) return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - + def delete(self, request, renkan_guid, format=None): try: to_delete_renkan = self.get_object(renkan_guid=renkan_guid) @@ -149,19 +149,19 @@ permissions.IsAuthenticatedOrReadOnly, CanCreateWorkspace, ) - + def get(self, request, format=None): workspaces = Workspace.objects.all() serializer = WorkspaceSerializer(workspaces, many=True) return Response(serializer.data) - + def post(self, request, format=None): serializer = WorkspaceSerializer(data=request.data) if serializer.is_valid(): - serializer.save(creator=request.user) + serializer.save(creator=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED, content_type='application/json') return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - + class WorkspaceDetail(APIView): """ View for retrieving, updating or deleting a single workspace @@ -171,10 +171,10 @@ CanEditWorkspace, CanDeleteWorkspace, ) - + def get_object(self, workspace_guid): return Workspace.objects.get(workspace_guid=workspace_guid) - + def get(self, request, workspace_guid, format=None): try: workspace = Workspace.objects.get(workspace_guid=workspace_guid) @@ -183,7 +183,7 @@ self.check_object_permissions(request, workspace) serializer = WorkspaceSerializer(workspace) return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') - + def put(self, request, workspace_guid, format=None): try: workspace = Workspace.objects.get(workspace_guid=workspace_guid) @@ -192,10 +192,10 @@ self.check_object_permissions(request, workspace) serializer = WorkspaceSerializer(workspace, data=request.data) if serializer.is_valid(): - serializer.save() + serializer.save() return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - + def delete(self, request, workspace_guid, format=None): try: to_delete_workspace = self.get_object(workspace_guid=workspace_guid) @@ -212,10 +212,10 @@ View for listing revisions from a given renkan """ permission_classes = (permissions.IsAuthenticatedOrReadOnly,) - + def get_queryset(self, renkan_guid): return Revision.objects.filter(parent_renkan_guid=renkan_guid) - + def get(self, request, renkan_guid, format=None): revisions = self.get_queryset(renkan_guid) if not revisions: @@ -231,10 +231,10 @@ permissions.IsAuthenticatedOrReadOnly, CanDeleteRevision, ) - + def get_queryset(self, renkan_guid): return Revision.objects.filter(parent_renkan_guid=renkan_guid) - + def get(self, request, renkan_guid, revision_guid, format=None): revisions = self.get_queryset(renkan_guid) if not revisions: @@ -246,7 +246,7 @@ self.check_object_permissions(request, revision) serializer = RevisionSerializer(revision) return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') - + def delete(self, request, renkan_guid, revision_guid, format=None): revisions = self.get_queryset(renkan_guid) if not revisions: @@ -260,10 +260,10 @@ return Response({'detail': 'You cannot delete the last remaining revision of a renkan from the Revision API. Try deleting the parent Renkan with the Renkan API'}, status=status.HTTP_400_BAD_REQUEST) if revision.is_current_revision: return Response({'detail': 'You cannot delete the current revision of a renkan from the Revision API.'}, status=status.HTTP_400_BAD_REQUEST) - + # Deleting reference to revision in renkans copied from this revision for related_renkan in Renkan.objects.filter(source_revision_guid=revision_guid): related_renkan.source_revision_guid = '' related_renkan.save() revision.delete() - return Response(status=status.HTTP_204_NO_CONTENT) \ No newline at end of file + return Response(status=status.HTTP_204_NO_CONTENT)