def get_participants(self) -> Mapping[ExternalProviders, Set[User]]: return get_send_to( project=self.project, target_type=self.target_type, target_identifier=self.target_identifier, event=self.event, )
def test_get_send_to_with_fallthrough(self): event = self.store_event(data=self.make_event_data("foo.cpp"), project_id=self.project.id) assert {self.user, self.user2 } == get_send_to(self.project, ActionTargetType.ISSUE_OWNERS, event=event.data)[ExternalProviders.EMAIL]
def get_participants(self) -> Mapping[ExternalProviders, Iterable[Union["Team", "User"]]]: return get_send_to( project=self.project, target_type=self.target_type, target_identifier=self.target_identifier, event=self.event, )
def get_send_to_team( self, project: Optional[Project] = None, team_id: Optional[int] = None ) -> Mapping[ExternalProviders, Iterable[Union["Team", "User"]]]: return get_send_to( project=project or self.project, target_type=ActionTargetType.TEAM, target_identifier=team_id or self.team.id, )
def get_send_to_member( self, project: Optional[Project] = None, user_id: Optional[int] = None ) -> Mapping[ExternalProviders, Iterable[Union["Team", "User"]]]: return get_send_to( project=project or self.project, target_type=ActionTargetType.MEMBER, target_identifier=user_id or self.user.id, )
def get_send_to_owners( self, event: Event ) -> Mapping[ExternalProviders, Iterable[Union["Team", "User"]]]: return get_send_to( self.project, target_type=ActionTargetType.ISSUE_OWNERS, target_identifier=None, event=event, )
def test_get_send_to_without_fallthrough(self): ProjectOwnership.objects.get(project_id=self.project.id).update( fallthrough=False) event = self.store_event(data=self.make_event_data("foo.cpp"), project_id=self.project.id) assert set() == set( get_send_to(self.project, ActionTargetType.ISSUE_OWNERS, event=event.data))
def test_get_send_to_with_user_owners(self): event = self.store_event(data=self.make_event_data("foo.cbl"), project_id=self.project.id) assert {self.user, self.user2 } == get_send_to(self.project, ActionTargetType.ISSUE_OWNERS, event=event.data)[ExternalProviders.EMAIL] # Make sure that disabling mail alerts works as expected NotificationSetting.objects.update_settings( ExternalProviders.EMAIL, NotificationSettingTypes.ISSUE_ALERTS, NotificationSettingOptionValues.NEVER, user=self.user2, project=self.project, ) assert {self.user } == get_send_to(self.project, ActionTargetType.ISSUE_OWNERS, event=event.data)[ExternalProviders.EMAIL]
def get_participants_by_event( digest: Digest, project: Project, target_type: ActionTargetType = ActionTargetType.ISSUE_OWNERS, target_identifier: int | None = None, ) -> Mapping[Event, Mapping[ExternalProviders, set[Team | User]]]: """ This is probably the slowest part in sending digests because we do a lot of DB calls while we iterate over every event. It would be great if we could combine some queries. """ return { event: get_send_to( project=project, target_type=target_type, target_identifier=target_identifier, event=event, ) for event in get_event_from_groups_in_digest(digest) }