def update_form(request, scenario_id): if not request.user.is_authenticated() or not scenario_id or scenario_id < 0: return xml_file = request.POST['xml'] json_str = rest_validate(xml_file) validation_result = json.loads(json_str) valid = True if (validation_result['result'] == 0) else False if not valid: return HttpResponse(json_str, content_type="application/json") model_scenario = ScenarioModel.objects.get(id=scenario_id) if model_scenario is None: return HttpResponse(json.dumps({'valid': False}), content_type="application/json") if request.user != model_scenario.user: raise PermissionDenied try: temp_scenario = Scenario(xml_file) except ParseError: return HttpResponse(json.dumps({'valid': False}), content_type="application/json") return {"valid": valid, "scenario": temp_scenario}
def update_interventions_form(request, scenario_id): if not request.user.is_authenticated() or not scenario_id or scenario_id < 0: return xml_file = request.POST['xml'] json_str = rest_validate(xml_file) validation_result = json.loads(json_str) valid = True if (validation_result['result'] == 0) else False if not valid: return HttpResponse(json_str, content_type="application/json") model_scenario = ScenarioModel.objects.get(id=scenario_id) if model_scenario is None: return HttpResponse(json.dumps({'valid': False}), content_type="application/json") if request.user != model_scenario.user: raise PermissionDenied try: temp_scenario = Scenario(xml_file) except ParseError: return HttpResponse(json.dumps({'valid': False}), content_type="application/json") extra_data = load_interventions_data(temp_scenario) html = render_to_string("ts_om/interventions/interventions_list.html", extra_data) return HttpResponse(html)
def form_valid(self, form, **kwargs): validation_result = json.loads(rest_validate(self.scenario.xml)) valid = True if (validation_result['result'] == 0) else False if not valid: self.kwargs['validation_error'] = 'Error: Invalid openmalaria xml.' return super(ScenarioBaseFormView, self).form_invalid(form) self.model_scenario.xml = self.scenario.xml if not self.request.is_ajax(): self.model_scenario.save() return super(ScenarioBaseFormView, self).form_valid(form) else: data = { 'xml': kwargs['kwargs']["xml"] } return self.render_to_json_response(data)
def save_scenario(request, scenario_id): if not request.user.is_authenticated() or not scenario_id or scenario_id < 0: return xml_file = request.read() json_str = rest_validate(xml_file) validation_result = json.loads(json_str) valid = True if (validation_result['result'] == 0) else False if not valid: return HttpResponse(json_str, content_type="application/json") scenario = Scenario.objects.get(user=request.user, id=int(scenario_id)) if not scenario: return HttpResponse({'saved': False}, content_type="application/json") scenario.xml = xml_file scenario.save() return HttpResponse(json.dumps({'saved': True}), content_type="application/json")
def submit_scenarios(request): scenarios_data = {"ok": False, "scenarios": []} if not request.user.is_authenticated() or not "scenario_ids" in request.POST: return HttpResponse(json.dumps(scenarios_data), content_type="application/json") scenario_ids = json.loads(request.POST["scenario_ids"]) if scenario_ids is None or len(scenario_ids) <= 0: return HttpResponse(json.dumps(scenarios_data), content_type="application/json") for scenario_id in scenario_ids: scenarios_data["scenarios"].append({"id": scenario_id, "ok": False}) scenario = Scenario.objects.get(user=request.user, id=int(scenario_id)) if not scenario or scenario.simulation is not None: continue json_str = rest_validate(scenario.xml) validation_result = json.loads(json_str) valid = True if (validation_result['result'] == 0) else False if not valid: continue simulation = submit(request.user.username, scenario.xml) if simulation: scenario.simulation = simulation scenario.save() scenarios_data["scenarios"][-1]["ok"] = True scenarios_data["ok"] = True return HttpResponse(json.dumps(scenarios_data), content_type="application/json")