Skip to content

Commit 9a97157

Browse files
committed
adds Slack notification for when an OrganizationInvitation is created (initially sent)
1 parent cf5c3fa commit 9a97157

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

apps/organizations/apps.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,37 @@
1+
# Third Party (PyPI) Imports
2+
import rollbar
3+
14
# Django Imports
25
from django.apps import AppConfig
6+
from django.conf import settings
37
from django.db.models import signals
48

59
# HTK Imports
610
from htk.app_config import HtkAppConfig
11+
from htk.decorators.classes import disable_for_loaddata
12+
from htk.utils import (
13+
htk_setting,
14+
resolve_model_dynamically,
15+
)
16+
17+
18+
# isort: off
19+
20+
21+
@disable_for_loaddata
22+
def organization_invitation_created(sender, instance, created, **kwargs):
23+
"""Signal handler for when a new OrganizationInvitation object is created"""
24+
if created:
25+
invitation = instance
26+
27+
if not settings.TEST and htk_setting('HTK_SLACK_NOTIFICATIONS_ENABLED'):
28+
try:
29+
from htk.utils.notifications import slack_notify
30+
31+
msg = invitation.build_notification_message__created()
32+
slack_notify(msg)
33+
except:
34+
rollbar.report_exc_info()
735

836

937
class HtkOrganizationAppConfig(HtkAppConfig):
@@ -12,4 +40,12 @@ class HtkOrganizationAppConfig(HtkAppConfig):
1240
verbose_name = 'Organizations'
1341

1442
def ready(self):
15-
pass
43+
OrganizationInvitation = resolve_model_dynamically(
44+
htk_setting('HTK_ORGANIZATION_INVITATION_MODEL')
45+
)
46+
47+
signals.post_save.connect(
48+
organization_invitation_created,
49+
sender=OrganizationInvitation,
50+
dispatch_uid='htk_organization_invitation_created',
51+
)

apps/organizations/models.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,21 @@ def status(self) -> str:
317317

318318
return status
319319

320+
##
321+
# Notifications
322+
323+
def build_notification_message__created(self):
324+
"""Builds a message that will be displayed as an internal Slack notification
325+
when this invitation object is created.
326+
"""
327+
msg = '{invited_by_name} ({invited_by_username}) has sent an invitation for organization {organization_name} to {email}'.format(
328+
invited_by_name=self.invited_by.profile.get_full_name(),
329+
invited_by_username=self.invited_by.username,
330+
organization_name=self.organization.name,
331+
email=self.email,
332+
)
333+
return msg
334+
320335

321336
class BaseAbstractOrganizationTeam(HtkBaseModel):
322337
name = models.CharField(max_length=128)

0 commit comments

Comments
 (0)