示例#1
0
    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()
示例#2
0
 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
示例#3
0
 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