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)
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)
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)
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)
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)
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)
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)
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)
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)
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)