diff --git a/apps/main/models.py b/apps/main/models.py index 10f053d..f1829f0 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -170,6 +170,34 @@ class Campaign(models.Model): return parms + def dict_to_parms(self, parms, CONF_MODELS): + + experiments = Experiment.objects.filter(campaign = self) + configurations = Configuration.objects.filter(experiment = experiments) + + if configurations: + for configuration in configurations: + configuration.delete() + + if experiments: + for experiment in experiments: + experiment.delete() + + for parms_exp in parms['experiments']: + location = Location.objects.get(name = parms['experiments'][parms_exp]['radar']) + new_exp = Experiment( + name = parms['experiments'][parms_exp]['experiment'], + location = location, + start_time = parms['experiments'][parms_exp]['start_time'], + end_time = parms['experiments'][parms_exp]['end_time'], + ) + new_exp.save() + new_exp.dict_to_parms(parms['experiments'][parms_exp],CONF_MODELS) + new_exp.save() + + self.experiments.add(new_exp) + self.save() + def get_absolute_url(self): return reverse('url_campaign', args=[str(self.id)]) @@ -318,11 +346,6 @@ class Experiment(models.Model): def dict_to_parms(self, parms, CONF_MODELS): - #self.name = parameters['experiment'] - #self.location = parameters['radar'] - #self.start_time = parameters['start_time'] - #self.end_time = parameters['end_time'] - configurations = Configuration.objects.filter(experiment=self) if configurations: diff --git a/apps/main/views.py b/apps/main/views.py index 5780af3..784d761 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -428,10 +428,8 @@ def campaign_export(request, id_camp): def campaign_import(request, id_camp): - ###------FALTA CORREGIR!!!!!-----### + campaign = get_object_or_404(Campaign, pk=id_camp) - experiments = Experiment.objects.filter(campaign=campaign) - configurations = Configuration.objects.filter(experiment=experiments) if request.method == 'GET': file_form = UploadFileForm() @@ -444,9 +442,7 @@ def campaign_import(request, id_camp): parms = campaign.import_from_file(request.FILES['file']) if parms: - location = Location.objects.get(name = parms['radar']) - parms['location'] = location.id - parms['name'] = parms['experiment'] + parms['name'] = parms['campaign'] campaign.dict_to_parms(parms, CONF_MODELS) @@ -455,32 +451,24 @@ def campaign_import(request, id_camp): form = CampaignForm(initial=parms, instance=campaign) kwargs = {} - #kwargs['id_dev'] = conf.id kwargs['form'] = form kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'Parameters imported' kwargs['button'] = 'Save' kwargs['action'] = campaign.get_absolute_url_edit() kwargs['previous'] = campaign.get_absolute_url() - - - ###### SIDEBAR ###### - #kwargs.update(sidebar(conf=conf)) - #kwargs.update(sidebar(campaign=campaign)) return render(request, 'campaign_edit.html', kwargs) + messages.error(request, "Could not import parameters from file") kwargs = {} - #kwargs['id_dev'] = conf.id kwargs['title'] = 'Campaign' kwargs['form'] = file_form kwargs['suptitle'] = 'Importing file' kwargs['button'] = 'Import' - #kwargs.update(sidebar(campaign=campaign)) - return render(request, 'campaign_import.html', kwargs)