def _handle_assessment(assessment, src, templates, audits): """Handles auto calculated properties for Assessment model.""" snapshot_dict = src.get('object') or {} common.map_objects(assessment, snapshot_dict) common.map_objects(assessment, src.get('audit')) snapshot = referenced_objects.get("Snapshot", snapshot_dict.get('id')) if not src.get('_generated') and not snapshot: return template = templates.get(src.get('template', {}).get('id')) audit = audits[src['audit']['id']] relate_assignees(assessment, snapshot, template, audit) relate_ca(assessment, template) assessment.title = u'{} assessment for {}'.format( snapshot.revision.content['title'], audit.title, ) if not template: # Assessment test plan should inherit test plan of snapshot assessment.test_plan = snapshot.revision.content.get("test_plan") return assessment.test_plan = template.procedure_description if template.test_plan_procedure: copy_snapshot_plan(assessment, snapshot) if template.template_object_type: assessment.assessment_type = template.template_object_type
def handle_assessment_post(sender, objects=None, sources=None): # pylint: disable=unused-argument """Apply custom attribute definitions and map people roles when generating Assessmet with template""" db.session.flush() audit_ids = [] template_ids = [] snapshot_ids = [] for src in sources: snapshot_ids.append(src.get('object', {}).get('id')) audit_ids.append(src.get('audit', {}).get('id')) template_ids.append(src.get('template', {}).get('id')) snapshot_cache = { s.id: s for s in Snapshot.query.options( orm.undefer_group('Snapshot_complete'), orm.Load(Snapshot).joinedload("revision").undefer_group( 'Revision_complete')).filter(Snapshot.id.in_(snapshot_ids)) } template_cache = { t.id: t for t in all_models.AssessmentTemplate.query.options( orm.undefer_group('AssessmentTemplate_complete'), ).filter( all_models.AssessmentTemplate.id.in_(template_ids)) } audit_cache = { a.id: a for a in all_models.Audit.query.options( orm.undefer_group('Audit_complete'), ).filter( all_models.Audit.id.in_(audit_ids)) } for assessment, src in izip(objects, sources): snapshot_dict = src.get("object") or {} common.map_objects(assessment, snapshot_dict) common.map_objects(assessment, src.get("audit")) snapshot = snapshot_cache.get(snapshot_dict.get('id')) if not src.get("_generated") and not snapshot: continue template = template_cache.get(src.get("template", {}).get("id")) audit = audit_cache[src["audit"]["id"]] relate_assignees(assessment, snapshot, template, audit) relate_ca(assessment, template) assessment.title = u'{} assessment for {}'.format( snapshot.revision.content['title'], audit.title, ) if not template: continue if template.test_plan_procedure: assessment.test_plan = snapshot.revision.content['test_plan'] else: assessment.test_plan = template.procedure_description if template.template_object_type: assessment.assessment_type = template.template_object_type
def copy_objects(self, target, **kwargs): # pylint: disable=unused-argument for rel in self.related_destinations: if rel.destination_type != 'TaskGroupTask': common.map_objects(target, { "id": rel.destination_id, "type": rel.destination_type }) return target
def handle_issue_post(sender, objects=None, sources=None): # pylint: disable=unused-argument """Map issue to audit. This makes sure an auditor is able to create an issue on the audit without having permissions to create Relationships in the context""" for obj, src in izip(objects, sources): audit = src.get("audit") assessment = src.get("assessment") common.map_objects(obj, audit) common.map_objects(obj, assessment)
def handle_issue_post(sender, objects=None, sources=None): # pylint: disable=unused-argument """Map issue to audit. This makes sure an auditor is able to create an issue on the audit without having permissions to create Relationships in the context""" for obj, src in izip(objects, sources): audit = src.get("audit") assessment = src.get("assessment") if assessment: common.map_objects(obj, assessment) else: common.map_objects(obj, audit)
def _handle_assessment(assessment, src): """Handles auto calculated properties for Assessment model.""" snapshot_dict = src.get('object') or {} common.map_objects(assessment, snapshot_dict) common.map_objects(assessment, src.get('audit')) snapshot = referenced_objects.get("Snapshot", snapshot_dict.get('id')) if not src.get('_generated') and not snapshot: return template = referenced_objects.get( src.get('template', {}).get('type'), src.get('template', {}).get('id'), ) audit = referenced_objects.get( src['audit']['type'], src['audit']['id'], ) relate_assignees(assessment, snapshot, template, audit) relate_ca(assessment, template) assessment.title = u'{} assessment for {}'.format( snapshot.revision.content['title'], audit.title, ) if not template: # Assessment test plan should inherit test plan of snapshot assessment.test_plan = snapshot.revision.content.get("test_plan") return assessment.test_plan_procedure = template.test_plan_procedure assessment.test_plan = template.procedure_description if template.test_plan_procedure: copy_snapshot_plan(assessment, snapshot) if template.template_object_type: assessment.assessment_type = template.template_object_type
def handle_assessment_post(sender, objects=None, sources=None): # pylint: disable=unused-argument """Apply custom attribute definitions and map people roles when generating Assessmet with template""" db.session.flush() audit_ids = [] template_ids = [] snapshot_ids = [] for src in sources: snapshot_ids.append(src.get('object', {}).get('id')) audit_ids.append(src.get('audit', {}).get('id')) template_ids.append(src.get('template', {}).get('id')) snapshot_cache = { s.id: s for s in Snapshot.query.options( orm.undefer_group('Snapshot_complete'), orm.Load(Snapshot).joinedload( "revision" ).undefer_group( 'Revision_complete' ) ).filter( Snapshot.id.in_(snapshot_ids) ) } template_cache = { t.id: t for t in all_models.AssessmentTemplate.query.options( orm.undefer_group('AssessmentTemplate_complete'), ).filter( all_models.AssessmentTemplate.id.in_(template_ids) ) } audit_cache = { a.id: a for a in all_models.Audit.query.options( orm.undefer_group('Audit_complete'), ).filter( all_models.Audit.id.in_(audit_ids) ) } for assessment, src in izip(objects, sources): snapshot_dict = src.get("object") or {} common.map_objects(assessment, snapshot_dict) common.map_objects(assessment, src.get("audit")) snapshot = snapshot_cache.get(snapshot_dict.get('id')) if not src.get("_generated") and not snapshot: continue template = template_cache.get(src.get("template", {}).get("id")) audit = audit_cache[src["audit"]["id"]] relate_assignees(assessment, snapshot, template, audit) relate_ca(assessment, template) assessment.title = u'{} assessment for {}'.format( snapshot.revision.content['title'], audit.title, ) if not template: continue if template.test_plan_procedure: assessment.test_plan = snapshot.revision.content['test_plan'] else: assessment.test_plan = template.procedure_description if template.template_object_type: assessment.assessment_type = template.template_object_type