def permission_denied(self, request, message=None): print dir(request), request.data, request.query_params, message reason = {'reason': message} if isinstance(message, tuple): if message[0] == 'tasks_not_closed': reason = {'reason': message[0]} tasks = TaskSerializer( message[1].channel_tasks.filter(~Q(status=3)), many=True) reason['tasks'] = JSONRenderer().render(tasks.data) reason = JSONRenderer().render(reason) permission_denied = PermissionDenied(reason) permission_denied.status_code = HTTP_412_PRECONDITION_FAILED raise permission_denied
def cancel(self, request, unique_id): """ Update Job according to requested action """ job = self.get_object() if job.client != self.request.user: return HttpResponseForbidden("Action not allowed") try: job.run_cancel() except JobInconsistentStateError as e: perm = PermissionDenied(detail=e.message) perm.status_code = status.HTTP_405_METHOD_NOT_ALLOWED raise perm return Response({'success': 'Job marked as cancelled'}, status=status.HTTP_202_ACCEPTED)