Example #1
0
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)
Example #2
0
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)