diff -r aa4987fede52 -r e00a24b711a0 server/python/django2/renkanmanager/api/views.py --- a/server/python/django2/renkanmanager/api/views.py Tue Jun 07 10:46:20 2016 +0200 +++ b/server/python/django2/renkanmanager/api/views.py Mon Jun 13 14:23:58 2016 +0200 @@ -23,22 +23,22 @@ from rest_framework.views import APIView logger = logging.getLogger(__name__) - + class RenkanList(APIView): """ View for listing renkans or posting new renkan """ - + queryset = Renkan.objects - + def get(self, request, workspace_guid='', format=None): if workspace_guid == '': renkans = self.queryset.all() else: renkans = self.queryset.filter(workspace__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 = {key:request.data[key] for key in request.data.keys()} source_renkan_guid = request.GET.get("source_renkan_id", request.data.get("source_renkan_id", None)) @@ -65,10 +65,11 @@ create_data["workspace_id"] = workspace_guid serializer = RenkanSerializer(data=create_data) if serializer.is_valid(): - serializer.save(creator=request.user) + creator = request.user if request.user and not request.user.is_anonymous() else None + serializer.save(creator=creator) 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): """ @@ -76,13 +77,13 @@ """ lookup_field = "renkan_guid" queryset = Renkan.objects - + def get_object(self, renkan_guid): return self.queryset.get(renkan_guid=renkan_guid) - + def dispatch(self, *args, **kwargs): return super(RenkanDetail, self).dispatch(*args, **kwargs) - + def get(self, request, renkan_guid, format=None): try: renkan = self.get_object(renkan_guid=renkan_guid) @@ -133,9 +134,9 @@ """ View for listing workspaces or creating new workspace """ - + queryset = Workspace.objects - + def get(self, request, format=None): workspaces = self.queryset.all() serializer = WorkspaceSerializer(workspaces, many=True) @@ -144,7 +145,8 @@ def post(self, request, format=None): serializer = WorkspaceSerializer(data=request.data) if serializer.is_valid(): - serializer.save(creator=request.user) + creator = request.user if request.user and not request.user.is_anonymous() else None + serializer.save(creator=creator) return Response(serializer.data, status=status.HTTP_201_CREATED, content_type='application/json') return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -152,13 +154,13 @@ """ View for retrieving, updating or deleting a single workspace """ - + lookup_field = "workspace_guid" queryset = Workspace.objects - + def get_object(self, workspace_guid): return self.queryset.get(workspace_guid=workspace_guid) - + def get(self, request, workspace_guid, format=None): try: workspace = self.get_object(workspace_guid=workspace_guid) @@ -195,13 +197,13 @@ """ View for listing revisions from a given renkan """ - + def get_queryset(self, renkan_guid=""): if renkan_guid: return Revision.objects.filter(parent_renkan__renkan_guid=renkan_guid) else: return Revision.objects - + def get(self, request, renkan_guid, format=None): revisions = self.get_queryset(renkan_guid) if not revisions: @@ -213,15 +215,15 @@ """ View for retrieving or deleting a single revision from a given renkan """ - + lookup_field = "revision_guid" - + def get_queryset(self, renkan_guid=""): if renkan_guid: return Revision.objects.filter(parent_renkan__renkan_guid=renkan_guid) else: return Revision.objects - + def get(self, request, renkan_guid, revision_guid, format=None): revisions = self.get_queryset(renkan_guid) if not revisions: