server/python/django2/renkanmanager/api/views.py
changeset 613 e00a24b711a0
parent 611 f0f07e2b841f
child 615 f3875fbe206a
--- 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: