예제 #1
0
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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
  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
예제 #5
0
    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)
예제 #6
0
파일: issue.py 프로젝트: google/ggrc-core
  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)
예제 #7
0
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
예제 #8
0
  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