Add basic KO review form
This commit is contained in:
parent
3358aa99ba
commit
f6a066f983
38
atst/forms/ko_review.py
Normal file
38
atst/forms/ko_review.py
Normal file
@ -0,0 +1,38 @@
|
||||
from flask_wtf.file import FileAllowed
|
||||
|
||||
from wtforms.fields import StringField, TextAreaField, FileField
|
||||
from wtforms.validators import Optional, Length, InputRequired
|
||||
|
||||
from .forms import CacheableForm
|
||||
from .validators import IsNumber
|
||||
|
||||
from atst.utils.localization import translate
|
||||
|
||||
class KOReviewForm(CacheableForm):
|
||||
pdf = FileField(
|
||||
translate("forms.ko_review.pdf_label"),
|
||||
validators=[
|
||||
FileAllowed(["pdf"], translate("forms.ko_review.pdf_description")),
|
||||
InputRequired(),
|
||||
],
|
||||
render_kw={"required": False},
|
||||
)
|
||||
to_number = StringField(
|
||||
translate("forms.ko_review.to_number"),
|
||||
validators=[
|
||||
Length(min=10),
|
||||
IsNumber(),
|
||||
],
|
||||
)
|
||||
loa = StringField(
|
||||
translate("forms.ko_review.loa"),
|
||||
validators=[
|
||||
Length(min=10),
|
||||
IsNumber(),
|
||||
],
|
||||
)
|
||||
custom_clauses = TextAreaField(
|
||||
translate("forms.ko_review.custom_clauses_label"),
|
||||
description=translate("forms.ko_review.custom_clauses_description"),
|
||||
validators=[Optional()]
|
||||
)
|
@ -9,6 +9,7 @@ from atst.domain.task_orders import TaskOrders
|
||||
from atst.domain.portfolios import Portfolios
|
||||
from atst.forms.officers import EditTaskOrderOfficersForm
|
||||
from atst.models.task_order import Status as TaskOrderStatus
|
||||
from atst.forms.ko_review import KOReviewForm
|
||||
|
||||
|
||||
@portfolios_bp.route("/portfolios/<portfolio_id>/task_orders")
|
||||
@ -70,15 +71,27 @@ def view_task_order(portfolio_id, task_order_id):
|
||||
|
||||
|
||||
@portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>/review")
|
||||
def review_task_order(portfolio_id, task_order_id):
|
||||
def review_task_order(portfolio_id, task_order_id, form=None):
|
||||
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
||||
task_order = TaskOrders.get(g.current_user, task_order_id)
|
||||
return render_template(
|
||||
"/portfolios/task_orders/review.html",
|
||||
portfolio=portfolio,
|
||||
task_order=task_order,
|
||||
form=form or KOReviewForm(),
|
||||
)
|
||||
|
||||
@portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>/submit_review", methods=["POST"])
|
||||
def submit_review_task_order(portfolio_id, task_order_id, form=None):
|
||||
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
||||
task_order = TaskOrders.get(g.current_user, task_order_id)
|
||||
form = KOReviewForm(http_request.form)
|
||||
|
||||
if form.validate():
|
||||
return redirect(url_for("task_orders.view_task_order"))
|
||||
else:
|
||||
return review(portfolio.id, task_order.id)
|
||||
|
||||
|
||||
@portfolios_bp.route(
|
||||
"/portfolios/<portfolio_id>/task_order/<task_order_id>/invitations"
|
||||
|
@ -10,6 +10,16 @@
|
||||
|
||||
{% include "fragments/flash.html" %}
|
||||
|
||||
{% block form_action %}
|
||||
{% if task_order_id %}
|
||||
<form method='POST' action="{{ url_for('portfolios.submit_review_task_order', portfolio_id=portfolio_id, task_order_id=task_order_id, form=form) }}" autocomplete="off" enctype="multipart/form-data">
|
||||
{% else %}
|
||||
<form method='GET' action="{{ url_for('portfolios.view_task_order', portfolio_id=portfolio_id, task_order_id=task_order_id) }}" autocomplete="off" enctype="multipart/form-data">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block form %}
|
||||
|
||||
{% macro TOEditLink(screen=1, anchor=None) %}
|
||||
{% if task_order %}
|
||||
{{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }}
|
||||
@ -195,6 +205,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="">Period of Performance Start Date</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="h2">{{ "task_orders.new.review.oversight"| translate }}</div>
|
||||
@ -211,8 +223,11 @@
|
||||
|
||||
<div class="h2">{{ "task_orders.ko_review.task_order_information"| translate }}</div>
|
||||
|
||||
<div class="">Upload a copy of your Task Order document</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
<div class='action-group'>
|
||||
<input type='submit' class='usa-button usa-button-primary' value='Continue' />
|
||||
|
@ -54,6 +54,13 @@ forms:
|
||||
lname_mao_label: Last Name (optional)
|
||||
phone_ext_mao_label: Extension (optional)
|
||||
phone_mao_label: Mission Owner phone number (optional)
|
||||
ko_review:
|
||||
pdf_label: Upload a copy of your Task Order document
|
||||
pdf_description: Upload a PDF of the Task Order that you entered in your system of record for your organization.
|
||||
to_number: Task Order Number
|
||||
loa: Line of Accounting (LOA) \#1
|
||||
custom_clauses_label: Task Order Custom Clauses (optional)
|
||||
custom_clauses_description: This will put a pause on the CSP access once the KO signs until the CCPO reviews that language to make sure it is legal.
|
||||
edit_member:
|
||||
portfolio_role_label: Portfolio Role
|
||||
edit_user:
|
||||
|
Loading…
x
Reference in New Issue
Block a user