def build_create_issue_tracker_params(self, obj, issue_tracker_info): """Build create issue query for issue tracker.""" all_emails = {acl.person.email for acl in obj.access_control_list} # Add the person who triggered the event. all_emails |= {obj.modified_by.email} allowed_emails = integration_utils.exclude_auditor_emails(all_emails) # Don't turn on integration if 'reporter' is auditor. reporter_email = obj.modified_by.email if reporter_email not in allowed_emails: obj.add_warning(self.EXCLUDE_REPORTER_EMAIL_ERROR_MSG) return self.params self.params.status = self.ASSIGNED_ISSUE_STATUS self.params.add_comment(self.INITIAL_COMMENT_TMPL.format( model=self.MODEL_NAME, link=self.get_ggrc_object_url(obj) )) self.handle_issue_tracker_info(obj, issue_tracker_info) self._handle_people_emails(obj, allowed_emails) self._handle_issue_comment_attributes(obj) return self.params
def test_exclude_auditor(self): """Test 'exclude_auditor_emails' util.""" audit = factories.AuditFactory() person = factories.PersonFactory(email="*****@*****.**") audit.add_person_with_role_name(person, "Auditors") db.session.commit() result = integration_utils.exclude_auditor_emails(["*****@*****.**", "*****@*****.**"]) self.assertEqual(result, {"*****@*****.**", })
def test_exclude_auditor(self): """Test 'exclude_auditor_emails' util.""" audit = factories.AuditFactory() person = factories.PersonFactory(email="*****@*****.**") audit.add_person_with_role_name(person, "Auditors") db.session.commit() result = integration_utils.exclude_auditor_emails(["*****@*****.**", "*****@*****.**"]) self.assertEqual(result, {"*****@*****.**", })
def test_exclude_auditor(self): """Test 'exclude_auditor_emails' util.""" audit = factories.AuditFactory() factories.AccessControlListFactory( ac_role=factories.AccessControlRoleFactory(name="Auditors"), person=factories.PersonFactory(email="*****@*****.**"), object_id=audit.id, object_type="Audit" ) result = integration_utils.exclude_auditor_emails(["*****@*****.**", "*****@*****.**"]) self.assertEqual(result, {"*****@*****.**", })
def test_exclude_auditor(self): """Test 'exclude_auditor_emails' util.""" audit = factories.AuditFactory() factories.AccessControlListFactory( ac_role=factories.AccessControlRoleFactory(name="Auditors"), person=factories.PersonFactory(email="*****@*****.**"), object_id=audit.id, object_type="Audit" ) result = integration_utils.exclude_auditor_emails(["*****@*****.**", "*****@*****.**"]) self.assertEqual(result, {"*****@*****.**", })
def _build_allowed_emails(self, obj): """Handle emails from object. Excludes auditors from emails list because no contact field should contain global auditors. Args: obj - object to collect emails Return: A tuple (reporter_email, allowed_emails). """ all_emails = {person.email for person, _ in obj.access_control_list} # Add the person who triggered the event. all_emails |= {obj.modified_by.email} allowed_emails = integration_utils.exclude_auditor_emails(all_emails) # Don't turn on integration if 'reporter' is auditor. reporter_email = obj.modified_by.email if reporter_email not in allowed_emails: obj.add_warning(self.EXCLUDE_REPORTER_EMAIL_ERROR_MSG) return None return allowed_emails