def do_PUT(self): self.risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split('/')) if self.risk.type in ['top5', 'policy']: return {'type': 'error', 'message': 'Can not evaluate a %s risk' % self.risk.type} try: if self.risk.evaluation_method == 'direct': self.context.priority = get_json_token(self.input, 'priority', IRisk['default_priority'], default=self.context.priority) else: algorithm = evaluation_algorithm(self.risk) if algorithm == 'french': self.context.severity = get_json_token(self.input, 'severity', IFrenchEvaluation['default_severity'], self.context.severity) self.context.frequency = get_json_token(self.input, 'frequency', IFrenchEvaluation['default_frequency'], self.context.frequency) else: # Kinney self.context.probability = get_json_token(self.input, 'probability', IKinneyEvaluation['default_probability'], self.context.probability) self.context.frequency = get_json_token(self.input, 'frequency', IKinneyEvaluation['default_frequency'], self.context.frequency) self.context.effect = get_json_token(self.input, 'effect', IKinneyEvaluation['default_effect'], self.context.effect) calculate_priority(self.context, self.risk) except (KeyError, ValueError) as e: return {'type': 'error', 'message': str(e)} return self.do_GET()
def do_GET(self): self.risk = risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split('/')) info = {'id': self.context.id, 'type': 'risk', 'title': risk.title, 'module-title': aq_parent(risk).title, 'problem-description': risk.problem_description, 'show-not-applicable': risk.show_notapplicable, 'evaluation-method': risk.evaluation_method, 'present': self.context.identification, 'priority': self.context.priority, 'comment': self.context.comment, } images = filter(None, [export_image(risk, self.request, 'image%s' % postfix, 'caption%s' % postfix, width=150, height=500, direction='thumbnail') for postfix in ['', '2', '3', '4']]) if images: info['images'] = images if HasText(risk.description): info['description'] = risk.description if HasText(risk.legal_reference): info['legal-reference'] = risk.legal_reference if risk.evaluation_method == 'calculated': algorithm = evaluation_algorithm(risk) info['evaluation-algorithm'] = algorithm if algorithm == 'french': field = IFrenchEvaluation['default_severity'] info['severity'] = vocabulary_token( field, self.context.severity) \ if self.context.severity else None info['severity-options'] = vocabulary_options( field, self.request) field = IFrenchEvaluation['default_frequency'] info['frequency'] = vocabulary_token( field, self.context.frequency) \ if self.context.frequency else None info['frequency-options'] = vocabulary_options( field, self.request) else: # Kinney field = IKinneyEvaluation['default_frequency'] info['frequency'] = vocabulary_token( field, self.context.frequency) \ if self.context.frequency else None info['frequency-options'] = vocabulary_options( field, self.request) field = IKinneyEvaluation['default_effect'] info['effect'] = vocabulary_token(field, self.context.effect) \ if self.context.effect else None info['effect-options'] = vocabulary_options( field, self.request) field = IKinneyEvaluation['default_probability'] info['probability'] = vocabulary_token( field, self.context.probability) \ if self.context.probability else None info['probability-options'] = vocabulary_options( field, self.request) solutions = [solution for solution in risk.values() if ISolution.providedBy(solution)] if solutions: info['standard-solutions'] = [ {'description': solution.description, 'action-plan': solution.action_plan, 'prevention-plan': solution.prevention_plan, 'requirements': solution.requirements} for solution in risk.values()] return info
def do_GET(self): self.risk = risk = self.request.survey.restrictedTraverse( self.context.zodb_path.split('/')) info = { 'id': self.context.id, 'type': 'risk', 'title': risk.title, 'module-title': aq_parent(risk).title, 'problem-description': risk.problem_description, 'show-not-applicable': risk.show_notapplicable, 'evaluation-method': risk.evaluation_method, 'present': self.context.identification, 'priority': self.context.priority, 'comment': self.context.comment, } images = filter(None, [ export_image(risk, self.request, 'image%s' % postfix, 'caption%s' % postfix, width=150, height=500, direction='thumbnail') for postfix in ['', '2', '3', '4'] ]) if images: info['images'] = images if HasText(risk.description): info['description'] = risk.description if HasText(risk.legal_reference): info['legal-reference'] = risk.legal_reference if risk.evaluation_method == 'calculated': algorithm = evaluation_algorithm(risk) info['evaluation-algorithm'] = algorithm if algorithm == 'french': field = IFrenchEvaluation['default_severity'] info['severity'] = vocabulary_token( field, self.context.severity) \ if self.context.severity else None info['severity-options'] = vocabulary_options( field, self.request) field = IFrenchEvaluation['default_frequency'] info['frequency'] = vocabulary_token( field, self.context.frequency) \ if self.context.frequency else None info['frequency-options'] = vocabulary_options( field, self.request) else: # Kinney field = IKinneyEvaluation['default_frequency'] info['frequency'] = vocabulary_token( field, self.context.frequency) \ if self.context.frequency else None info['frequency-options'] = vocabulary_options( field, self.request) field = IKinneyEvaluation['default_effect'] info['effect'] = vocabulary_token(field, self.context.effect) \ if self.context.effect else None info['effect-options'] = vocabulary_options( field, self.request) field = IKinneyEvaluation['default_probability'] info['probability'] = vocabulary_token( field, self.context.probability) \ if self.context.probability else None info['probability-options'] = vocabulary_options( field, self.request) solutions = [ solution for solution in risk.values() if ISolution.providedBy(solution) ] if solutions: info['standard-solutions'] = [{ 'description': solution.description, 'action-plan': solution.action_plan, 'prevention-plan': solution.prevention_plan, 'requirements': solution.requirements } for solution in risk.values()] return info