コード例 #1
0
def _handle_assessment_tmpl_put(sender,
                                obj=None,
                                src=None,
                                service=None,
                                initial_state=None):
    """Handles update event to AssessmentTemplate model."""
    del sender, service, initial_state  # Unused

    issue_tracker_info = src.get('issue_tracker') or {}
    integration_utils.validate_issue_tracker_info(issue_tracker_info)

    audit = all_models.Audit.query.join(
        all_models.Relationship,
        all_models.Relationship.source_id == all_models.Audit.id,
    ).filter(all_models.Relationship.source_type == 'Audit',
             all_models.Relationship.destination_type == 'AssessmentTemplate',
             all_models.Relationship.destination_id == obj.id).first()

    if not audit or not _is_issue_tracker_enabled(audit=audit):
        issue_tracker_info = {
            'enabled': False,
        }

    if issue_tracker_info:
        all_models.IssuetrackerIssue.create_or_update_from_dict(
            obj, issue_tracker_info)
コード例 #2
0
def _handle_assessment_tmpl_put(sender, obj=None, src=None, service=None,
                                initial_state=None):
  """Handles update event to AssessmentTemplate model."""
  del sender, service, initial_state  # Unused

  issue_tracker_info = src.get('issue_tracker') or {}
  integration_utils.validate_issue_tracker_info(issue_tracker_info)

  audit = all_models.Audit.query.join(
      all_models.Relationship,
      all_models.Relationship.source_id == all_models.Audit.id,
  ).filter(
      all_models.Relationship.source_type == 'Audit',
      all_models.Relationship.destination_type == 'AssessmentTemplate',
      all_models.Relationship.destination_id == obj.id
  ).first()

  if not audit or not _is_issue_tracker_enabled(audit=audit):
    issue_tracker_info = {
        'enabled': False,
    }

  if issue_tracker_info:
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #3
0
def _handle_audit_put(sender, obj=None, src=None, service=None):
  """Handles updating issue tracker related info."""
  del sender, service  # Unused
  issue_tracker_info = src.get('issue_tracker')
  if issue_tracker_info:
    integration_utils.validate_issue_tracker_info(issue_tracker_info)
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #4
0
def _handle_audit_put(sender, obj=None, src=None, service=None):
  """Handles updating issue tracker related info."""
  del sender, service  # Unused
  issue_tracker_info = src.get('issue_tracker')
  if issue_tracker_info:
    integration_utils.validate_issue_tracker_info(issue_tracker_info)
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #5
0
def _handle_audit_put(sender, obj=None, src=None, service=None):
    """Handles updating issue tracker related info."""
    del sender, service  # Unused
    issue_tracker_info = src.get('issue_tracker')
    if issue_tracker_info:
        _, issue_tracker_info["cc_list"] = _collect_audit_emails(
            src.get("access_control_list", []))
        integration_utils.validate_issue_tracker_info(issue_tracker_info)
        all_models.IssuetrackerIssue.create_or_update_from_dict(
            obj, issue_tracker_info)
コード例 #6
0
def _handle_audit_post(sender, objects=None, sources=None):
  """Handles creating issue tracker related info."""
  del sender  # Unused
  for obj, src in itertools.izip(objects, sources):
    issue_tracker_info = src.get('issue_tracker')
    if not issue_tracker_info:
      continue
    integration_utils.validate_issue_tracker_info(issue_tracker_info)
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #7
0
def _handle_audit_post(sender, objects=None, sources=None):
  """Handles creating issue tracker related info."""
  del sender  # Unused
  for obj, src in itertools.izip(objects, sources):
    issue_tracker_info = src.get('issue_tracker')
    if not issue_tracker_info:
      continue
    integration_utils.validate_issue_tracker_info(issue_tracker_info)
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #8
0
  def test_validate_info(self, info, expected_error):
    """Test _validate_issue_tracker_info function."""
    initial_info = dict(info)
    # pylint: disable=protected-access
    if expected_error:
      with self.assertRaises(expected_error):
        integration_utils.validate_issue_tracker_info(info)
    else:
      integration_utils.validate_issue_tracker_info(info)

    self.assertEqual(info, initial_info)
コード例 #9
0
  def test_validate_info(self, info, expected_error):
    """Test _validate_issue_tracker_info function."""
    initial_info = dict(info)
    # pylint: disable=protected-access
    if expected_error:
      with self.assertRaises(expected_error):
        integration_utils.validate_issue_tracker_info(info)
    else:
      integration_utils.validate_issue_tracker_info(info)

    self.assertEqual(info, initial_info)
コード例 #10
0
def _handle_assessment_tmpl_post(sender, objects=None, sources=None):
  """Handles create event to AssessmentTemplate model."""
  del sender  # Unused

  for src in sources:
    integration_utils.validate_issue_tracker_info(
        src.get('issue_tracker') or {}
    )

  db.session.flush()
  template_ids = {
      obj.id for obj in objects
  }

  if not template_ids:
    return

  # TODO(anushovan): use joined query to fetch audits or even
  #   issuetracker_issues with one query.
  audit_map = {
      r.destination_id: r.source_id
      for r in all_models.Relationship.query.filter(
          all_models.Relationship.source_type == 'Audit',
          all_models.Relationship.destination_type == 'AssessmentTemplate',
          all_models.Relationship.destination_id.in_(template_ids)).all()
  }

  if not audit_map:
    return

  audits = {
      a.id: a
      for a in all_models.Audit.query.filter(
          all_models.Audit.id.in_(audit_map.values())).all()
  }

  for obj, src in itertools.izip(objects, sources):
    audit_id = audit_map.get(obj.id)
    audit = audits.get(audit_id) if audit_id else None
    if not audit or not _is_issue_tracker_enabled(audit=audit):
      issue_tracker_info = {
          'enabled': False,
      }
    else:
      issue_tracker_info = src.get('issue_tracker')

    if not issue_tracker_info:
      continue
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)
コード例 #11
0
def _handle_assessment_tmpl_post(sender, objects=None, sources=None):
  """Handles create event to AssessmentTemplate model."""
  del sender  # Unused

  for src in sources:
    integration_utils.validate_issue_tracker_info(
        src.get('issue_tracker') or {}
    )

  db.session.flush()
  template_ids = {
      obj.id for obj in objects
  }

  if not template_ids:
    return

  # TODO(anushovan): use joined query to fetch audits or even
  #   issuetracker_issues with one query.
  audit_map = {
      r.destination_id: r.source_id
      for r in all_models.Relationship.query.filter(
          all_models.Relationship.source_type == 'Audit',
          all_models.Relationship.destination_type == 'AssessmentTemplate',
          all_models.Relationship.destination_id.in_(template_ids)).all()
  }

  if not audit_map:
    return

  audits = {
      a.id: a
      for a in all_models.Audit.query.filter(
          all_models.Audit.id.in_(audit_map.values())).all()
  }

  for obj, src in itertools.izip(objects, sources):
    audit_id = audit_map.get(obj.id)
    audit = audits.get(audit_id) if audit_id else None
    if not audit or not _is_issue_tracker_enabled(audit=audit):
      issue_tracker_info = {
          'enabled': False,
      }
    else:
      issue_tracker_info = src.get('issue_tracker')

    if not issue_tracker_info:
      continue
    all_models.IssuetrackerIssue.create_or_update_from_dict(
        obj, issue_tracker_info)