def _list_of_workspaces_to_response(func): """ Serialize and generate response the list of workspaces you can get with func method Args: func: function Returns: - code: 200 content: list of workspace - code: 500 content: Internal server error """ try: # Get object list workspace_object_list = func # Serialize object return_value = WorkspaceSerializer(workspace_object_list, many=True) # Return response return Response(return_value.data, status=status.HTTP_200_OK) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def get(self, request, pk): """ Get Workspace from db Args: request: HTTP request pk: ObjectId Returns: Workspace """ try: # Get object workspace_object = workspace_api.get_by_id(pk) # Serialize object serializer = WorkspaceSerializer(workspace_object) # Return response return Response(serializer.data) except exceptions.DoesNotExist: content = {'message': 'Workspace not found.'} return Response(content, status=status.HTTP_404_NOT_FOUND) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def get(self, request): """ Get all user workspaces Args: request: HTTP request Returns: - code: 200 content: List of workspace - code: 500 content: Internal server error """ try: if request.user.is_superuser: workspace_list = workspace_api.get_all() else: workspace_list = workspace_api.get_all_by_owner(request.user) # Serialize object serializer = WorkspaceSerializer(workspace_list, many=True) # Return response return Response(serializer.data, status=status.HTTP_200_OK) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def post(self, request): """ Create workspace. Args: request: Returns: """ try: # Build serializer serializer = WorkspaceSerializer(data=request.data) # Validate data serializer.is_valid(True) # Save data serializer.save() # Return the serialized data return Response(serializer.data, status=status.HTTP_201_CREATED) except ValidationError as validation_exception: content = {'message': validation_exception.detail} return Response(content, status=status.HTTP_400_BAD_REQUEST) except KeyError as validation_exception: content = {'message': validation_exception} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def post(self, request): """ Create a Workspace Parameters: { "title": "document_title", } Args: request: HTTP request Returns: - code: 201 content: Created workspace - code: 400 content: Validation error / not unique / model error - code: 500 content: Internal server error """ try: # Build serializer serializer = WorkspaceSerializer(data=request.data) # Validate data serializer.is_valid(True) # Save data serializer.save(user=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED) except ValidationError as validation_exception: content = {'message': validation_exception.detail} return Response(content, status=status.HTTP_400_BAD_REQUEST) except exceptions.ModelError as validation_exception: content = {'message': validation_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) except exceptions.NotUniqueError as validation_exception: content = {'message': validation_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) except KeyError as validation_exception: content = {'message': validation_exception} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)