-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathorg_invite_api_client.py
More file actions
59 lines (45 loc) · 2.31 KB
/
org_invite_api_client.py
File metadata and controls
59 lines (45 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from contextvars import ContextVar
from flask import current_app
from notifications_utils.local_vars import LazyLocalGetter
from werkzeug.local import LocalProxy
from app import memo_resetters
from app.notify_client import NotifyAdminAPIClient, _attach_current_user, api_client_request_session
class OrgInviteApiClient(NotifyAdminAPIClient):
def __init__(self, app, *args, **kwargs):
super().__init__(app, *args, **kwargs)
self.admin_url = app.config["ADMIN_BASE_URL"]
def create_invite(self, invite_from_id, org_id, email_address, permissions: list[str]):
data = {
"email_address": email_address,
"invited_by": invite_from_id,
"invite_link_host": self.admin_url,
"permissions": permissions,
}
data = _attach_current_user(data)
resp = self.post(url=f"/organisation/{org_id}/invite", data=data)
return resp["data"]
def get_invites_for_organisation(self, org_id):
endpoint = f"/organisation/{org_id}/invite"
resp = self.get(endpoint)
return resp["data"]
def get_invited_user_for_org(self, org_id, invited_org_user_id):
return self.get(f"/organisation/{org_id}/invite/{invited_org_user_id}")["data"]
def get_invited_user(self, invited_user_id):
return self.get(f"/invite/organisation/{invited_user_id}")["data"]
def check_token(self, token):
resp = self.get(url=f"/invite/organisation/check/{token}")
return resp["data"]
def cancel_invited_user(self, org_id, invited_user_id):
data = {"status": "cancelled"}
data = _attach_current_user(data)
self.post(url=f"/organisation/{org_id}/invite/{invited_user_id}", data=data)
def accept_invite(self, org_id, invited_user_id):
data = {"status": "accepted"}
self.post(url=f"/organisation/{org_id}/invite/{invited_user_id}", data=data)
_org_invite_api_client_context_var: ContextVar[OrgInviteApiClient] = ContextVar("org_invite_api_client")
get_org_invite_api_client: LazyLocalGetter[OrgInviteApiClient] = LazyLocalGetter(
_org_invite_api_client_context_var,
lambda: OrgInviteApiClient(current_app, request_session=api_client_request_session),
)
memo_resetters.append(lambda: get_org_invite_api_client.clear())
org_invite_api_client = LocalProxy(get_org_invite_api_client)