def create(self, request): """ Creates a new service Args: request (HttpRequest): The incoming request Returns: response (Response) """ service_serializer = ServiceSerializer() params = request.POST.dict() response = APIResponse() pending_task = service_serializer.create(validated_data=params, request=request) if isinstance(pending_task, Form): status = 400 response.data["success"] = "false" response.data["message"] = pending_task.errors else: status = 202 response.data["success"] = pending_task is not None response.data["pending_task_id"] = pending_task.id response.data[ "status_url"] = HTTP_OR_SSL + HOST_NAME + "/api/pending-tasks/?task_id=" + pending_task.id response = Response(data=response.data, status=status) return response
def active_state(self, request, pk=None): """ Activates a service via remote access Args: request: The incoming request pk: The service id Returns: Response """ user = user_helper.get_user(request) parameter_name = "active" new_status = request.POST.dict().get(parameter_name, None) new_status = utils.resolve_boolean_attribute_val(new_status) response = APIResponse() if new_status is None or not isinstance(new_status, bool): response.data["msg"] = PARAMETER_ERROR.format(parameter_name) return Response(data=response.data, status=500) try: md = Metadata.objects.get(service__id=pk) response.data["oldStatus"] = md.is_active md.is_active = new_status md.save() response.data["newStatus"] = md.is_active response.data["success"] = True return Response(data=response.data, status=200) except ObjectDoesNotExist: response.data["msg"] = SERVICE_NOT_FOUND return Response(data=response.data, status=404)
def create(self, request): """ Creates a new service Args: request (HttpRequest): The incoming request Returns: response (Response) """ service_serializer = ServiceSerializer() params = request.POST.dict() pending_task = service_serializer.create(validated_data=params, request=request) response = APIResponse() response.data["success"] = pending_task is not None response.data["pending_task_id"] = pending_task.id if pending_task: status = 200 else: status = 500 response = Response(data=response.data, status=status) return response
def retrieve(self, request, pk=None): """ Returns a single PendingTask record information Args: request (HttpRequet): The incoming request pk (int): The primary_key (id) of the PendingTask Returns: response (Response): Contains the json serialized information about the pending task """ response = APIResponse() try: tmp = PendingTask.objects.get(id=pk) celery_task = AsyncResult(tmp.task_id) progress = float(celery_task.info.get("current", -1)) serializer = PendingTaskSerializer(tmp) response.data.update(serializer.data) response.data["progress"] = progress response.data["success"] = True except ObjectDoesNotExist: response.data["msg"] = RESOURCE_NOT_FOUND return Response(data=response.data)
def destroy(self, request, pk=None): """ Deletes a service which is identified by its metadata record's primary_key pk Args: request (HttpRequest): The incoming request pk (int): The primary key (id) Returns: Response """ # Use the already existing internal deleting of services response = APIResponse() try: md = Metadata.objects.get(id=pk) md.delete() response.data["success"] = True response.data["msg"] = SERVICE_REMOVED except ObjectDoesNotExist: response.data["success"] = False response.data["msg"] = RESOURCE_NOT_FOUND return Response(data=response.data)