mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-01 16:11:46 -04:00
add template folder form
This commit is contained in:
committed by
Alexey Bezhan
parent
7cbf5de240
commit
1ecf360e7f
@@ -1100,3 +1100,7 @@ class ReturnedLettersForm(StripWhitespaceForm):
|
||||
DataRequired(message="Can’t be empty"),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class TemplateFolderForm(StripWhitespaceForm):
|
||||
name = StringField('Folder name', validators=[DataRequired(message='Can’t be empty')])
|
||||
|
||||
@@ -14,6 +14,7 @@ from app import (
|
||||
service_api_client,
|
||||
template_statistics_client,
|
||||
user_api_client,
|
||||
template_folder_api_client
|
||||
)
|
||||
from app.main import main
|
||||
from app.main.forms import (
|
||||
@@ -23,6 +24,7 @@ from app.main.forms import (
|
||||
SearchTemplatesForm,
|
||||
SetTemplateSenderForm,
|
||||
SMSTemplateForm,
|
||||
TemplateFolderForm
|
||||
)
|
||||
from app.main.views.send import get_example_csv_rows, get_sender_details
|
||||
from app.models.service import Service
|
||||
@@ -290,18 +292,23 @@ def action_blocked(service_id, notification_type, return_to, template_id):
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/templates/add-folder", methods=['GET', 'POST'])
|
||||
def add_folder(service_id):
|
||||
def add_template_folder(service_id):
|
||||
if not current_service.has_permission('edit_folders'):
|
||||
abort(403)
|
||||
|
||||
form = NewFolderForm()
|
||||
form = TemplateFolderForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
folder_api_client.create_template_folder(form.name.data, current_service.id, parent_id=None)
|
||||
template_folder_api_client.create_template_folder(current_service.id, name=form.name.data, parent_id=None)
|
||||
return redirect(
|
||||
url_for('.view_templates', service_id=service_id)
|
||||
url_for('.choose_template', service_id=service_id)
|
||||
)
|
||||
|
||||
return render_template(
|
||||
'views/templates/add-template-folder.html',
|
||||
form=form
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/templates/add-<template_type>", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
|
||||
@@ -8,7 +8,7 @@ from app.notify_client.job_api_client import job_api_client
|
||||
from app.notify_client.organisations_api_client import organisations_client
|
||||
from app.notify_client.service_api_client import service_api_client
|
||||
from app.notify_client.user_api_client import user_api_client
|
||||
from app.notify_client.template_folder_client import template_folder_client
|
||||
from app.notify_client.template_folder_api_client import template_folder_api_client
|
||||
from app.utils import get_default_sms_sender
|
||||
|
||||
|
||||
@@ -256,4 +256,4 @@ class Service():
|
||||
|
||||
@cached_property
|
||||
def template_folders(self):
|
||||
return template_folder_client.get_template_folders(self.id)
|
||||
return template_folder_api_client.get_template_folders(self.id)
|
||||
|
||||
@@ -109,7 +109,7 @@ class HeaderNavigation(Navigation):
|
||||
'add_service',
|
||||
'add_service_template',
|
||||
'add_template_by_type',
|
||||
'add_folder',
|
||||
'add_template_folder',
|
||||
'agreement',
|
||||
'api_callbacks',
|
||||
'api_documentation',
|
||||
@@ -300,7 +300,7 @@ class MainNavigation(Navigation):
|
||||
'action_blocked',
|
||||
'add_service_template',
|
||||
'add_template_by_type',
|
||||
'add_folder',
|
||||
'add_template_folder',
|
||||
'check_messages',
|
||||
'check_notification',
|
||||
'choose_template',
|
||||
@@ -554,7 +554,7 @@ class CaseworkNavigation(Navigation):
|
||||
'add_service',
|
||||
'add_service_template',
|
||||
'add_template_by_type',
|
||||
'add_folder',
|
||||
'add_template_folder',
|
||||
'agreement',
|
||||
'api_callbacks',
|
||||
'api_documentation',
|
||||
@@ -790,7 +790,7 @@ class OrgNavigation(Navigation):
|
||||
'add_service',
|
||||
'add_service_template',
|
||||
'add_template_by_type',
|
||||
'add_folder',
|
||||
'add_template_folder',
|
||||
'agreement',
|
||||
'api_callbacks',
|
||||
'api_documentation',
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
|
||||
20
app/templates/views/templates/add-template-folder.html
Normal file
20
app/templates/views/templates/add-template-folder.html
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
|
||||
{% block service_page_title %}
|
||||
Add a folder
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
<h1 class="heading-large">Add a folder</h1>
|
||||
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form.name) }}
|
||||
{{ page_footer('Save') }}
|
||||
{% endcall %}
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,6 +1,7 @@
|
||||
from flask import url_for
|
||||
|
||||
|
||||
def test_add_folder(
|
||||
def test_add_page_shows_option_for_folder(
|
||||
client_request,
|
||||
service_one,
|
||||
mocker,
|
||||
@@ -26,3 +27,35 @@ def test_add_folder(
|
||||
'Copy of an existing template',
|
||||
'Folder'
|
||||
]
|
||||
|
||||
|
||||
def test_get_add_template_folder_page(client_request, service_one):
|
||||
service_one['permissions'] += ['edit_folders']
|
||||
|
||||
page = client_request.get('main.add_template_folder', service_id=service_one['id'])
|
||||
|
||||
assert page.find('input', attrs={'name': 'name'}) is not None
|
||||
|
||||
|
||||
def test_add_template_folder_page_rejects_if_service_doesnt_have_permission(client_request, service_one):
|
||||
client_request.get('main.add_template_folder', service_id=service_one['id'], _expected_status=403)
|
||||
client_request.post('main.add_template_folder', service_id=service_one['id'], _expected_status=403)
|
||||
|
||||
|
||||
def test_post_add_template_folder_page(client_request, service_one, mocker):
|
||||
mock_create = mocker.patch('app.template_folder_api_client.create_template_folder')
|
||||
|
||||
service_one['permissions'] += ['edit_folders']
|
||||
|
||||
client_request.post(
|
||||
'main.add_template_folder',
|
||||
service_id=service_one['id'],
|
||||
_data={'name': 'foo'},
|
||||
_expected_redirect=url_for(
|
||||
'main.choose_template',
|
||||
service_id=service_one['id'],
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
|
||||
mock_create.assert_called_once_with(service_one['id'], name='foo', parent_id=None)
|
||||
|
||||
Reference in New Issue
Block a user