def config_step_save(request, bot_id): result = "" if request.method == "POST": builder = Builder.objects.get(id=bot_id) data = request.POST.copy() # get a step or create a newone if "stepid" in data and data["stepid"]: step = Step.objects.get(id=data["stepid"]) step.num = data["step_num"] del data["stepid"] del data["step_num"] else: config = Config.objects.get(id=data["config_type_id"]) step = Step(builder=builder, type=config, num=data["config_num"]) step.save() del data["config_type_id"] del data["config_num"] params_2_add = [] # add and upate params step_params = step.params.all() for p, v in data.items(): v = type_sniffer(v) param_type = ConfigParam.objects.get(id=p) s = step.params.filter(type=param_type) if s: s = s[0] s.val = pickle.dumps(v) s.default = v == param_type.loads_default() s.save() else: param = StepParam( step=step, type=param_type, val=pickle.dumps(v), default=(v == param_type.loads_default()) ) params_2_add.append(param) if params_2_add: step.params = params_2_add step.save() result = step.id return HttpResponse(result)
def config_step_save(request, bot_id): result = '' if request.method == 'POST': slave = Slave.objects.get(id=bot_id) data = request.POST.copy() # get a step or create a newone if 'configid' in data and data['configid']: step = Step.objects.get(id=data['configid']) step.num = data['config_num'] del data['configid'] else: config = Config.objects.get(id=data['config_type_id']) step = Step(slave=slave, type=config, num=data['config_num']) step.save() del data['config_type_id'] del data['config_num'] params_2_add = [] # update existing params for p in step.params.all(): #TODO: update existing params # only to creating a new one # so just passing for now # how: check if default, if changed, save it # then delete the key from the dict # so it's not reprocessed # and add the param to the params 2 add pass # add new params for p, v in data.items(): param_type = ConfigParam.objects.get(id=p) if v != param_type.default: param = StepParam(step=step, type=param_type, val=v) params_2_add.append(param) step.params = params_2_add step.save() result = step.id return HttpResponse(result)