Skip to content

Commit 09eda85

Browse files
committed
Add optional invite-link handling
1 parent 3dc02fd commit 09eda85

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

project/config/settings/common.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@
273273
HOLVI_NOTIFICATION_INTERVAL_DAYS = env('HOLVI_NOTIFICATION_INTERVAL_DAYS', default=7)
274274
SLACK_APIKEY = env('SLACK_APIKEY', default=None)
275275
SLACK_API_USERNAME = env('SLACK_API_USERNAME', default=None)
276+
SLACK_INVITE_LINK = env('SLACK_INVITE_LINK', default=None)
276277

277278
REST_FRAMEWORK = {
278279
'DEFAULT_AUTHENTICATION_CLASSES': [

project/slacksync/membersync.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import slacker
77
from django.conf import settings
8+
from django.core.mail import send_mail
89
from members.models import Member
910
from requests.exceptions import RequestException
1011
from requests.sessions import Session
@@ -30,8 +31,17 @@ def get_slack_users_simple(self, slack, exclude_api_user=True):
3031
emails.append((member['id'], member['name'], member['profile']['email']))
3132
return emails
3233

34+
def email_slack_link(self, member):
35+
send_mail(
36+
"Slack invite to {}".format(settings.ORGANIZATION_NAME),
37+
"Click on the link to continue\n\n{}\n".format(settings.SLACK_INVITE_LINK),
38+
settings.DEFAULT_FROM_EMAIL,
39+
[member.email],
40+
fail_silently=True
41+
)
42+
3343
def sync_members(self, autodeactivate=False, resend=True):
34-
"""Sync members, NOTE: https://github.com/ErikKalkoken/slackApiDoc/blob/master/users.admin.setInactive.md says
44+
"""Sync members, NOTE: https://github.com/ErikKalkoken/slackApiDoc/blob/master/users.admin.setInactive.md says
3545
deactivation via API works only on paid tiers"""
3646
if not api_configured():
3747
raise RuntimeError("Slack API not configured")
@@ -43,6 +53,10 @@ def sync_members(self, autodeactivate=False, resend=True):
4353

4454
while add_members:
4555
member = add_members.popleft()
56+
# If we have configured invite-link use it instead of API (which might hit the "too many invites" -error
57+
if settings.SLACK_INVITE_LINK:
58+
self.email_slack_link(member)
59+
continue
4660
try:
4761
resp = slack.users.admin.invite(member.email, resend=resend)
4862
if 'ok' not in resp.body or not resp.body['ok']:

0 commit comments

Comments
 (0)