Add in templates for ccpo user form and sketch out route functions

This commit is contained in:
leigh-mil 2019-08-07 14:53:30 -04:00
parent 8420a78392
commit 01ba73ef42
5 changed files with 107 additions and 1 deletions

13
atst/forms/ccpo_user.py Normal file
View File

@ -0,0 +1,13 @@
from flask_wtf import FlaskForm
from wtforms.validators import Required, Length
from wtforms.fields import StringField
from atst.forms.validators import IsNumber
from atst.utils.localization import translate
class CCPOUserForm(FlaskForm):
dod_id = StringField(
translate("forms.new_member.dod_id_label"),
validators=[Required(), Length(min=10), IsNumber()],
)

View File

@ -21,8 +21,10 @@ from atst.domain.authnid import AuthenticationContext
from atst.domain.audit_log import AuditLog from atst.domain.audit_log import AuditLog
from atst.domain.auth import logout as _logout from atst.domain.auth import logout as _logout
from atst.domain.common import Paginator from atst.domain.common import Paginator
from atst.domain.exceptions import NotFoundError
from atst.domain.portfolios import Portfolios from atst.domain.portfolios import Portfolios
from atst.domain.authz.decorator import user_can_access_decorator as user_can from atst.domain.authz.decorator import user_can_access_decorator as user_can
from atst.forms.ccpo_user import CCPOUserForm
from atst.models.permissions import Permissions from atst.models.permissions import Permissions
from atst.utils.context_processors import atat as atat_context_processor from atst.utils.context_processors import atat as atat_context_processor
from atst.utils.flash import formatted_flash as flash from atst.utils.flash import formatted_flash as flash
@ -141,6 +143,35 @@ def ccpo_users():
return render_template("ccpo/users.html", users=users) return render_template("ccpo/users.html", users=users)
@bp.route("/ccpo-users/new")
@user_can(Permissions.CREATE_CCPO_USER, message="create ccpo user")
def add_new_ccpo_user():
form = CCPOUserForm()
return render_template("ccpo/add_user.html", form=form)
@bp.route("/ccpo-users/new", methods=["POST"])
@user_can(Permissions.CREATE_CCPO_USER, message="create ccpo user")
def submit_add_new_ccpo_user():
try:
new_user = Users.get_by_dod_id(request.form['dod_id'])
form = CCPOUserForm(obj=new_user)
except NotFoundError:
new_user = None
form = CCPOUserForm()
return render_template("ccpo/confirm_user.html", new_user=new_user, form=form)
@bp.route("/ccpo-users/confirm-new", methods=["POST"])
@user_can(Permissions.CREATE_CCPO_USER, message="create ccpo user")
def confirm_new_ccpo_user():
new_user = Users.get_by_dod_id(request.form['dod_id'])
# give new perms here
# flash w/ success message
return redirect(url_for("atst.ccpo_users"))
@bp.route("/about") @bp.route("/about")
def about(): def about():
return render_template("about.html") return render_template("about.html")

View File

@ -0,0 +1,27 @@
{% extends "base.html" %}
{% from "components/text_input.html" import TextInput %}
{% block content %}
{% set ccpo_user_form = "add-ccpo-user-form" %}
<form id="{{ ccpo_user_form }}" action="{{ url_for('atst.submit_add_new_ccpo_user') }}" method="POST">
{{ form.csrf_token }}
<div class="modal__form--header">
<h1>Add new CCPO user</h1>
</div>
<div class='form-row'>
<div class='form-col'>
{{ TextInput(form.dod_id, validation='dodId') }}
</div>
</div>
<div class='action-group'>
<input
type='submit'
v-bind:disabled="invalid"
class='action-group__action usa-button'
value='Next'>
<a class='action-group__action icon-link icon-link--default' href="{{ url_for('atst.ccpo_users') }}">{{ "common.cancel" | translate }}</a>
</div>
</form>
{% endblock %}

View File

@ -0,0 +1,35 @@
{% extends "base.html" %}
{% from "components/alert.html" import Alert %}
{% from "components/text_input.html" import TextInput %}
{% block content %}
{% set ccpo_user_form = "add-ccpo-user-form" %}
{% call Alert('Confirm new CCPO user') %}
<form id="{{ ccpo_user_form }}" action="{{ url_for('atst.confirm_new_ccpo_user') }}" method="POST">
{{ form.csrf_token }}
<input type="hidden" name="dod_id" value="{{ form.dod_id.data }}">
<div>
<p>
Please confirm that the user details below match the user being given CCPO permissions.
</p>
<p>
{{ new_user.full_name }}
</p>
<p>
{{ new_user.email }}
</p>
</div>
<div class='action-group'>
<input
type='submit'
v-bind:disabled="invalid"
class='action-group__action usa-button'
value='Confirm and Add User'>
<a class='action-group__action icon-link icon-link--default' href="{{ url_for('atst.ccpo_users') }}">{{ "common.cancel" | translate }}</a>
</div>
</form>
{% endcall %}
{% endblock %}

View File

@ -28,7 +28,7 @@
</div> </div>
{% if user_can(permissions.CREATE_CCPO_USER) %} {% if user_can(permissions.CREATE_CCPO_USER) %}
<a class="icon-link modal-link" v-on:click="openModal()"> <a class="icon-link modal-link" href="{{ url_for('atst.add_new_ccpo_user')}}">
Add new CCPO user {{ Icon("plus") }} Add new CCPO user {{ Icon("plus") }}
</a> </a>
{% endif %} {% endif %}