Exemplo n.º 1
0
 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,
     )
Exemplo n.º 2
0
 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]
Exemplo n.º 3
0
 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,
     )
Exemplo n.º 4
0
 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,
     )
Exemplo n.º 5
0
 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,
     )
Exemplo n.º 6
0
 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,
     )
Exemplo n.º 7
0
 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))
Exemplo n.º 8
0
    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]
Exemplo n.º 9
0
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)
    }