[WIP] Add call to api to update invitation to accepted.

When flow for invited user is complete, that is
when user has been added to service, update invitation
to accepted
This commit is contained in:
Adam Shimali
2016-03-03 17:53:16 +00:00
parent b62312ef64
commit a974e6e157
6 changed files with 76 additions and 39 deletions

View File

@@ -12,7 +12,10 @@ from app.main.dao import services_dao, users_dao
from app.main.forms import AddServiceForm
from app.notify_client.models import InvitedUser
from app import user_api_client
from app import (
invite_api_client,
user_api_client
)
@main.route("/add-service", methods=['GET', 'POST'])
@@ -25,7 +28,9 @@ def add_service():
# if invited user add to service and redirect to dashboard
user = users_dao.get_user_by_id(session['user_id'])
service_id = invited_user['service']
user_api_client.add_user_to_service(service_id, user.id, invitation)
user_api_client.add_user_to_service(service_id, user.id, invitation.permissions)
invite_api_client.accept_invite(service_id, invitation.id)
session.pop('invited_user', None)
return redirect(url_for('main.service_dashboard', service_id=service_id))

View File

@@ -1,9 +1,12 @@
from flask import (
redirect,
url_for,
session
session,
abort
)
from notifications_python_client.errors import HTTPError
from app.main import main
from app import (
invite_api_client,
@@ -14,14 +17,23 @@ from app import (
@main.route("/invitation/<token>")
def accept_invite(token):
invited_user = invite_api_client.accept_invite(token)
existing_user = user_api_client.get_user_by_email(invited_user.email_address)
try:
if existing_user:
user_api_client.add_user_to_service(invited_user.service,
existing_user.id,
invited_user)
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
else:
session['invited_user'] = invited_user.serialize()
return redirect(url_for('main.register_from_invite'))
invited_user = invite_api_client.check_token(token)
existing_user = user_api_client.get_user_by_email(invited_user.email_address)
if existing_user:
user_api_client.add_user_to_service(invited_user.service,
existing_user.id,
invited_user.permissions)
invite_api_client.accept_invite(invited_user.service, invited_user.id)
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
else:
session['invited_user'] = invited_user.serialize()
return redirect(url_for('main.register_from_invite'))
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e

View File

@@ -31,7 +31,7 @@ class InviteApiClient(BaseAPIClient):
invited_users = self._get_invited_users(invites)
return invited_users
def accept_invite(self, token):
def check_token(self, token):
resp = self.get(url='/invite/{}'.format(token))
return InvitedUser(**resp['data'])
@@ -40,6 +40,11 @@ class InviteApiClient(BaseAPIClient):
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
data=data)
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)
def _get_invited_users(self, invites):
invited_users = []
for invite in invites:

View File

@@ -94,9 +94,9 @@ class UserApiClient(BaseAPIClient):
resp = self.get(endpoint)
return [User(data) for data in resp['data']]
def add_user_to_service(self, service_id, user_id, invited_user):
def add_user_to_service(self, service_id, user_id, permissions):
endpoint = '/service/{}/users/{}'.format(service_id, user_id)
resp = self.post(endpoint, data=invited_user.serialize(permissions_as_string=True))
resp = self.post(endpoint, data={'permissions': permissions})
return User(resp['data'], max_failed_login_count=self.max_failed_login_count)
def set_user_permissions(self, user_id, service_id, permissions):