Backend handling for task order upload
- Move task_orders.edit rendering to function - Construct task_orders.update form route correctly in template
This commit is contained in:
parent
fb430e76e9
commit
b0f47bc3ff
@ -8,25 +8,32 @@ from atst.models.permissions import Permissions
|
|||||||
from atst.utils.flash import formatted_flash as flash
|
from atst.utils.flash import formatted_flash as flash
|
||||||
|
|
||||||
|
|
||||||
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new")
|
def render_task_orders_edit(portfolio_id, task_order_id=None):
|
||||||
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/<task_order_id>/edit")
|
render_args = {}
|
||||||
@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form")
|
|
||||||
def edit(portfolio_id, task_order_id=None):
|
|
||||||
form = None
|
|
||||||
|
|
||||||
if task_order_id:
|
if task_order_id:
|
||||||
task_order = TaskOrders.get(task_order_id)
|
task_order = TaskOrders.get(task_order_id)
|
||||||
form = TaskOrderForm(number=task_order.number)
|
render_args["form"] = TaskOrderForm(
|
||||||
|
number=task_order.number, pdf=task_order.pdf
|
||||||
|
)
|
||||||
|
render_args["task_order_id"] = task_order_id
|
||||||
else:
|
else:
|
||||||
form = TaskOrderForm()
|
render_args["form"] = TaskOrderForm()
|
||||||
|
|
||||||
cancel_url = (
|
render_args["cancel_url"] = (
|
||||||
http_request.referrer
|
http_request.referrer
|
||||||
if http_request.referrer
|
if http_request.referrer
|
||||||
else url_for("task_orders.portfolio_funding", portfolio_id=portfolio_id)
|
else url_for("task_orders.portfolio_funding", portfolio_id=portfolio_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
return render_template("task_orders/edit.html", form=form, cancel_url=cancel_url)
|
return render_template("task_orders/edit.html", **render_args)
|
||||||
|
|
||||||
|
|
||||||
|
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new")
|
||||||
|
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/<task_order_id>/edit")
|
||||||
|
@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form")
|
||||||
|
def edit(portfolio_id, task_order_id=None):
|
||||||
|
return render_task_orders_edit(portfolio_id, task_order_id)
|
||||||
|
|
||||||
|
|
||||||
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new", methods=["POST"])
|
@task_orders_bp.route("/portfolios/<portfolio_id>/task_orders/new", methods=["POST"])
|
||||||
@ -35,7 +42,8 @@ def edit(portfolio_id, task_order_id=None):
|
|||||||
)
|
)
|
||||||
@user_can(Permissions.CREATE_TASK_ORDER, message="create new task order")
|
@user_can(Permissions.CREATE_TASK_ORDER, message="create new task order")
|
||||||
def update(portfolio_id, task_order_id=None):
|
def update(portfolio_id, task_order_id=None):
|
||||||
form_data = http_request.form
|
form_data = {**http_request.form, **http_request.files}
|
||||||
|
|
||||||
form = TaskOrderForm(form_data)
|
form = TaskOrderForm(form_data)
|
||||||
|
|
||||||
if form.validate():
|
if form.validate():
|
||||||
@ -56,4 +64,4 @@ def update(portfolio_id, task_order_id=None):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
flash("form_errors")
|
flash("form_errors")
|
||||||
return render_template("task_orders/edit.html", form=form)
|
return render_task_orders_edit(portfolio_id, task_order_id), 400
|
||||||
|
@ -12,7 +12,12 @@
|
|||||||
{% include "portfolios/header.html" %}
|
{% include "portfolios/header.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<base-form inline-template>
|
<base-form inline-template>
|
||||||
<form id="new-task-order" action='{{ url_for("task_orders.update", portfolio_id=portfolio.id) }}' method="POST" autocomplete="off" enctype="multipart/form-data">
|
{% if task_order_id %}
|
||||||
|
{% set action = url_for("task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order_id) %}
|
||||||
|
{% else %}
|
||||||
|
{% set action = url_for("task_orders.update", portfolio_id=portfolio.id) %}
|
||||||
|
{% endif %}
|
||||||
|
<form id="new-task-order" action='{{ action }}' method="POST" autocomplete="off" enctype="multipart/form-data">
|
||||||
{{ form.csrf_token }}
|
{{ form.csrf_token }}
|
||||||
<div class="panel__content">
|
<div class="panel__content">
|
||||||
<!-- TODO: implement save bar with component -->
|
<!-- TODO: implement save bar with component -->
|
||||||
|
@ -3,7 +3,7 @@ from flask import url_for
|
|||||||
|
|
||||||
from atst.domain.permission_sets import PermissionSets
|
from atst.domain.permission_sets import PermissionSets
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.models.attachment import Attachment
|
from atst.models import Attachment, TaskOrder
|
||||||
from atst.utils.localization import translate
|
from atst.utils.localization import translate
|
||||||
|
|
||||||
from tests.factories import (
|
from tests.factories import (
|
||||||
@ -39,13 +39,15 @@ def test_task_orders_new(client, user_session, portfolio):
|
|||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
def test_task_orders_create(client, user_session, portfolio):
|
def test_task_orders_create(client, user_session, portfolio, pdf_upload, session):
|
||||||
user_session(portfolio.owner)
|
user_session(portfolio.owner)
|
||||||
|
data = {"number": "0123456789", "pdf": pdf_upload}
|
||||||
response = client.post(
|
response = client.post(
|
||||||
url_for("task_orders.update", portfolio_id=portfolio.id),
|
url_for("task_orders.update", portfolio_id=portfolio.id), data=data
|
||||||
data={"number": "0123456789"},
|
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
|
task_order = session.query(TaskOrder).filter_by(number=data["number"]).one()
|
||||||
|
assert task_order.pdf.filename == pdf_upload.filename
|
||||||
|
|
||||||
|
|
||||||
def test_task_orders_create_invalid_data(client, user_session, portfolio):
|
def test_task_orders_create_invalid_data(client, user_session, portfolio):
|
||||||
@ -54,17 +56,53 @@ def test_task_orders_create_invalid_data(client, user_session, portfolio):
|
|||||||
response = client.post(
|
response = client.post(
|
||||||
url_for("task_orders.update", portfolio_id=portfolio.id), data={"number": ""}
|
url_for("task_orders.update", portfolio_id=portfolio.id), data={"number": ""}
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 400
|
||||||
assert num_task_orders == len(portfolio.task_orders)
|
assert num_task_orders == len(portfolio.task_orders)
|
||||||
assert "There were some errors" in response.data.decode()
|
assert "There were some errors" in response.data.decode()
|
||||||
|
|
||||||
|
|
||||||
def test_task_orders_edit():
|
def test_task_orders_update(client, user_session, portfolio, pdf_upload):
|
||||||
pass
|
user_session(portfolio.owner)
|
||||||
|
data = {"number": "0123456789", "pdf": pdf_upload}
|
||||||
|
task_order = TaskOrderFactory.create(number="0987654321")
|
||||||
|
response = client.post(
|
||||||
|
url_for(
|
||||||
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
||||||
|
),
|
||||||
|
data=data,
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert task_order.number == data["number"]
|
||||||
|
|
||||||
|
|
||||||
def test_task_orders_update():
|
def test_task_orders_update_pdf(
|
||||||
pass
|
client, user_session, portfolio, pdf_upload, pdf_upload2
|
||||||
|
):
|
||||||
|
user_session(portfolio.owner)
|
||||||
|
task_order = TaskOrderFactory.create(pdf=pdf_upload)
|
||||||
|
data = {"number": "0123456789", "pdf": pdf_upload2}
|
||||||
|
response = client.post(
|
||||||
|
url_for(
|
||||||
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
||||||
|
),
|
||||||
|
data=data,
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert task_order.pdf.filename == pdf_upload2.filename
|
||||||
|
|
||||||
|
|
||||||
|
def test_task_orders_update_delete_pdf(client, user_session, portfolio, pdf_upload):
|
||||||
|
user_session(portfolio.owner)
|
||||||
|
task_order = TaskOrderFactory.create(pdf=pdf_upload)
|
||||||
|
data = {"number": "0123456789", "pdf": None}
|
||||||
|
response = client.post(
|
||||||
|
url_for(
|
||||||
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
||||||
|
),
|
||||||
|
data=data,
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert task_order.pdf is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip(reason="Update after implementing new TO form")
|
@pytest.mark.skip(reason="Update after implementing new TO form")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user