commit
e16f12be80
@ -28,7 +28,11 @@ def accept_invitation(token):
|
|||||||
for task_order in invite.portfolio.task_orders:
|
for task_order in invite.portfolio.task_orders:
|
||||||
if g.current_user == task_order.contracting_officer:
|
if g.current_user == task_order.contracting_officer:
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for("task_orders.new", screen=4, task_order_id=task_order.id)
|
url_for(
|
||||||
|
"portfolios.view_task_order",
|
||||||
|
portfolio_id=task_order.portfolio_id,
|
||||||
|
task_order_id=task_order.id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
elif g.current_user == task_order.contracting_officer_representative:
|
elif g.current_user == task_order.contracting_officer_representative:
|
||||||
return redirect(
|
return redirect(
|
||||||
|
@ -120,8 +120,19 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.task-order-next-steps__panel-head {
|
||||||
|
border-bottom: 1px solid black;
|
||||||
|
padding: ($gap * 4) ($gap * 2);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.task-order-next-steps__step {
|
.task-order-next-steps__step {
|
||||||
|
border-bottom: 1px dotted $color-gray;
|
||||||
|
padding: ($gap * 4) ($gap * 2);
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
.task-order-next-steps__icon {
|
.task-order-next-steps__icon {
|
||||||
|
width: 8%;
|
||||||
padding: $gap $gap 0 0;
|
padding: $gap $gap 0 0;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
.complete {
|
.complete {
|
||||||
@ -133,11 +144,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.task-order-next-steps__text {
|
.task-order-next-steps__text {
|
||||||
|
width: 60%;
|
||||||
@include ie-only {
|
@include ie-only {
|
||||||
width: 100%
|
width: 100%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.task-order-next-steps__action {
|
||||||
|
padding: $gap 0 0 $gap;
|
||||||
|
width: 32%;
|
||||||
|
a.usa-button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.task-order-next-steps__heading {
|
.task-order-next-steps__heading {
|
||||||
h4 {
|
h4 {
|
||||||
margin: $gap $gap 0 0;
|
margin: $gap $gap 0 0;
|
||||||
|
@ -4,25 +4,22 @@
|
|||||||
|
|
||||||
{% block portfolio_content %}
|
{% block portfolio_content %}
|
||||||
|
|
||||||
{% macro Step(title="", description="", link_text=None, link_url=None, complete=True) %}
|
{% macro Step(title="", description="", link_text=None, complete=True) %}
|
||||||
<div class="task-order-next-steps__step panel__content row">
|
<div class="task-order-next-steps__step panel__content row">
|
||||||
<div class="task-order-next-steps__icon col">
|
<div class="task-order-next-steps__icon col">
|
||||||
<span>{{ Icon("ok", classes="complete" if complete else "incomplete") }}</span>
|
<span>{{ Icon("ok", classes="complete" if complete else "incomplete") }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="task-order-next-steps__text">
|
<div class="task-order-next-steps__text col">
|
||||||
<div class="task-order-next-steps__heading row">
|
<div class="task-order-next-steps__heading row">
|
||||||
<h4>{{ title }}</h4>
|
<h4>{{ title }}</h4>
|
||||||
{% if link_url %}
|
|
||||||
<a href="{{ link_url }}" class="icon-link">
|
|
||||||
{{ Icon("edit") }}
|
|
||||||
<span>{{ link_text }}</span>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="task-order-next-steps__description">
|
<div class="task-order-next-steps__description">
|
||||||
{{ description }}
|
{{ description }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% if caller %}
|
||||||
|
{{ caller() }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
@ -88,13 +85,20 @@
|
|||||||
<div class="task-order-details">
|
<div class="task-order-details">
|
||||||
<div id="next-steps" class="task-order-next-steps">
|
<div id="next-steps" class="task-order-next-steps">
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<h3 class="panel__content">What's next?</h3>
|
<h3 class="task-order-next-steps__panel-head panel__content">What's next?</h3>
|
||||||
{{ Step(
|
{% call Step(
|
||||||
title="Submit draft Task Order",
|
title="Submit draft Task Order",
|
||||||
description="Complete initial task order request form.",
|
description="Complete initial task order request form.",
|
||||||
link_text="edit",
|
link_text="edit",
|
||||||
link_url=url_for("task_orders.new", screen=1, task_order_id=task_order.id),
|
complete=True) %}
|
||||||
complete=True) }}
|
<div class="task-order-next-steps__action col">
|
||||||
|
<a
|
||||||
|
href="{{ url_for("task_orders.new", screen=1, task_order_id=task_order.id) }}"
|
||||||
|
class="usa-button usa-button-primary">
|
||||||
|
Edit
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endcall %}
|
||||||
{{ Step(
|
{{ Step(
|
||||||
title="Complete a Security Requirements Document",
|
title="Complete a Security Requirements Document",
|
||||||
description="The IA Security Official you specified received an email invitation to complete and sign a DD-254: Security Requirements document that's been customized for the JEDI program here.",
|
description="The IA Security Official you specified received an email invitation to complete and sign a DD-254: Security Requirements document that's been customized for the JEDI program here.",
|
||||||
|
@ -210,7 +210,7 @@ def test_existing_member_invite_resent_to_email_submitted_in_form(
|
|||||||
assert send_mail_job.args[0] == ["example@example.com"]
|
assert send_mail_job.args[0] == ["example@example.com"]
|
||||||
|
|
||||||
|
|
||||||
def test_task_order_officer_accepts_invite(monkeypatch, client, user_session):
|
def test_contracting_officer_accepts_invite(monkeypatch, client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
task_order = TaskOrderFactory.create(portfolio=portfolio)
|
task_order = TaskOrderFactory.create(portfolio=portfolio)
|
||||||
user_info = UserFactory.dictionary()
|
user_info = UserFactory.dictionary()
|
||||||
@ -246,6 +246,9 @@ def test_task_order_officer_accepts_invite(monkeypatch, client, user_session):
|
|||||||
# user is redirected to the task order review page
|
# user is redirected to the task order review page
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
to_review_url = url_for(
|
to_review_url = url_for(
|
||||||
"task_orders.new", screen=4, task_order_id=task_order.id, _external=True
|
"portfolios.view_task_order",
|
||||||
|
portfolio_id=task_order.portfolio_id,
|
||||||
|
task_order_id=task_order.id,
|
||||||
|
_external=True,
|
||||||
)
|
)
|
||||||
assert response.headers["Location"] == to_review_url
|
assert response.headers["Location"] == to_review_url
|
||||||
|
Loading…
x
Reference in New Issue
Block a user