def updateAnswers(self, input, keuzemap, survey, session): idmap = self.buildExternalIdMap(survey) query = Session.query(model.Risk)\ .filter(model.Risk.session_id == session.id) identification_map = {"1": "yes", "2": "no", "3": "n/a"} priority_map = {"laag": "low", "midden": "medium", "hoog": "high"} for antwoord in input.antwoorden.antwoord: risk_id = idmap.get(antwoord.attrib["risk-id"]) if risk_id is None: continue risk = query\ .filter(model.Risk.zodb_path == risk_id)\ .filter(model.Risk.profile_index == keuzemap.get(antwoord.attrib["keuze"], 0))\ .first() if risk is None: continue risk.identification = identification_map.get(antwoord.attrib["inventariseren"]) if antwoord.attrib["inventariseren"] == "-1": risk.postponed = True elif risk.identification is not None: risk.postponed = False risk.probability = attr_int(antwoord, "evalueren1") risk.frequency = attr_int(antwoord, "evalueren2") risk.effect = attr_int(antwoord, "evalueren3") risk.priority = priority_map.get(antwoord.attrib["prioriteit"]) if hasattr(antwoord, "opmerking"): risk.comment = el_unicode(antwoord, "opmerking") for pva in antwoord.iterchildren("pva"): plan = model.ActionPlan(risk=risk) plan.action_plan = el_unicode(pva, "maatregel") plan.prevention_plan = el_unicode(pva, "preventietaken") plan.requirements = el_unicode(pva, "preventiekennis") plan.responsible = el_unicode(pva, "uitvoerder") try: plan.budget = int(pva.budget.text) except (TypeError, ValueError): pass timeline = pva.planning.text.split() plan.planning_start = parse_date(timeline[0]) plan.planning_end = parse_date(timeline[2]) Session.add(plan) session.touch()
def ImportProfileQuestion(self, node, survey): profile = upload.SurveyImporter.ImportProfileQuestion(self, node, survey) if IProfileQuestion.providedBy(profile): for field in PQ_FIELDS: setattr(profile, field, upload.el_unicode(node, field.replace('_', '-'))) return profile
def ImportProfileQuestion(self, node, survey): profile = upload.SurveyImporter.ImportProfileQuestion( self, node, survey) if IProfileQuestion.providedBy(profile): for field in PQ_FIELDS: setattr(profile, field, upload.el_unicode(node, field.replace('_', '-'))) return profile