mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04:00
Added choose_service using services_dao.
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
|
from flask import url_for
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from client.errors import HTTPError, InvalidResponse
|
from client.errors import HTTPError, InvalidResponse
|
||||||
from sqlalchemy.orm import load_only
|
from sqlalchemy.orm import load_only
|
||||||
from flask.ext.login import current_user
|
from flask.ext.login import current_user
|
||||||
from app import (db, notifications_api_client)
|
from app import (db, notifications_api_client)
|
||||||
|
from app.main.utils import BrowsableItem
|
||||||
|
|
||||||
|
|
||||||
def insert_new_service(service_name, user_id):
|
def insert_new_service(service_name, user_id):
|
||||||
@@ -18,6 +20,10 @@ def get_service_by_id(id_):
|
|||||||
return notifications_api_client.get_service(id_)
|
return notifications_api_client.get_service(id_)
|
||||||
|
|
||||||
|
|
||||||
|
def get_services():
|
||||||
|
return notifications_api_client.get_services()
|
||||||
|
|
||||||
|
|
||||||
def unrestrict_service(service_id):
|
def unrestrict_service(service_id):
|
||||||
resp = notifications_api_client.get_service(service_id)
|
resp = notifications_api_client.get_service(service_id)
|
||||||
if resp['data']['restricted']:
|
if resp['data']['restricted']:
|
||||||
@@ -56,3 +62,22 @@ def find_service_by_service_name(service_name):
|
|||||||
def find_all_service_names():
|
def find_all_service_names():
|
||||||
resp = notifications_api_client.get_services()
|
resp = notifications_api_client.get_services()
|
||||||
return [x['name'] for x in resp['data']]
|
return [x['name'] for x in resp['data']]
|
||||||
|
|
||||||
|
|
||||||
|
class ServicesBrowsableItem(BrowsableItem):
|
||||||
|
|
||||||
|
@property
|
||||||
|
def title(self):
|
||||||
|
return self._item['name']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def link(self):
|
||||||
|
return url_for('main.service_dashboard', service_id=self._item['id'])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def destructive(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hint(self):
|
||||||
|
return "Some service hint here"
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
|
||||||
|
class BrowsableItem(object):
|
||||||
|
"""
|
||||||
|
Maps for the template browse-list.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, item, *args, **kwargs):
|
||||||
|
self._item = item
|
||||||
|
super(BrowsableItem, self).__init__()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def title(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
def link(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hint(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
def destructive(self):
|
||||||
|
pass
|
||||||
@@ -1,9 +1,18 @@
|
|||||||
from flask import render_template
|
from flask import (render_template, redirect, url_for)
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
from app.main.dao import services_dao
|
||||||
from app.main import main
|
from app.main import main
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services")
|
@main.route("/services")
|
||||||
@login_required
|
@login_required
|
||||||
def choose_service():
|
def choose_service():
|
||||||
return render_template('views/choose-service.html')
|
services = services_dao.get_services()
|
||||||
|
# If there is only one service redirect
|
||||||
|
# to the service dashboard.
|
||||||
|
if len(services['data']) == 1:
|
||||||
|
return redirect(url_for(
|
||||||
|
'main.service_dashboard', service_id=services['data'][0]['id']))
|
||||||
|
return render_template(
|
||||||
|
'views/choose-service.html',
|
||||||
|
services=[services_dao.ServicesBrowsableItem(x) for x in services['data']])
|
||||||
|
|||||||
@@ -11,16 +11,7 @@
|
|||||||
Choose service
|
Choose service
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
{{ browse_list([
|
{{ browse_list(services) }}
|
||||||
{
|
|
||||||
'title': 'MOT Reminders',
|
|
||||||
'link': url_for('.service_dashboard', service_id=123)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': 'Vehicle Tax',
|
|
||||||
'link': url_for('.service_dashboard', service_id=123)
|
|
||||||
},
|
|
||||||
]) }}
|
|
||||||
{{ browse_list([
|
{{ browse_list([
|
||||||
{
|
{
|
||||||
'title': 'Add a new service…',
|
'title': 'Add a new service…',
|
||||||
|
|||||||
@@ -1,15 +1,23 @@
|
|||||||
from tests import create_test_user
|
from tests import create_test_user
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
from app.models import User
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_choose_services_page(app_,
|
def test_should_show_choose_services_page(app_,
|
||||||
db_,
|
db_,
|
||||||
db_session,
|
db_session,
|
||||||
active_user):
|
active_user,
|
||||||
|
mock_get_services):
|
||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
with app_.test_client() as client:
|
with app_.test_client() as client:
|
||||||
client.login(active_user)
|
user = User.query.first()
|
||||||
|
client.login(user)
|
||||||
response = client.get(url_for('main.choose_service'))
|
response = client.get(url_for('main.choose_service'))
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert 'Choose service' in response.get_data(as_text=True)
|
resp_data = response.get_data(as_text=True)
|
||||||
|
assert 'Choose service' in resp_data
|
||||||
|
services = mock_get_services.side_effect()
|
||||||
|
assert mock_get_services.called
|
||||||
|
assert services['data'][0]['name'] in resp_data
|
||||||
|
assert services['data'][1]['name'] in resp_data
|
||||||
|
|||||||
Reference in New Issue
Block a user