def update(self): if redirectOnSurveyUpdate(self.request): return survey = self.request.survey self.module = survey.restrictedTraverse( self.context.zodb_path.split("/")) self.title = self.context.title self.tree = getTreeData(self.request, self.context, filter=self.question_filter, phase=self.phase) previous = FindPreviousQuestion(self.context, filter=self.question_filter) if previous is None: self.previous_url = "%s/%s" % (self.request.survey.absolute_url(), self.phase) else: self.previous_url = QuestionURL(survey, previous, phase=self.phase) next = FindNextQuestion(self.context, filter=self.question_filter) if next is None: self.next_url = "%s/actionplan" % \ self.request.survey.absolute_url() else: self.next_url = QuestionURL(survey, next, phase=self.phase) super(EvaluationView, self).update()
def testIncludeRisksChildrenOfModuleUnlessSkipped(self): self.createSqlData() self.mod1.skip_children = True data = navigation.getTreeData(self.request, self.mod1) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 0) self.assertEqual(mod1_data["leaf_module"], False)
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) survey = self.request.survey self.module = survey.restrictedTraverse(self.context.zodb_path.split("/")) self.title = context.title self.tree = getTreeData( self.request, self.context, phase="identification", filter=model.NO_CUSTOM_RISKS_FILTER) lang = getattr(self.request, 'LANGUAGE', 'en') if "-" in lang: elems = lang.split("-") lang = "{0}_{1}".format(elems[0], elems[1].upper()) self.message_required = translate(_( u"message_field_required", default=u"Please fill out this field."), target_language=lang) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form if reply.get("next") == "next": self.add_custom_risks(reply) url = "%s/actionplan" % self.request.survey.absolute_url() return self.request.response.redirect(url) return super(CustomizationView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) survey = self.request.survey self.module = survey.restrictedTraverse( self.context.zodb_path.split("/")) self.title = context.title self.tree = getTreeData(self.request, self.context, phase="identification", filter=model.NO_CUSTOM_RISKS_FILTER) lang = getattr(self.request, 'LANGUAGE', 'en') if "-" in lang: elems = lang.split("-") lang = "{0}_{1}".format(elems[0], elems[1].upper()) self.message_required = translate(_( u"message_field_required", default=u"Please fill out this field."), target_language=lang) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form if reply.get("next") == "next": self.add_custom_risks(reply) url = "%s/actionplan" % self.request.survey.absolute_url() return self.request.response.redirect(url) return super(CustomizationView, self).update()
def testIncludeRisksChildrenOfModuleUnlessSkipped(self): self.createSqlData() self.mod1.skip_children = True data = navigation.getTreeData(self.request, self.mod1) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 0) self.assertEqual(mod1_data["leaf_module"], False)
def testMinimalTree(self): self.createSqlData() data = navigation.getTreeData(self.request, self.q1) self.failUnless(isinstance(data, dict)) children = data["children"] self.assertEqual(len(children), 1) mod1 = children[0] self.assertEqual(mod1["id"], self.mod1.id) self.assertEqual(mod1["type"], "module") self.assertEqual(mod1["number"], "1") self.assertEqual(mod1["title"], "module 1") self.assertEqual(mod1["current"], False) self.assertEqual(mod1["current_parent"], True) self.assertEqual(mod1["leaf_module"], True) self.assertEqual(mod1["active"], True) self.assertEqual(mod1["class"], "active current_parent") self.assertEqual(mod1["url"], "http://nohost/identification/1") self.assertEqual(len(mod1["children"]), 1) q1 = mod1["children"][0] self.assertEqual(q1["id"], self.q1.id) self.assertEqual(q1["type"], "risk") self.assertEqual(q1["number"], "1.1") self.assertEqual(q1["title"], "question 1") self.assertEqual(q1["current"], True) self.assertEqual(q1["active"], False) self.assertEqual(q1["class"], "current") self.assertEqual(q1["url"], "http://nohost/identification/1/1") self.assertEqual(len(q1["children"]), 0)
def testMinimalTree(self): self.createSqlData() data = navigation.getTreeData(self.request, self.q1, survey=self.survey) self.assertTrue(isinstance(data, dict)) children = data["children"] self.assertEqual(len(children), 1) mod1 = children[0] self.assertEqual(mod1["id"], self.mod1.id) self.assertEqual(mod1["type"], "module") self.assertEqual(mod1["number"], "1") self.assertEqual(mod1["title"], "module 1") self.assertEqual(mod1["current"], False) self.assertEqual(mod1["current_parent"], True) self.assertEqual(mod1["leaf_module"], True) self.assertEqual(mod1["active"], True) self.assertEqual(mod1["class"], "active current_parent") self.assertEqual(mod1["url"], "http://nohost/1/@@identification") self.assertEqual(len(mod1["children"]), 1) q1 = mod1["children"][0] self.assertEqual(q1["id"], self.q1.id) self.assertEqual(q1["type"], "risk") self.assertEqual(q1["number"], "1.1") self.assertEqual(q1["title"], "question 1") self.assertEqual(q1["current"], True) self.assertEqual(q1["active"], False) self.assertEqual(q1["class"], "current") self.assertEqual(q1["url"], "http://nohost/1/1/@@identification") self.assertEqual(len(q1["children"]), 0)
def testIncludeRisksChildrenOfModule(self): self.createSqlData() data = navigation.getTreeData(self.request, self.mod1, survey=self.survey) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 1) self.assertEqual(mod1_data["leaf_module"], True)
def tree(self): question = self.first_question if not question: return return getTreeData(self.request, self.context, element=question, no_current=True)
def tree(self): return getTreeData( self.request, self.context, element=self.first_question, filter=self.question_filter, phase=self.__name__, no_current=True, )
def update(self): self.survey = survey = aq_parent(aq_inner(self.context)) question = FindFirstQuestion(filter=self.question_filter) if question is not None: self.next_url = QuestionURL(survey, question, phase="actionplan") self.tree = getTreeData( self.request, question, filter=self.question_filter, phase="actionplan") else: self.next_url = None
def update(self): if redirectOnSurveyUpdate(self.request): return self.survey = survey = aq_parent(aq_inner(self.context)) question = FindFirstQuestion(filter=self.question_filter) if question is not None: self.next_url = QuestionURL( survey, question, phase="identification") self.tree = getTreeData(self.request, question) else: self.next_url = None
def update(self): self.survey = survey = aq_parent(aq_inner(self.context)) question = FindFirstQuestion(filter=self.question_filter) if question is not None: self.next_url = QuestionURL(survey, question, phase="actionplan") self.tree = getTreeData(self.request, question, filter=self.question_filter, phase="actionplan") else: self.next_url = None
def update(self): if redirectOnSurveyUpdate(self.request): return self.survey = survey = aq_parent(aq_inner(self.context)) question = FindFirstQuestion(filter=self.question_filter) if question is not None: self.next_url = QuestionURL(survey, question, phase="identification") self.tree = getTreeData(self.request, question) else: self.next_url = None
def testIgnoreSiblingQuestions(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild(model.Module( title=u"module 1.1", module_id="11", zodb_path="a/a")) q111 = mod11.addChild(model.Risk( title=u"question 1.1.1", risk_id="111", zodb_path="a/a/a")) self.mod1.addChild(model.Risk( title=u"question 1.2", risk_id="12", zodb_path="a/b")) data = navigation.getTreeData(self.request, q111) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 1) self.assertEqual(mod1_data["children"][0]["id"], mod11.id)
def update(self): if redirectOnSurveyUpdate(self.request): return if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form answer = reply.get("answer") self.context.postponed = (answer == "postponed") if self.context.postponed: self.context.identification = None else: self.context.identification = answer self.context.comment = reply.get("comment") SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/identification" % \ self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the evaluation url = "%s/evaluation" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL( self.request.survey, next, phase="identification") self.request.response.redirect(url) else: self.risk = risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split("/")) self.tree = getTreeData(self.request, self.context) self.title = self.context.parent.title self.show_info = risk.image or \ HasText(risk.description) or \ HasText(risk.legal_reference) super(IdentificationView, self).update()
def testIgnoreSiblingQuestions(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild( model.Module(title="module 1.1", module_id="11", zodb_path="a/a")) q111 = mod11.addChild( model.Risk(title="question 1.1.1", risk_id="111", zodb_path="a/a/a")) self.mod1.addChild( model.Risk(title="question 1.2", risk_id="12", zodb_path="a/b")) data = navigation.getTreeData(self.request, q111, survey=self.survey) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 1) self.assertEqual(mod1_data["children"][0]["id"], mod11.id)
def update(self): if redirectOnSurveyUpdate(self.request): return risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split("/")) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form self.context.comment = reply.get("comment") if risk.evaluation_method == "direct": self.context.priority = reply.get("priority") elif risk.evaluation_method == 'calculated': self.calculatePriority(risk, reply) SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/evaluation" % self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the action plan url = "%s/actionplan" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL(self.request.survey, next, phase="evaluation") self.request.response.redirect(url) else: self.risk = risk self.title = self.context.parent.title self.tree = getTreeData( self.request, self.context, filter=self.question_filter, phase="evaluation") super(EvaluationView, self).update()
def testListRootSiblingModules(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild(model.Module( title=u"module 1.1", module_id="11", zodb_path="a/a")) q111 = mod11.addChild(model.Risk( title=u"question 1.1.1", risk_id="111", zodb_path="a/a/a")) mod2 = self.survey.addChild(model.Module( title=u"module 2", module_id="2", zodb_path="b")) data = navigation.getTreeData(self.request, q111) self.assertEqual(len(data["children"]), 2) self.assertEqual(data["children"][0]["id"], self.mod1.id) self.assertEqual(data["children"][0]["current"], False) self.assertEqual(data["children"][0]["active"], True) self.assertEqual(data["children"][1]["id"], mod2.id) self.assertEqual(data["children"][1]["current"], False) self.assertEqual(data["children"][1]["active"], False)
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) module = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form if module.optional: if "skip_children" in reply: context.skip_children = reply.get("skip_children") context.postponed = False else: context.postponed = True SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion(context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/identification" % \ self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion(context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the evaluation url = "%s/evaluation" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL(self.request.survey, next, phase="identification") self.request.response.redirect(url) else: self.tree = getTreeData(self.request, context) self.title = context.title self.module = module super(IdentificationView, self).update()
def testListRootSiblingModules(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild( model.Module(title="module 1.1", module_id="11", zodb_path="a/a")) q111 = mod11.addChild( model.Risk(title="question 1.1.1", risk_id="111", zodb_path="a/a/a")) mod2 = self.survey.addChild( model.Module(title="module 2", module_id="2", zodb_path="b")) data = navigation.getTreeData(self.request, q111, survey=self.survey) self.assertEqual(len(data["children"]), 2) self.assertEqual(data["children"][0]["id"], self.mod1.id) self.assertEqual(data["children"][0]["current"], False) self.assertEqual(data["children"][0]["active"], True) self.assertEqual(data["children"][1]["id"], mod2.id) self.assertEqual(data["children"][1]["current"], False) self.assertEqual(data["children"][1]["active"], False)
def _update(self): survey = self.request.survey self.title = self.context.title self.tree = getTreeData( self.request, self.context, filter=self.question_filter, phase=self.phase) previous = FindPreviousQuestion( self.context, filter=self.question_filter) if previous is None: self.previous_url = "%s/%s" % ( self.request.survey.absolute_url(), self.phase) else: self.previous_url = QuestionURL(survey, previous, phase=self.phase) next = FindNextQuestion(self.context, filter=self.question_filter) if next is None: self.next_url = "%s/report" % self.request.survey.absolute_url() else: self.next_url = QuestionURL(survey, next, phase=self.phase) super(ActionPlanView, self).update()
def test_list_sibling_modules_of_parent_if_risk(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild(model.Module( title=u"module 1.1", module_id="11", zodb_path="a/a")) mod12 = self.mod1.addChild(model.Module( title=u"module 1.2", module_id="12", zodb_path="a/b")) q111 = mod11.addChild(model.Risk( title=u"question 1.1.1", risk_id="111", zodb_path="a/b/c")) data = navigation.getTreeData(self.request, q111) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 2) self.assertEqual(mod1_data["children"][0]["id"], mod11.id) self.assertEqual(mod1_data["children"][0]["current_parent"], True) self.assertEqual(mod1_data["children"][0]["current"], False) self.assertEqual(mod1_data["children"][0]["leaf_module"], True) self.assertEqual(mod1_data["children"][0]["active"], True) self.assertEqual(mod1_data["children"][1]["id"], mod12.id) self.assertEqual(mod1_data["children"][1]["current_parent"], False) self.assertEqual(mod1_data["children"][1]["current"], False) self.assertEqual(mod1_data["children"][1]["active"], False)
def _update(self): survey = self.request.survey self.title = self.context.title self.tree = getTreeData(self.request, self.context, filter=self.question_filter, phase=self.phase) previous = FindPreviousQuestion(self.context, filter=self.question_filter) if previous is None: self.previous_url = "%s/%s" % (self.request.survey.absolute_url(), self.phase) else: self.previous_url = QuestionURL(survey, previous, phase=self.phase) next = FindNextQuestion(self.context, filter=self.question_filter) if next is None: self.next_url = "%s/report" % self.request.survey.absolute_url() else: self.next_url = QuestionURL(survey, next, phase=self.phase) super(ActionPlanView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) module = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) if self.request.environ["REQUEST_METHOD"] == "POST": self.save_and_continue(module) else: if IProfileQuestion.providedBy(module) and context.depth == 2: next = FindNextQuestion(context, filter=self.question_filter) if next is None: url = "%s/actionplan" % self.request.survey.absolute_url() else: url = QuestionURL(self.request.survey, next, phase=self.phase) return self.request.response.redirect(url) elif ICustomRisksModule.providedBy(module) \ and not self.context.skip_children \ and len(self.get_custom_risks()): url = "%s/customization/%d" % ( self.request.survey.absolute_url(), int(self.context.path)) return self.request.response.redirect(url) self.tree = getTreeData(self.request, context, filter=model.NO_CUSTOM_RISKS_FILTER) self.title = module.title self.module = module number_files = 0 for i in range(1, 5): number_files += getattr(self.module, 'file{0}'.format(i), None) and 1 or 0 self.has_files = number_files > 0 self.next_is_actionplan = not FindNextQuestion( context, filter=self.question_filter) super(IdentificationView, self).update()
def test_list_sibling_modules_of_parent_if_risk(self): self.createSqlData() self.mod1.removeChildren() mod11 = self.mod1.addChild( model.Module(title="module 1.1", module_id="11", zodb_path="a/a")) mod12 = self.mod1.addChild( model.Module(title="module 1.2", module_id="12", zodb_path="a/b")) q111 = mod11.addChild( model.Risk(title="question 1.1.1", risk_id="111", zodb_path="a/b/c")) data = navigation.getTreeData(self.request, q111, survey=self.survey) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 2) self.assertEqual(mod1_data["children"][0]["id"], mod11.id) self.assertEqual(mod1_data["children"][0]["current_parent"], True) self.assertEqual(mod1_data["children"][0]["current"], False) self.assertEqual(mod1_data["children"][0]["leaf_module"], True) self.assertEqual(mod1_data["children"][0]["active"], True) self.assertEqual(mod1_data["children"][1]["id"], mod12.id) self.assertEqual(mod1_data["children"][1]["current_parent"], False) self.assertEqual(mod1_data["children"][1]["current"], False) self.assertEqual(mod1_data["children"][1]["active"], False)
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) module = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) if self.request.environ["REQUEST_METHOD"] == "POST": self.save_and_continue(module) else: if IProfileQuestion.providedBy(module) and context.depth == 2: next = FindNextQuestion(context, filter=self.question_filter) if next is None: url = "%s/actionplan" % self.request.survey.absolute_url() else: url = QuestionURL(self.request.survey, next, phase=self.phase) return self.request.response.redirect(url) elif ICustomRisksModule.providedBy(module) \ and not self.context.skip_children \ and len(self.get_custom_risks()): url = "%s/customization/%d" % ( self.request.survey.absolute_url(), int(self.context.path)) return self.request.response.redirect(url) self.tree = getTreeData( self.request, context, filter=model.NO_CUSTOM_RISKS_FILTER) self.title = module.title self.module = module number_files = 0 for i in range(1, 5): number_files += getattr( self.module, 'file{0}'.format(i), None) and 1 or 0 self.has_files = number_files > 0 self.next_is_actionplan = not FindNextQuestion( context, filter=self.question_filter) super(IdentificationView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) self.errors = {} if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form session = Session() errors = False reply["action_plans"] = [] new_plans = [] for i in range(0, len(reply['measure'])): # repoze.formapi treats an empty input for an int as a # validation error. measure = dict([p for p in reply['measure'][i].items() if p[1].strip()]) form = ActionPlanItemForm(params=measure) reply['action_plans'].append(measure) if not form.validate(): errors = True reply['action_plans'][-1]['errors'] = \ dict(form.errors._dict) if u'Start date is not before end date' in \ form.errors._messages: reply['action_plans'][-1]['errors'][ 'planning_start_date'] = [ u'Start date is not before end date'] continue if len(measure) > 2: new_plans.append(model.ActionPlan( action_plan=form.data["action_plan"], prevention_plan=form.data["prevention_plan"], requirements=form.data["requirements"], responsible=form.data["responsible"], budget=form.data["budget"], planning_start=self._fieldsToDate( form.data["planning_start_year"], form.data["planning_start_month"], form.data["planning_start_day"]), planning_end=self._fieldsToDate( form.data["planning_end_year"], form.data["planning_end_month"], form.data["planning_end_day"]), )) if errors: self.data = reply else: context.comment = reply.get("comment") context.priority = reply.get("priority") for plan in context.action_plans: session.delete(plan) context.action_plans.extend(new_plans) SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/evaluation" \ % self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion( context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the report url = "%s/report" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL( self.request.survey, next, phase="actionplan") self.request.response.redirect(url) return else: if len(context.action_plans) == 0: context.action_plans.append(model.ActionPlan()) self.data = context self.risk = risk = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) self.title = context.parent.title self.tree = getTreeData( self.request, context, filter=self.question_filter, phase="actionplan") self.solutions = [solution for solution in risk.values() if ISolution.providedBy(solution)] super(ActionPlanView, self).update()
def testIncludeRisksChildrenOfModule(self): self.createSqlData() data = navigation.getTreeData(self.request, self.mod1) mod1_data = data["children"][0] self.assertEqual(len(mod1_data["children"]), 1) self.assertEqual(mod1_data["leaf_module"], True)
def tree(self): return getTreeData(self.request, self.context)
def tree(self): return getTreeData( self.request, self.context, filter=self.question_filter, phase=self.phase )
def update(self): if redirectOnSurveyUpdate(self.request): return self.risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split("/")) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form answer = reply.get("answer") self.context.comment = reply.get("comment") self.context.postponed = (answer == "postponed") if self.context.postponed: self.context.identification = None else: self.context.identification = answer if self.risk.type in ('top5', 'policy'): self.context.priority = 'high' elif self.risk.evaluation_method == 'calculated': self.calculatePriority(self.risk, reply) elif self.risk.evaluation_method == "direct": self.context.priority = reply.get("priority") SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/identification" % \ self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the action plan url = "%s/actionplan" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL(self.request.survey, next, phase="identification") self.request.response.redirect(url) else: self.tree = getTreeData(self.request, self.context) self.title = self.context.parent.title self.show_info = self.risk.image or \ HasText(self.risk.description) or \ HasText(self.risk.legal_reference) number_images = getattr(self.risk, 'image', None) and 1 or 0 if number_images: for i in range(2, 5): number_images += getattr( self.risk, 'image{0}'.format(i), None) and 1 or 0 self.has_images = number_images > 0 self.number_images = number_images self.image_class = IMAGE_CLASS[number_images] number_files = 0 for i in range(1, 5): number_files += getattr( self.risk, 'file{0}'.format(i), None) and 1 or 0 self.has_files = number_files > 0 self.risk_number = self.context.number ploneview = getMultiAdapter( (self.context, self.request), name="plone") stripped_description = StripMarkup(self.risk.description) if len(stripped_description) > DESCRIPTION_CROP_LENGTH: self.description_intro = ploneview.cropText( stripped_description, DESCRIPTION_CROP_LENGTH) else: self.description_intro = "" self.description_probability = _( u"help_default_probability", default=u"Indicate how " "likely occurence of this risk is in a normal situation.") self.description_frequency = _( u"help_default_frequency", default=u"Indicate how often this " u"risk occurs in a normal situation.") self.description_severity = _( u"help_default_severity", default=u"Indicate the " "severity if this risk occurs.") if getattr(self.request.survey, 'enable_custom_evaluation_descriptions', False): if self.request.survey.evaluation_algorithm != 'french': custom_dp = getattr( self.request.survey, 'description_probability', '') or '' self.description_probability = custom_dp.strip() or self.description_probability custom_df = getattr(self.request.survey, 'description_frequency', '') or '' self.description_frequency = custom_df.strip() or self.description_frequency custom_ds = getattr(self.request.survey, 'description_severity', '') or '' self.description_severity = custom_ds.strip() or self.description_severity super(IdentificationView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) self.next_is_report = False # already compute "next" here, so that we can know in the template # if the next step might be the report phase, in which case we # need to switch off the sidebar next = FindNextQuestion( context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the report url = "%s/report" % self.request.survey.absolute_url() self.next_is_report = True else: url = QuestionURL( self.request.survey, next, phase="actionplan") if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form session = Session() context.comment = reply.get("comment") context.priority = reply.get("priority") new_plans = self.extract_plans_from_request() for plan in context.action_plans: session.delete(plan) context.action_plans.extend(new_plans) SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/evaluation" % self.request.survey.absolute_url() else: url = QuestionURL( self.request.survey, next, phase="actionplan") return self.request.response.redirect(url) else: self.data = context if len(context.action_plans) == 0: self.data.empty_action_plan = [model.ActionPlan()] self.title = context.parent.title self.tree = getTreeData( self.request, context, filter=self.question_filter, phase="actionplan") if self.context.is_custom_risk: self.risk = self.context self.description_intro = u"" self.risk.description = u"" number_images = 0 else: self.risk = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) number_images = getattr(self.risk, 'image', None) and 1 or 0 if number_images: for i in range(2, 5): number_images += getattr( self.risk, 'image{0}'.format(i), None) and 1 or 0 ploneview = getMultiAdapter( (self.context, self.request), name="plone") stripped_description = StripMarkup(self.risk.description) if len(stripped_description) > DESCRIPTION_CROP_LENGTH: self.description_intro = ploneview.cropText( stripped_description, DESCRIPTION_CROP_LENGTH) else: self.description_intro = "" self.solutions = [ solution for solution in self.risk.values() if ISolution.providedBy(solution)] self.number_images = number_images self.has_images = number_images > 0 self.image_class = IMAGE_CLASS[number_images] self.risk_number = self.context.number lang = getattr(self.request, 'LANGUAGE', 'en') if "-" in lang: elems = lang.split("-") lang = "{0}_{1}".format(elems[0], elems[1].upper()) self.delete_confirmation = translate(_( u"Are you sure you want to delete this measure? This action can " u"not be reverted."), target_language=lang) self.override_confirmation = translate(_( u"The current text in the fields 'Action plan', 'Prevention plan' and " u"'Requirements' of this measure will be overwritten. This action cannot be " u"reverted. Are you sure you want to continue?"), target_language=lang) self.message_date_before = translate(_( u"error_validation_before_end_date", default=u"This date must be on or before the end date."), target_language=lang) self.message_date_after = translate(_( u"error_validation_after_start_date", default=u"This date must be on or after the start date."), target_language=lang) self.message_positive_number = translate(_( u"error_validation_positive_whole_number", default=u"This value must be a positive whole number."), target_language=lang) super(ActionPlanView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return context = aq_inner(self.context) appconfig = getUtility(IAppConfig) settings = appconfig.get('euphorie') self.use_existing_measures = settings.get('use_existing_measures', False) self.next_is_report = False # already compute "next" here, so that we can know in the template # if the next step might be the report phase, in which case we # need to switch off the sidebar next = FindNextQuestion(context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the report url = "%s/report" % self.request.survey.absolute_url() self.next_is_report = True else: url = QuestionURL(self.request.survey, next, phase="actionplan") if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form session = Session() context.comment = reply.get("comment") context.priority = reply.get("priority") new_plans = self.extract_plans_from_request() for plan in context.action_plans: session.delete(plan) context.action_plans.extend(new_plans) SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion(context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/evaluation" % self.request.survey.absolute_url() else: url = QuestionURL(self.request.survey, next, phase="actionplan") return self.request.response.redirect(url) else: self.data = context if len(context.action_plans) == 0: self.data.empty_action_plan = [model.ActionPlan()] self.title = context.parent.title self.tree = getTreeData(self.request, context, filter=self.question_filter, phase="actionplan") if self.context.is_custom_risk: self.risk = self.context self.description_intro = u"" self.risk.description = u"" number_images = 0 else: self.risk = self.request.survey.restrictedTraverse( context.zodb_path.split("/")) number_images = getattr(self.risk, 'image', None) and 1 or 0 if number_images: for i in range(2, 5): number_images += getattr(self.risk, 'image{0}'.format(i), None) and 1 or 0 ploneview = getMultiAdapter((self.context, self.request), name="plone") stripped_description = StripMarkup(self.risk.description) if len(stripped_description) > self.DESCRIPTION_CROP_LENGTH: self.description_intro = ploneview.cropText( stripped_description, self.DESCRIPTION_CROP_LENGTH) else: self.description_intro = "" self.solutions = [ solution for solution in self.risk.values() if ISolution.providedBy(solution) ] self.number_images = number_images self.has_images = number_images > 0 self.image_class = IMAGE_CLASS[number_images] self.risk_number = self.context.number lang = getattr(self.request, 'LANGUAGE', 'en') if "-" in lang: elems = lang.split("-") lang = "{0}_{1}".format(elems[0], elems[1].upper()) self.delete_confirmation = translate(_( u"Are you sure you want to delete this measure? This action can " u"not be reverted."), target_language=lang) self.override_confirmation = translate(_( u"The current text in the fields 'Action plan', 'Prevention plan' and " u"'Requirements' of this measure will be overwritten. This action cannot be " u"reverted. Are you sure you want to continue?"), target_language=lang) self.message_date_before = translate(_( u"error_validation_before_end_date", default=u"This date must be on or before the end date."), target_language=lang) self.message_date_after = translate(_( u"error_validation_after_start_date", default=u"This date must be on or after the start date."), target_language=lang) self.message_positive_number = translate(_( u"error_validation_positive_whole_number", default=u"This value must be a positive whole number."), target_language=lang) super(ActionPlanView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return self.risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split("/")) appconfig = getUtility(IAppConfig) settings = appconfig.get('euphorie') self.use_existing_measures = settings.get('use_existing_measures', False) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form answer = reply.get("answer") self.context.comment = reply.get("comment") if self.use_existing_measures: measures = self.get_existing_measures() new_measures = [] for i, entry in enumerate(measures): on = int(bool(reply.get('measure-{}'.format(i)))) entry[0] = on measures[i] = entry if on: new_measures.append([1, entry[1]]) for k, val in reply.items(): if k.startswith('new-measure') and val.strip() != '': new_measures.append([1, val]) self.context.existing_measures = dumps(new_measures) self.context.postponed = (answer == "postponed") if self.context.postponed: self.context.identification = None else: self.context.identification = answer if self.risk.type in ('top5', 'policy'): self.context.priority = 'high' elif self.risk.evaluation_method == 'calculated': self.calculatePriority(self.risk, reply) elif self.risk.evaluation_method == "direct": self.context.priority = reply.get("priority") SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion(self.context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/identification" % \ self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion(self.context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the action plan url = "%s/actionplan" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL(self.request.survey, next, phase="identification") self.request.response.redirect(url) else: self.tree = getTreeData(self.request, self.context) self.title = self.context.parent.title self.show_info = self.risk.image or \ HasText(self.risk.description) or \ HasText(self.risk.legal_reference) number_images = getattr(self.risk, 'image', None) and 1 or 0 if number_images: for i in range(2, 5): number_images += getattr(self.risk, 'image{0}'.format(i), None) and 1 or 0 self.has_images = number_images > 0 self.number_images = number_images self.image_class = IMAGE_CLASS[number_images] number_files = 0 for i in range(1, 5): number_files += getattr(self.risk, 'file{0}'.format(i), None) and 1 or 0 self.has_files = number_files > 0 self.risk_number = self.context.number ploneview = getMultiAdapter((self.context, self.request), name="plone") stripped_description = StripMarkup(self.risk.description) if len(stripped_description) > self.DESCRIPTION_CROP_LENGTH: self.description_intro = ploneview.cropText( stripped_description, self.DESCRIPTION_CROP_LENGTH) else: self.description_intro = "" self.description_probability = _( u"help_default_probability", default=u"Indicate how " "likely occurence of this risk is in a normal situation.") self.description_frequency = _( u"help_default_frequency", default=u"Indicate how often this " u"risk occurs in a normal situation.") self.description_severity = _(u"help_default_severity", default=u"Indicate the " "severity if this risk occurs.") self.title_extra = '' self.show_existing_measures = False if self.use_existing_measures: measures = self.risk.existing_measures or "" # Only show the form to select and add existing measures if # at least one measure was defined in the CMS if len(measures): self.show_existing_measures = True self.title_extra = _( "Are the measures that are selected above sufficient?") if not self.context.existing_measures: self.context.existing_measures = dumps([ (1, text) for text in measures.splitlines() ]) if getattr(self.request.survey, 'enable_custom_evaluation_descriptions', False): if self.request.survey.evaluation_algorithm != 'french': custom_dp = getattr(self.request.survey, 'description_probability', '') or '' self.description_probability = custom_dp.strip( ) or self.description_probability custom_df = getattr(self.request.survey, 'description_frequency', '') or '' self.description_frequency = custom_df.strip( ) or self.description_frequency custom_ds = getattr(self.request.survey, 'description_severity', '') or '' self.description_severity = custom_ds.strip( ) or self.description_severity # Italian special if IItalyIdentificationPhaseSkinLayer.providedBy(self.request): self.skip_evaluation = True else: self.skip_evaluation = False super(IdentificationView, self).update()
def update(self): if redirectOnSurveyUpdate(self.request): return self.risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split("/")) appconfig = getUtility(IAppConfig) settings = appconfig.get('euphorie') self.use_existing_measures = settings.get('use_existing_measures', False) if self.request.environ["REQUEST_METHOD"] == "POST": reply = self.request.form answer = reply.get("answer") self.context.comment = reply.get("comment") if self.use_existing_measures: measures = self.get_existing_measures() new_measures = [] for i, entry in enumerate(measures): on = int(bool(reply.get('measure-{}'.format(i)))) entry[0] = on measures[i] = entry if on: new_measures.append([1, entry[1]]) for k, val in reply.items(): if k.startswith('new-measure') and val.strip() != '': new_measures.append([1, val]) self.context.existing_measures = dumps(new_measures) self.context.postponed = (answer == "postponed") if self.context.postponed: self.context.identification = None else: self.context.identification = answer if self.risk.type in ('top5', 'policy'): self.context.priority = 'high' elif self.risk.evaluation_method == 'calculated': self.calculatePriority(self.risk, reply) elif self.risk.evaluation_method == "direct": self.context.priority = reply.get("priority") SessionManager.session.touch() if reply["next"] == "previous": next = FindPreviousQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, step back to intro page url = "%s/identification" % \ self.request.survey.absolute_url() self.request.response.redirect(url) return else: next = FindNextQuestion( self.context, filter=self.question_filter) if next is None: # We ran out of questions, proceed to the action plan url = "%s/actionplan" % self.request.survey.absolute_url() self.request.response.redirect(url) return url = QuestionURL(self.request.survey, next, phase="identification") self.request.response.redirect(url) else: self.tree = getTreeData(self.request, self.context) self.title = self.context.parent.title self.show_info = self.risk.image or \ HasText(self.risk.description) or \ HasText(self.risk.legal_reference) number_images = getattr(self.risk, 'image', None) and 1 or 0 if number_images: for i in range(2, 5): number_images += getattr( self.risk, 'image{0}'.format(i), None) and 1 or 0 self.has_images = number_images > 0 self.number_images = number_images self.image_class = IMAGE_CLASS[number_images] number_files = 0 for i in range(1, 5): number_files += getattr( self.risk, 'file{0}'.format(i), None) and 1 or 0 self.has_files = number_files > 0 self.risk_number = self.context.number ploneview = getMultiAdapter( (self.context, self.request), name="plone") self.description = self.risk.description # Italian special if IItalyIdentificationPhaseSkinLayer.providedBy(self.request): self.skip_evaluation = True self.description += u"""<p>Tutte le misure sono riepilogate nella tabella accessibile dal riquadro sottostante tramite il link “risorse aggiuntive” e vanno selezionate nella sezione misure/programma (almeno quelle obbligatorie).</p> """ else: self.skip_evaluation = False stripped_description = StripMarkup(self.description) if len(stripped_description) > self.DESCRIPTION_CROP_LENGTH: self.description_intro = ploneview.cropText( stripped_description, self.DESCRIPTION_CROP_LENGTH) else: self.description_intro = "" self.description_probability = _( u"help_default_probability", default=u"Indicate how " "likely occurence of this risk is in a normal situation.") self.description_frequency = _( u"help_default_frequency", default=u"Indicate how often this " u"risk occurs in a normal situation.") self.description_severity = _( u"help_default_severity", default=u"Indicate the " "severity if this risk occurs.") self.title_extra = '' self.show_existing_measures = False if self.use_existing_measures: measures = self.risk.existing_measures or "" # Only show the form to select and add existing measures if # at least one measure was defined in the CMS if len(measures): self.show_existing_measures = True self.title_extra = _( "Are the measures that are selected above sufficient?") if not self.context.existing_measures: self.context.existing_measures = dumps( [(1, text) for text in measures.splitlines()]) if getattr(self.request.survey, 'enable_custom_evaluation_descriptions', False): if self.request.survey.evaluation_algorithm != 'french': custom_dp = getattr( self.request.survey, 'description_probability', '') or '' self.description_probability = custom_dp.strip() or self.description_probability custom_df = getattr(self.request.survey, 'description_frequency', '') or '' self.description_frequency = custom_df.strip() or self.description_frequency custom_ds = getattr(self.request.survey, 'description_severity', '') or '' self.description_severity = custom_ds.strip() or self.description_severity super(IdentificationView, self).update()