server/python/django2/renkanmanager/api/views.py
changeset 611 f0f07e2b841f
parent 610 b9edc1c1538a
child 613 e00a24b711a0
equal deleted inserted replaced
610:b9edc1c1538a 611:f0f07e2b841f
    85     
    85     
    86     def get(self, request, renkan_guid, format=None):
    86     def get(self, request, renkan_guid, format=None):
    87         try:
    87         try:
    88             renkan = self.get_object(renkan_guid=renkan_guid)
    88             renkan = self.get_object(renkan_guid=renkan_guid)
    89         except Renkan.DoesNotExist:
    89         except Renkan.DoesNotExist:
    90             return Response({'detail': 'Renkan project %r does not exist'.format(renkan_guid)}, status=status.HTTP_404_NOT_FOUND)
    90             return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND)
    91         self.check_object_permissions(request, renkan)
    91         self.check_object_permissions(request, renkan)
    92         serializer = RenkanSerializer(renkan)
    92         serializer = RenkanSerializer(renkan)
    93         if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
    93         if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
    94             return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json')
    94             return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json')
    95         return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json')
    95         return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json')
    96 
    96 
    97     def put(self, request, renkan_guid, format=None):
    97     def put(self, request, renkan_guid, format=None):
    98         try:
    98         try:
    99             renkan = self.get_object(renkan_guid=renkan_guid)
    99             renkan = self.get_object(renkan_guid=renkan_guid)
   100         except Renkan.DoesNotExist:
   100         except Renkan.DoesNotExist:
   101             return Response({'detail': 'Renkan project %r does not exist'.format(renkan_guid)}, status=status.HTTP_404_NOT_FOUND)
   101             return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND)
   102         logger.debug("RENKAN PUT %r : CHECKING OBJECT PERMISSION", renkan_guid)
   102         logger.debug("RENKAN PUT %r : CHECKING OBJECT PERMISSION", renkan_guid)
   103         logger.debug("RENKAN PUT: permission? %r", request.user.has_perm("change_renkan", renkan))
   103         logger.debug("RENKAN PUT: permission? %r", request.user.has_perm("change_renkan", renkan))
   104         self.check_object_permissions(request, renkan)
   104         self.check_object_permissions(request, renkan)
   105         logger.debug("RENKAN PUT: PERMISSION GRANTED")
   105         logger.debug("RENKAN PUT: PERMISSION GRANTED")
   106         if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
   106         if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
   107             put_data = {}
   107             put_data = {}
   108             put_data["content"] = json.dumps(request.data)
   108             put_data["content"] = json.dumps(request.data)
   109             put_data["title"] = request.data.get("title", "")
   109             put_data["title"] = request.data.get("title", "")
   110         else:
   110         else:
   111             put_data = request.data
   111             put_data = request.data
       
   112         if put_data.get("validation_timestamp", None) is None and put_data.get("content", None) is not None:
       
   113             put_data["validation_timestamp"] = json.loads(put_data["content"]).get("updated", "")
   112         serializer = RenkanSerializer(renkan, data=put_data)
   114         serializer = RenkanSerializer(renkan, data=put_data)
   113         if serializer.is_valid():
   115         if serializer.is_valid():
   114             serializer.save(updator=request.user)
   116             serializer.save(updator=request.user)
       
   117             if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
       
   118                 return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json')
   115             return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json')
   119             return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json')
   116         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
   120         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
   117 
   121 
   118     @transaction.atomic
   122     @transaction.atomic
   119     def delete(self, request, renkan_guid, format=None):
   123     def delete(self, request, renkan_guid, format=None):