コード例 #1
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, format=None):
     try:
         save_init_file(request, is_current_file=True)
         return Response({}, status=status.HTTP_200_OK)
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #2
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, pk):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     try:
         edit_token = get_edit_token(request)
         is_edited = layout_is_edited(layout)
         if edit_token is not None and is_edited and edit_token == layout.edit_token:
             layout.last_token_update = timezone.now()
             layout.save()
             return Response({}, status=status.HTTP_200_OK)
         if edit_token is not None and (not is_edited
                                        or edit_token != layout.edit_token):
             raise ILLEGAL_EDIT_TOKEN_ERROR
         if edit_token is None and is_edited:
             raise LAYOUT_ALREADY_EDITED_ERROR
         new_token = generate_edit_token()
         layout.edit_token = new_token
         layout.last_token_update = timezone.now()
         layout.save()
         return Response({'token': new_token}, status=status.HTTP_200_OK)
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #3
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, pk, format=None):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     filename = None
     try:
         if layout.start_date is not None and layout.end_date is not None:
             raise ALREADY_INITED_ERROR
         filename = save_init_file(request)
         layout.filename = filename
         relations = get_layout_relations_from_db(layout)
         layout_obj = generate_layout(
             os.path.join(INIT_FILES_PATH, filename), layout.min_days,
             layout.max_days, layout.duration_limit, relations,
             layout.width, layout.name, layout.id)
         optimize(layout_obj)
         save_new_layout_to_db(layout_obj, layout)
         layout_data = LayoutData.from_layout(layout_obj)
         return Response(FullLayoutDataSerializer(layout_data).data,
                         status=status.HTTP_200_OK)
     except ErrorMessage as e:
         delete_file_if_exists(filename)
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #4
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, *args, **kwargs):
     try:
         return ObtainAuthToken.post(self, request, *args, **kwargs)
     except ValidationError:
         return Response(
             ErrorMessageSerializer(INVALID_CREDENTIALS_ERROR).data,
             status=status.HTTP_400_BAD_REQUEST)
コード例 #5
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request):
     data = CamelCaseJSONParser().parse(request)
     serializer = ShortLayoutDataSerializer(data=data)
     if serializer.is_valid():
         layout, priorities = serializer.save()
         layout.width = calculate_layout_width(layout.duration_limit)
         layout.save()
         save_layout_priorities(layout, priorities)
         return Response(ShortLayoutDataSerializer(layout).data,
                         status=status.HTTP_200_OK)
     return Response(ErrorMessageSerializer(
         message_from_serializer_errors(serializer.errors)).data,
                     status=status.HTTP_400_BAD_REQUEST)
コード例 #6
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request):
     try:
         data = CamelCaseJSONParser().parse(request)
         serializer = FullLayoutDataSerializer(data=data)
         if serializer.is_valid():
             layout_data = serializer.save()
             layout_obj = layout_data.to_layout()
             optimize(layout_obj, layout_obj.update_date)
             layout_data = LayoutData.from_layout(layout_obj)
             return Response(FullLayoutDataSerializer(layout_data).data,
                             status=status.HTTP_200_OK)
         raise message_from_serializer_errors(serializer.errors)
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #7
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, pk):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     try:
         check_in_edit_mode(request, layout)
         layout_data = self._update_layout(layout,
                                           CURRENT_FILE_PATH,
                                           save_filename=False,
                                           from_current=True)
         return Response(FullLayoutDataSerializer(layout_data).data,
                         status=status.HTTP_200_OK)
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #8
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def put(self, request, pk):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     new_filename = None
     try:
         check_in_edit_mode(request, layout)
         new_filename = save_init_file(request)
         layout_data = self._update_layout(layout, new_filename)
         return Response(FullLayoutDataSerializer(layout_data).data,
                         status=status.HTTP_200_OK)
     except ErrorMessage as e:
         delete_file_if_exists(new_filename)
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #9
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def delete(self, request, pk):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     try:
         edit_token = get_edit_token(request)
         is_edited = layout_is_edited(layout)
         if edit_token is not None and is_edited and edit_token == layout.edit_token:
             layout.last_token_update = None
             layout.edit_token = None
             layout.save()
             return Response({}, status=status.HTTP_200_OK)
         raise ILLEGAL_EDIT_MODE_OFF_ERROR
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #10
0
ファイル: views.py プロジェクト: alexryzhevich/TezTour3
 def post(self, request, pk):
     try:
         layout = Layout.objects.get(pk=pk)
     except Layout.DoesNotExist:
         return Response({}, status=status.HTTP_404_NOT_FOUND)
     data = CamelCaseJSONParser().parse(request)
     serializer = FullLayoutDataSerializer(data=data)
     try:
         check_in_edit_mode(request, layout)
         if serializer.is_valid():
             layout_data = serializer.save()
             update_layout_in_db(layout_data, layout)
             layout_obj = get_layout_from_db(layout)
             layout_data = LayoutData.from_layout(layout_obj)
             return Response(FullLayoutDataSerializer(layout_data).data,
                             status=status.HTTP_200_OK)
         raise message_from_serializer_errors(serializer.errors)
     except ErrorMessage as e:
         return Response(ErrorMessageSerializer(e).data,
                         status=status.HTTP_400_BAD_REQUEST)