--- a/server/python/django2/renkanmanager/api/views.py Tue Jun 21 10:30:08 2016 +0200
+++ b/server/python/django2/renkanmanager/api/views.py Tue Jun 21 17:53:06 2016 +0200
@@ -15,10 +15,14 @@
from django.http import Http404
from django.http.response import HttpResponse, HttpResponseBadRequest
from django.shortcuts import get_object_or_404, redirect
+from django.utils import dateparse
from django.views.generic import View
from django.conf import settings
+
from renkanmanager.models import Renkan, Revision, Workspace
from renkanmanager.serializers import RenkanSerializer, RevisionSerializer, WorkspaceSerializer
+from renkanmanager.utils import parse_bool
+
from rest_framework import permissions, status
from rest_framework.response import Response
from rest_framework.views import APIView
@@ -42,7 +46,6 @@
def post(self, request, workspace_guid='', format=None):
create_data = {key:request.data[key] for key in request.data.keys()}
- logger.debug("HELLO %r", create_data)
source_renkan_guid_str = request.GET.get("source_renkan_id", request.data.get("source_renkan_id", None))
source_revision_guid_str = request.GET.get("source_revision_id", request.data.get("source_revision_id", None))
@@ -69,7 +72,6 @@
create_data["source_revision_id"] = source_revision.revision_guid
create_data["title"] = request.data.get("title", source_revision.title)
create_data["content"] = source_revision.content
- logger.debug("SOURCE_REVISION CONTENT %r", create_data["content"])
try:
workspace_guid_uuid = workspace_guid and uuid.UUID(workspace_guid) or None
@@ -119,7 +121,7 @@
self.check_object_permissions(request, renkan)
serializer = RenkanSerializer(renkan)
- if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
+ if parse_bool(request.GET.get("content_only", "false")):
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')
@@ -134,20 +136,23 @@
logger.debug("RENKAN PUT: permission? %r", request.user.has_perm("change_renkan", renkan))
self.check_object_permissions(request, renkan)
logger.debug("RENKAN PUT: PERMISSION GRANTED")
- if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
+ if parse_bool(request.GET.get("content_only", "false")):
put_data = {}
put_data["content"] = json.dumps(request.data)
put_data["title"] = request.data.get("title", "")
else:
put_data = request.data
- if put_data.get("validation_timestamp", None) is None and put_data.get("content", None) is not None:
- put_data["validation_timestamp"] = json.loads(put_data["content"]).get("updated", "")
- serializer = RenkanSerializer(renkan, data=put_data)
+ validation_timestamp = request.GET.get("validation_timestamp")
+ if validation_timestamp is None and put_data.get("content") is not None:
+ validation_timestamp = json.loads(put_data["content"]).get("updated", "")
+ if validation_timestamp:
+ validation_timestamp = dateparse.parse_datetime(validation_timestamp)
+ create_new_revision = parse_bool(request.GET.get('create_new_revision', 'false'))
+ serializer = RenkanSerializer(renkan, data=put_data, validation_timestamp=validation_timestamp)
if serializer.is_valid():
- serializer.save(updator=request.user)
- if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()):
+ serializer.save(updator=request.user, create_new_revision=create_new_revision)
+ if parse_bool(request.GET.get("content_only", "false")):
return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json')
- logger.debug("RENKAN PUT: SERIALIZER DATA %r", serializer.data)
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json')
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)