def skip_validation(self, experiment_form, task_formset): experiment_form.full_clean() exp_data = experiment_form.cleaned_data exp_data.pop('skip_validation') if experiment_form.instance and experiment_form.instance.pk: exp = experiment_form.instance experiment_form.save() else: exp = Experiment.objects.create(**exp_data) task_formset.full_clean() for task_form in task_formset.forms: for pv_formset in task_form.parameter_values: pv_formset.full_clean() sources = save_task(exp, task_formset) for task_form in task_formset.forms: for pv_form in task_form.parameter_values[0].forms: source_ref = pv_form.cleaned_data['source_ref'] if source_ref: source_ref = source_ref.split('-value')[0] source = sources[source_ref] target = pv_form.instance exist = Connection.objects.filter(target=target, source=source) if not exist: Connection.objects.create(target=target, source=source) return HttpResponse(reverse_lazy('experiment-update', kwargs={'pk': exp.pk}))
def save_all(self, experiment=None, commit=True): if experiment: self.instance = experiment sources = save_task(experiment, self) for task_form in self.forms: for pv_form in task_form.parameter_values[0].forms: source_ref = pv_form.cleaned_data['source_ref'] if source_ref: source_ref = source_ref.split('-value')[0] source = sources[source_ref] target = pv_form.instance exist = Connection.objects.filter(target=target, source=source) if not exist: Connection.objects.create(target=target, source=source)