Add additional tests and refactor

This commit is contained in:
Imdad Ahad
2016-10-28 10:47:32 +01:00
parent 5ecdbb8596
commit 2676ee9bcf
3 changed files with 43 additions and 35 deletions

View File

@@ -1,5 +1,3 @@
import re
from flask import (
render_template,
redirect,
@@ -27,34 +25,49 @@ from app import (
from app.utils import (
email_safe,
user_in_whitelist
is_gov_user
)
def _add_invited_user_to_service(invited_user):
invitation = InvitedUser(**invited_user)
# if invited user add to service and redirect to dashboard
user = user_api_client.get_user(session['user_id'])
service_id = invited_user['service']
user_api_client.add_user_to_service(service_id, user.id, invitation.permissions)
invite_api_client.accept_invite(service_id, invitation.id)
return service_id
def _create_service(service_name, email_from):
service_id = service_api_client.create_service(service_name=service_name,
active=False,
message_limit=current_app.config['DEFAULT_SERVICE_LIMIT'],
restricted=True,
user_id=session['user_id'],
email_from=email_from)
session['service_id'] = service_id
return service_id
@main.route("/add-service", methods=['GET', 'POST'])
@login_required
def add_service():
invited_user = session.get('invited_user')
if invited_user:
invitation = InvitedUser(**invited_user)
# if invited user add to service and redirect to dashboard
user = user_api_client.get_user(session['user_id'])
service_id = invited_user['service']
user_api_client.add_user_to_service(service_id, user.id, invitation.permissions)
invite_api_client.accept_invite(service_id, invitation.id)
service_id = _add_invited_user_to_service(invited_user)
return redirect(url_for('main.service_dashboard', service_id=service_id))
if not is_gov_user(current_user.email_address):
abort(403)
form = AddServiceForm(service_api_client.find_all_service_email_from)
heading = 'Which service do you want to set up notifications for?'
if form.validate_on_submit():
email_from = email_safe(form.name.data)
service_id = service_api_client.create_service(service_name=form.name.data,
active=False,
message_limit=current_app.config['DEFAULT_SERVICE_LIMIT'],
restricted=True,
user_id=session['user_id'],
email_from=email_from)
session['service_id'] = service_id
service_name = form.name.data
service_id = _create_service(service_name, email_from)
if (len(service_api_client.get_services({'user_id': session['user_id']}).get('data', [])) > 1):
return redirect(url_for('main.service_dashboard', service_id=service_id))
@@ -73,11 +86,8 @@ def add_service():
help=1
))
else:
if not user_in_whitelist(current_user.email_address):
abort(403)
else:
return render_template(
'views/add-service.html',
form=form,
heading=heading
)
return render_template(
'views/add-service.html',
form=form,
heading=heading
)

View File

@@ -1,11 +1,9 @@
import re
from flask import (current_app, render_template, redirect, url_for, session)
from flask import (render_template, redirect, url_for, session)
from flask_login import login_required, current_user
from app.main import main
from app import service_api_client
from app.notify_client.service_api_client import ServicesBrowsableItem
from app.utils import user_in_whitelist
from app.utils import is_gov_user
@main.route("/services")
@@ -15,7 +13,7 @@ def choose_service():
'views/choose-service.html',
services=[ServicesBrowsableItem(x) for x in
service_api_client.get_services({'user_id': current_user.id})['data']],
can_add_service=user_in_whitelist(current_user.email_address)
can_add_service=is_gov_user(current_user.email_address)
)

View File

@@ -13,12 +13,12 @@
{{ browse_list(services) }}
{% if can_add_service %}
{{ browse_list([
{
'title': 'Add a new service…',
'link': url_for('.add_service')
},
]) }}
{{ browse_list([
{
'title': 'Add a new service…',
'link': url_for('.add_service')
},
]) }}
{% endif %}