def pre_save(self, obj): obj.task = Task.objects.get(pk=self.kwargs['task_pk']) if self.request.user.crowduser.balance < obj.task.reward: raise NotEnoughMoney log.debug("pk %s", self.kwargs['task_pk']) if obj.uuid is None or len(obj.uuid) == 0: obj.uuid = str(uuid4()).replace("-", "") log.debug("obj parameters %s", obj.parameters) if obj.parameters is None: obj.parameters = {} # trick for the JSONFields input = self.request.DATA['input'] if 'input' in self.request.DATA else None pars = self.request.DATA['parameters'] if 'parameters' in self.request.DATA else None log.debug(input) if input is not None: data = obj.input_data if data is None: data = Data() data.value = input data.save() obj.input_data = data if pars is not None: obj.parameters = pars
def execute(self, request, pk=None, task_pk=None): task_instance = get_instance_worker(pk, request.user) output = self.request.DATA['result'] if 'result' in self.request.DATA else None if output is not None: data = task_instance.output_data if data is None: data = Data() data.value = output data.save() task_instance.output_data = data return Response(TaskInstanceSerializer(task_instance).data) else: raise exceptions.ParseError(detail="result is empty, what results is this then?")