5
5
6
6
import slacker
7
7
from django .conf import settings
8
+ from django .core .mail import send_mail
8
9
from members .models import Member
9
10
from requests .exceptions import RequestException
10
11
from requests .sessions import Session
@@ -30,8 +31,17 @@ def get_slack_users_simple(self, slack, exclude_api_user=True):
30
31
emails .append ((member ['id' ], member ['name' ], member ['profile' ]['email' ]))
31
32
return emails
32
33
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
+
33
43
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
35
45
deactivation via API works only on paid tiers"""
36
46
if not api_configured ():
37
47
raise RuntimeError ("Slack API not configured" )
@@ -43,6 +53,10 @@ def sync_members(self, autodeactivate=False, resend=True):
43
53
44
54
while add_members :
45
55
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
46
60
try :
47
61
resp = slack .users .admin .invite (member .email , resend = resend )
48
62
if 'ok' not in resp .body or not resp .body ['ok' ]:
0 commit comments