def testiSniffer(self): # unicode val = "u'test'" self.assertEqual(type_sniffer(val), unicode('test')) # strings val = "'test'" self.assertEqual(type_sniffer(val), 'test') val = '"test"' self.assertEqual(type_sniffer(val), 'test') # dict val = "{'test':'test'}" self.assertEqual(type_sniffer(val), {'test':'test'}) # lists val = 'test1,test2,test3' self.assertEqual(type_sniffer(val), ['test1', 'test2' ,'test3']) val = "['test1', 'test2' ,'test3']" self.assertEqual(type_sniffer(val), ['test1', 'test2' ,'test3']) # int val = '121345' self.assertEqual(type_sniffer(val), 121345) # bool val = 'true' self.assertTrue(type_sniffer(val)) val = 'false' self.assertFalse(type_sniffer(val)) # None val = 'none' self.assertEqual(type_sniffer(val), None)
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_scheduler_save(request, bot_id): result = "" if request.method == "POST": master = Master.objects.get(id=bot_id) data = request.POST.copy() # get a scheduler or create a newone if "configid" in data and data["configid"]: scheduler = Scheduler.objects.get(id=data["configid"]) del data["configid"] else: config = Config.objects.get(id=data["config_type_id"]) scheduler = Scheduler(master=master, type=config) scheduler.save() del data["config_type_id"] params_2_add = [] # update existing params for p in scheduler.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(): v = type_sniffer(v) param_type = ConfigParam.objects.get(id=p) if v != param_type.default: param = SchedulerParam(scheduler=scheduler, type=param_type, val=pickle.dumps(v)) params_2_add.append(param) scheduler.params = params_2_add scheduler.save() result = scheduler.id return HttpResponse(result)