2016-02-26 13:07:35 +00:00
|
|
|
|
|
|
|
|
from notifications_python_client.base import BaseAPIClient
|
2016-04-15 11:53:39 +01:00
|
|
|
|
|
|
|
|
from app.notify_client import _attach_current_user
|
2016-02-29 17:35:21 +00:00
|
|
|
from app.notify_client.models import InvitedUser
|
2016-02-26 13:07:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class InviteApiClient(BaseAPIClient):
|
|
|
|
|
def __init__(self, base_url=None, client_id=None, secret=None):
|
|
|
|
|
super(self.__class__, self).__init__(base_url=base_url or 'base_url',
|
|
|
|
|
client_id=client_id or 'client_id',
|
|
|
|
|
secret=secret or 'secret')
|
|
|
|
|
|
|
|
|
|
def init_app(self, app):
|
|
|
|
|
self.base_url = app.config['API_HOST_NAME']
|
|
|
|
|
self.client_id = app.config['ADMIN_CLIENT_USER_NAME']
|
|
|
|
|
self.secret = app.config['ADMIN_CLIENT_SECRET']
|
|
|
|
|
|
2016-02-29 11:03:35 +00:00
|
|
|
def create_invite(self, invite_from_id, service_id, email_address, permissions):
|
2016-02-26 13:07:35 +00:00
|
|
|
data = {
|
|
|
|
|
'service': str(service_id),
|
|
|
|
|
'email_address': email_address,
|
2016-02-29 11:03:35 +00:00
|
|
|
'from_user': invite_from_id,
|
|
|
|
|
'permissions': permissions
|
2016-02-26 13:07:35 +00:00
|
|
|
}
|
2016-04-15 11:08:19 +01:00
|
|
|
_attach_current_user(data)
|
2016-02-26 13:07:35 +00:00
|
|
|
resp = self.post(url='/service/{}/invite'.format(service_id), data=data)
|
2016-02-29 17:35:21 +00:00
|
|
|
return InvitedUser(**resp['data'])
|
2016-02-26 15:33:17 +00:00
|
|
|
|
|
|
|
|
def get_invites_for_service(self, service_id):
|
|
|
|
|
endpoint = '/service/{}/invite'.format(service_id)
|
|
|
|
|
resp = self.get(endpoint)
|
2016-02-29 17:35:21 +00:00
|
|
|
invites = resp['data']
|
2016-03-01 18:01:20 +00:00
|
|
|
invited_users = self._get_invited_users(invites)
|
2016-02-29 17:35:21 +00:00
|
|
|
return invited_users
|
|
|
|
|
|
2016-03-03 17:53:16 +00:00
|
|
|
def check_token(self, token):
|
2016-02-29 17:35:21 +00:00
|
|
|
resp = self.get(url='/invite/{}'.format(token))
|
|
|
|
|
return InvitedUser(**resp['data'])
|
2016-03-01 16:12:26 +00:00
|
|
|
|
|
|
|
|
def cancel_invited_user(self, service_id, invited_user_id):
|
|
|
|
|
data = {'status': 'cancelled'}
|
2016-04-15 11:08:19 +01:00
|
|
|
_attach_current_user(data)
|
2016-03-01 17:56:39 +00:00
|
|
|
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
|
|
|
|
|
data=data)
|
2016-02-29 17:35:21 +00:00
|
|
|
|
2016-03-03 17:53:16 +00:00
|
|
|
def accept_invite(self, service_id, invited_user_id):
|
|
|
|
|
data = {'status': 'accepted'}
|
|
|
|
|
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
|
|
|
|
|
data=data)
|
|
|
|
|
|
2016-03-01 18:01:20 +00:00
|
|
|
def _get_invited_users(self, invites):
|
|
|
|
|
invited_users = []
|
|
|
|
|
for invite in invites:
|
|
|
|
|
invited_user = InvitedUser(**invite)
|
|
|
|
|
invited_users.append(invited_user)
|
|
|
|
|
return invited_users
|