change name of request relationship to legacy task order

This commit is contained in:
dandds 2018-12-12 16:42:40 -05:00
parent 2f515d7b47
commit e509c34cdd
27 changed files with 215 additions and 163 deletions

View File

@ -0,0 +1,32 @@
"""change request foreign key to task order
Revision ID: 1c1394e496a7
Revises: 3dc8b7961bd1
Create Date: 2018-12-12 14:39:25.325640
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = '1c1394e496a7'
down_revision = '3dc8b7961bd1'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column("requests", "task_order_id", new_column_name="legacy_task_order_id")
op.drop_constraint('requests_task_order_id_fkey', 'requests', type_='foreignkey')
op.create_foreign_key("requests_legacy_task_order_fkey", 'requests', 'legacy_task_orders', ['legacy_task_order_id'], ['id'])
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column("requests", "legacy_task_order_id", new_column_name="task_order_id")
op.drop_constraint("requests_legacy_task_order_fkey" 'requests', type_='foreignkey')
op.create_foreign_key('requests_task_order_id_fkey', 'requests', 'legacy_task_orders', ['task_order_id'], ['id'])
# ### end Alembic commands ###

View File

@ -203,8 +203,8 @@ class Reports:
if workspace.name in REPORT_FIXTURE_MAP: if workspace.name in REPORT_FIXTURE_MAP:
budget = REPORT_FIXTURE_MAP[workspace.name]["budget"] budget = REPORT_FIXTURE_MAP[workspace.name]["budget"]
spent = _sum_monthly_spend(REPORT_FIXTURE_MAP[workspace.name]["monthly"]) spent = _sum_monthly_spend(REPORT_FIXTURE_MAP[workspace.name]["monthly"])
elif workspace.request and workspace.request.task_order: elif workspace.request and workspace.request.legacy_task_order:
ws_to = workspace.request.task_order ws_to = workspace.request.legacy_task_order
budget = ws_to.budget budget = ws_to.budget
# spent will be derived from CSP data # spent will be derived from CSP data
spent = 0 spent = 0

View File

@ -187,10 +187,12 @@ class Requests(object):
return Requests.status_count(RequestStatus.APPROVED) return Requests.status_count(RequestStatus.APPROVED)
@classmethod @classmethod
def update_financial_verification(cls, request_id, financial_data, task_order=None): def update_financial_verification(
cls, request_id, financial_data, legacy_task_order=None
):
request = RequestsQuery.get_with_lock(request_id) request = RequestsQuery.get_with_lock(request_id)
if task_order: if legacy_task_order:
request.task_order = task_order request.legacy_task_order = legacy_task_order
request = Requests._update(request, {"financial_verification": financial_data}) request = Requests._update(request, {"financial_verification": financial_data})
return request return request

View File

@ -15,16 +15,16 @@ class TaskOrders(object):
@classmethod @classmethod
def get(cls, order_number): def get(cls, order_number):
try: try:
task_order = ( legacy_task_order = (
db.session.query(LegacyTaskOrder).filter_by(number=order_number).one() db.session.query(LegacyTaskOrder).filter_by(number=order_number).one()
) )
except NoResultFound: except NoResultFound:
if TaskOrders._client(): if TaskOrders._client():
task_order = TaskOrders.get_from_eda(order_number) legacy_task_order = TaskOrders.get_from_eda(order_number)
else: else:
raise NotFoundError("task_order") raise NotFoundError("legacy_task_order")
return task_order return legacy_task_order
@classmethod @classmethod
def get_from_eda(cls, order_number): def get_from_eda(cls, order_number):
@ -36,25 +36,27 @@ class TaskOrders(object):
) )
else: else:
raise NotFoundError("task_order") raise NotFoundError("legacy_task_order")
@classmethod @classmethod
def create(cls, source=Source.MANUAL, **kwargs): def create(cls, source=Source.MANUAL, **kwargs):
to_data = {k: v for k, v in kwargs.items() if v not in ["", None]} to_data = {k: v for k, v in kwargs.items() if v not in ["", None]}
task_order = LegacyTaskOrder(source=source, **to_data) legacy_task_order = LegacyTaskOrder(source=source, **to_data)
db.session.add(task_order) db.session.add(legacy_task_order)
db.session.commit() db.session.commit()
return task_order return legacy_task_order
@classmethod @classmethod
def _client(cls): def _client(cls):
return app.eda_client return app.eda_client
@classmethod @classmethod
def update(cls, task_order, dct): def update(cls, legacy_task_order, dct):
updated = update_obj(task_order, dct, ignore_vals=lambda v: v in ["", None]) updated = update_obj(
legacy_task_order, dct, ignore_vals=lambda v: v in ["", None]
)
db.session.add(updated) db.session.add(updated)
db.session.commit() db.session.commit()
return updated return updated

View File

@ -46,10 +46,10 @@ def mixedContentToJson(value):
""" """
if ( if (
isinstance(value, dict) isinstance(value, dict)
and "task_order" in value and "legacy_task_order" in value
and hasattr(value["task_order"]["pdf"], "filename") and hasattr(value["legacy_task_order"]["pdf"], "filename")
): ):
value["task_order"]["pdf"] = value["task_order"]["pdf"].filename value["legacy_task_order"]["pdf"] = value["legacy_task_order"]["pdf"].filename
return app.jinja_env.filters["tojson"](value) return app.jinja_env.filters["tojson"](value)

View File

@ -34,13 +34,13 @@ def coerce_choice(val):
class TaskOrderForm(CacheableForm): class TaskOrderForm(CacheableForm):
def do_validate_number(self): def do_validate_number(self):
for field in self: for field in self:
if field.name != "task_order-number": if field.name != "legacy_task_order-number":
field.validators.insert(0, Optional()) field.validators.insert(0, Optional())
valid = super().validate() valid = super().validate()
for field in self: for field in self:
if field.name != "task_order-number": if field.name != "legacy_task_order-number":
field.validators.pop(0) field.validators.pop(0)
return valid return valid
@ -176,25 +176,25 @@ class RequestFinancialVerificationForm(CacheableForm):
class FinancialVerificationForm(CacheableForm): class FinancialVerificationForm(CacheableForm):
task_order = FormField(TaskOrderForm) legacy_task_order = FormField(TaskOrderForm)
request = FormField(RequestFinancialVerificationForm) request = FormField(RequestFinancialVerificationForm)
def validate(self, *args, **kwargs): def validate(self, *args, **kwargs):
if not kwargs.get("is_extended", True): if not kwargs.get("is_extended", True):
return self.do_validate_request() return self.do_validate_request()
if self.task_order.funding_type.data == "OTHER": if self.legacy_task_order.funding_type.data == "OTHER":
self.task_order.funding_type_other.validators.append(InputRequired()) self.legacy_task_order.funding_type_other.validators.append(InputRequired())
to_pdf_validators = None to_pdf_validators = None
if kwargs.get("has_attachment"): if kwargs.get("has_attachment"):
to_pdf_validators = list(self.task_order.pdf.validators) to_pdf_validators = list(self.legacy_task_order.pdf.validators)
self.task_order.pdf.validators = [] self.legacy_task_order.pdf.validators = []
valid = super().validate() valid = super().validate()
if to_pdf_validators: if to_pdf_validators:
self.task_order.pdf.validators = to_pdf_validators self.legacy_task_order.pdf.validators = to_pdf_validators
return valid return valid
@ -204,7 +204,7 @@ class FinancialVerificationForm(CacheableForm):
validator by wtforms. validator by wtforms.
""" """
request_valid = self.request.validate(self) request_valid = self.request.validate(self)
task_order_valid = self.task_order.do_validate_number() task_order_valid = self.legacy_task_order.do_validate_number()
return request_valid and task_order_valid return request_valid and task_order_valid
def reset(self): def reset(self):
@ -216,11 +216,11 @@ class FinancialVerificationForm(CacheableForm):
@property @property
def has_pdf_upload(self): def has_pdf_upload(self):
return isinstance(self.task_order.pdf.data, FileStorage) return isinstance(self.legacy_task_order.pdf.data, FileStorage)
@property @property
def is_missing_task_order_number(self): def is_missing_task_order_number(self):
return "number" in self.errors.get("task_order", {}) return "number" in self.errors.get("legacy_task_order", {})
@property @property
def is_only_missing_task_order_number(self): def is_only_missing_task_order_number(self):

View File

@ -39,8 +39,8 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
user_id = Column(ForeignKey("users.id"), nullable=False) user_id = Column(ForeignKey("users.id"), nullable=False)
creator = relationship("User", backref="owned_requests") creator = relationship("User", backref="owned_requests")
task_order_id = Column(ForeignKey("legacy_task_orders.id")) legacy_task_order_id = Column(ForeignKey("legacy_task_orders.id"))
task_order = relationship("LegacyTaskOrder") legacy_task_order = relationship("LegacyTaskOrder")
revisions = relationship( revisions = relationship(
"RequestRevision", back_populates="request", order_by="RequestRevision.sequence" "RequestRevision", back_populates="request", order_by="RequestRevision.sequence"
@ -141,8 +141,8 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
@property @property
def is_financially_verified(self): def is_financially_verified(self):
if self.task_order: if self.legacy_task_order:
return self.task_order.verified return self.legacy_task_order.verified
return False return False
@property @property
@ -209,7 +209,7 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
self.is_pending_ccpo_approval self.is_pending_ccpo_approval
or self.is_pending_financial_verification_changes or self.is_pending_financial_verification_changes
or self.is_approved or self.is_approved
) and self.task_order ) and self.legacy_task_order
@property @property
def displayname(self): def displayname(self):
@ -233,8 +233,8 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
@property @property
def has_manual_task_order(self): def has_manual_task_order(self):
return ( return (
self.task_order.source == TaskOrderSource.MANUAL self.legacy_task_order.source == TaskOrderSource.MANUAL
if self.task_order is not None if self.legacy_task_order is not None
else None else None
) )

View File

@ -34,8 +34,8 @@ class Workspace(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
return len(self.users) return len(self.users)
@property @property
def task_order(self): def legacy_task_order(self):
return self.request.task_order return self.request.legacy_task_order
@property @property
def members(self): def members(self):

View File

@ -22,7 +22,7 @@ def map_ccpo_authorizing(user):
def render_approval(request, form=None, internal_comment_form=None): def render_approval(request, form=None, internal_comment_form=None):
data = request.body data = request.body
if request.has_financial_data: if request.has_financial_data:
data["task_order"] = request.task_order.to_dictionary() data["legacy_task_order"] = request.legacy_task_order.to_dictionary()
if not form: if not form:
mo_data = map_ccpo_authorizing(g.current_user) mo_data = map_ccpo_authorizing(g.current_user)
@ -69,8 +69,8 @@ def submit_approval(request_id):
@requests_bp.route("/requests/task_order_download/<string:request_id>", methods=["GET"]) @requests_bp.route("/requests/task_order_download/<string:request_id>", methods=["GET"])
def task_order_pdf_download(request_id): def task_order_pdf_download(request_id):
request = Requests.get(g.current_user, request_id) request = Requests.get(g.current_user, request_id)
if request.task_order and request.task_order.pdf: if request.legacy_task_order and request.legacy_task_order.pdf:
pdf = request.task_order.pdf pdf = request.legacy_task_order.pdf
generator = app.uploader.download_stream(pdf.object_name) generator = app.uploader.download_stream(pdf.object_name)
return Response( return Response(
generator, generator,
@ -81,7 +81,7 @@ def task_order_pdf_download(request_id):
) )
else: else:
raise NotFoundError("task_order pdf") raise NotFoundError("legacy_task_order pdf")
@requests_bp.route("/requests/internal_comments/<string:request_id>", methods=["POST"]) @requests_bp.route("/requests/internal_comments/<string:request_id>", methods=["POST"])

View File

@ -23,7 +23,7 @@ def fv_extended(_http_request):
class FinancialVerification(object): class FinancialVerification(object):
def __init__(self, request): def __init__(self, request):
self.request = request.latest_revision self.request = request.latest_revision
self.task_order = request.task_order self.legacy_task_order = request.legacy_task_order
class FinancialVerificationBase(object): class FinancialVerificationBase(object):
@ -33,14 +33,16 @@ class FinancialVerificationBase(object):
form = FinancialVerificationForm(obj=fv, formdata=_formdata) form = FinancialVerificationForm(obj=fv, formdata=_formdata)
if not form.has_pdf_upload: if not form.has_pdf_upload:
if isinstance(form.task_order.pdf.data, Attachment): if isinstance(form.legacy_task_order.pdf.data, Attachment):
form.task_order.pdf.data = form.task_order.pdf.data.filename form.legacy_task_order.pdf.data = (
form.legacy_task_order.pdf.data.filename
)
else: else:
try: try:
attachment = Attachment.get_for_resource( attachment = Attachment.get_for_resource(
"task_order", self.request.id "legacy_task_order", self.request.id
) )
form.task_order.pdf.data = attachment.filename form.legacy_task_order.pdf.data = attachment.filename
except NotFoundError: except NotFoundError:
pass pass
@ -50,38 +52,40 @@ class FinancialVerificationBase(object):
attachment = None attachment = None
if is_extended: if is_extended:
attachment = None attachment = None
if isinstance(form.task_order.pdf.data, FileStorage): if isinstance(form.legacy_task_order.pdf.data, FileStorage):
Attachment.delete_for_resource("task_order", self.request.id) Attachment.delete_for_resource("legacy_task_order", self.request.id)
attachment = Attachment.attach( attachment = Attachment.attach(
form.task_order.pdf.data, "task_order", self.request.id form.legacy_task_order.pdf.data,
"legacy_task_order",
self.request.id,
) )
elif isinstance(form.task_order.pdf.data, str): elif isinstance(form.legacy_task_order.pdf.data, str):
try: try:
attachment = Attachment.get_for_resource( attachment = Attachment.get_for_resource(
"task_order", self.request.id "legacy_task_order", self.request.id
) )
except NotFoundError: except NotFoundError:
pass pass
if attachment: if attachment:
form.task_order.pdf.data = attachment.filename form.legacy_task_order.pdf.data = attachment.filename
return attachment return attachment
def _try_create_task_order(self, form, attachment, is_extended): def _try_create_task_order(self, form, attachment, is_extended):
task_order_number = form.task_order.number.data task_order_number = form.legacy_task_order.number.data
if not task_order_number: if not task_order_number:
return None return None
task_order_data = form.task_order.data task_order_data = form.legacy_task_order.data
if attachment: if attachment:
task_order_data["pdf"] = attachment task_order_data["pdf"] = attachment
try: try:
task_order = TaskOrders.get(task_order_number) legacy_task_order = TaskOrders.get(task_order_number)
task_order = TaskOrders.update(task_order, task_order_data) legacy_task_order = TaskOrders.update(legacy_task_order, task_order_data)
return task_order return legacy_task_order
except NotFoundError: except NotFoundError:
pass pass
@ -142,14 +146,16 @@ class UpdateFinancialVerification(FinancialVerificationBase):
should_submit = False should_submit = False
if not self.is_extended and not self.task_order_validator.validate( if not self.is_extended and not self.task_order_validator.validate(
form.task_order.number form.legacy_task_order.number
): ):
should_submit = False should_submit = False
if should_update: if should_update:
task_order = self._try_create_task_order(form, attachment, self.is_extended) legacy_task_order = self._try_create_task_order(
form, attachment, self.is_extended
)
updated_request = Requests.update_financial_verification( updated_request = Requests.update_financial_verification(
self.request.id, form.request.data, task_order=task_order self.request.id, form.request.data, legacy_task_order=legacy_task_order
) )
if should_submit: if should_submit:
return Requests.submit_financial_verification(updated_request) return Requests.submit_financial_verification(updated_request)
@ -177,9 +183,11 @@ class SaveFinancialVerificationDraft(FinancialVerificationBase):
def execute(self): def execute(self):
form = self._get_form(self.request, self.is_extended, self.fv_data) form = self._get_form(self.request, self.is_extended, self.fv_data)
attachment = self._process_attachment(self.is_extended, form) attachment = self._process_attachment(self.is_extended, form)
task_order = self._try_create_task_order(form, attachment, self.is_extended) legacy_task_order = self._try_create_task_order(
form, attachment, self.is_extended
)
updated_request = Requests.update_financial_verification( updated_request = Requests.update_financial_verification(
self.request.id, form.request.data, task_order=task_order self.request.id, form.request.data, legacy_task_order=legacy_task_order
) )
return updated_request return updated_request
@ -237,7 +245,7 @@ def update_financial_verification(request_id):
extended=is_extended, extended=is_extended,
) )
if updated_request.task_order.verified: if updated_request.legacy_task_order.verified:
workspace = Requests.auto_approve_and_create_workspace(updated_request) workspace = Requests.auto_approve_and_create_workspace(updated_request)
flash("new_workspace") flash("new_workspace")
return redirect(url_for("workspaces.new_project", workspace_id=workspace.id)) return redirect(url_for("workspaces.new_project", workspace_id=workspace.id))

View File

@ -146,7 +146,7 @@ def view_request_details(request_id=None):
data = request.body data = request.body
if request.has_financial_data: if request.has_financial_data:
data["task_order"] = request.task_order.to_dictionary() data["legacy_task_order"] = request.legacy_task_order.to_dictionary()
return render_template( return render_template(
"requests/details.html", "requests/details.html",

View File

@ -58,7 +58,7 @@ def workspace_reports(workspace_id):
prev_month = current_month - timedelta(days=28) prev_month = current_month - timedelta(days=28)
two_months_ago = prev_month - timedelta(days=28) two_months_ago = prev_month - timedelta(days=28)
expiration_date = workspace.request.task_order.expiration_date expiration_date = workspace.request.legacy_task_order.expiration_date
if expiration_date: if expiration_date:
remaining_difference = expiration_date - today remaining_difference = expiration_date - today
remaining_days = remaining_difference.days remaining_days = remaining_difference.days
@ -71,7 +71,7 @@ def workspace_reports(workspace_id):
workspace_totals=Reports.workspace_totals(workspace), workspace_totals=Reports.workspace_totals(workspace),
monthly_totals=Reports.monthly_totals(workspace), monthly_totals=Reports.monthly_totals(workspace),
jedi_request=workspace.request, jedi_request=workspace.request,
task_order=workspace.request.task_order, legacy_task_order=workspace.request.legacy_task_order,
current_month=current_month, current_month=current_month,
prev_month=prev_month, prev_month=prev_month,
two_months_ago=two_months_ago, two_months_ago=two_months_ago,

View File

@ -34,7 +34,7 @@ export default {
computed: { computed: {
showTaskOrderUpload: function() { showTaskOrderUpload: function() {
return !this.initialData.task_order.pdf || this.shouldForceShowTaskOrder return !this.initialData.legacy_task_order.pdf || this.shouldForceShowTaskOrder
} }
}, },

View File

@ -57,7 +57,7 @@ def create_demo_workspace(name, data):
return return
request = RequestFactory.build(creator=workspace_owner) request = RequestFactory.build(creator=workspace_owner)
request.task_order = LegacyTaskOrderFactory.build() request.legacy_task_order = LegacyTaskOrderFactory.build()
request = Requests.update( request = Requests.update(
request.id, {"financial_verification": RequestFactory.mock_financial_data()} request.id, {"financial_verification": RequestFactory.mock_financial_data()}
) )

View File

@ -102,7 +102,7 @@ def seed_db():
requests.append(request) requests.append(request)
request = requests[0] request = requests[0]
request.task_order = LegacyTaskOrderFactory.build() request.legacy_task_order = LegacyTaskOrderFactory.build()
request = Requests.update( request = Requests.update(
request.id, {"financial_verification": RequestFactory.mock_financial_data()} request.id, {"financial_verification": RequestFactory.mock_financial_data()}
) )

View File

@ -154,7 +154,7 @@
</h2> </h2>
<div> <div>
{% if jedi_request.task_order.pdf %} {% if jedi_request.legacy_task_order.pdf %}
<a href="{{ url_for("requests.task_order_pdf_download", request_id=request_id)}}" download> <a href="{{ url_for("requests.task_order_pdf_download", request_id=request_id)}}" download>
Download the Task Order PDF Download the Task Order PDF
</a> </a>
@ -164,29 +164,29 @@
</div> </div>
<dl> <dl>
{{ DefinitionReviewField("Task Order Information Source", "task_order", "source", filter="getOptionLabel", filter_args=[task_order_sources]) }} {{ DefinitionReviewField("Task Order Information Source", "legacy_task_order", "source", filter="getOptionLabel", filter_args=[task_order_sources]) }}
{{ DefinitionReviewField("Task Order Number", "task_order", "number") }} {{ DefinitionReviewField("Task Order Number", "legacy_task_order", "number") }}
{{ DefinitionReviewField("What is the source of funding?", "task_order", "funding_type", filter="getOptionLabel", filter_args=[funding_types]) }} {{ DefinitionReviewField("What is the source of funding?", "legacy_task_order", "funding_type", filter="getOptionLabel", filter_args=[funding_types]) }}
{% if data["task_order"] and data["task_order"]["funding_type"].value == "OTHER" %} {% if data["legacy_task_order"] and data["legacy_task_order"]["funding_type"].value == "OTHER" %}
{{ DefinitionReviewField("If other, please specify", "task_order", "funding_type_other") }} {{ DefinitionReviewField("If other, please specify", "legacy_task_order", "funding_type_other") }}
{% endif %} {% endif %}
{{ DefinitionReviewField("Task Order Expiration Date", "task_order", "expiration_date") }} {{ DefinitionReviewField("Task Order Expiration Date", "legacy_task_order", "expiration_date") }}
{{ DefinitionReviewField("<dl><dt>CLIN 0001</dt> - <dd>Unclassified IaaS and PaaS Amount</dd></dl>", "task_order", "clin_0001", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 0001</dt> - <dd>Unclassified IaaS and PaaS Amount</dd></dl>", "legacy_task_order", "clin_0001", filter="dollars") }}
{{ DefinitionReviewField("<dl><dt>CLIN 0003</dt> - <dd>Unclassified Cloud Support Package</dd></dl>", "task_order", "clin_0003", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 0003</dt> - <dd>Unclassified Cloud Support Package</dd></dl>", "legacy_task_order", "clin_0003", filter="dollars") }}
{{ DefinitionReviewField("<dl><dt>CLIN 1001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 1</dd></dl>", "task_order", "clin_1001", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 1001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 1</dd></dl>", "legacy_task_order", "clin_1001", filter="dollars") }}
{{ DefinitionReviewField("<dl><dt>CLIN 1003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 1</dd></dl>", "task_order", "clin_1003", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 1003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 1</dd></dl>", "legacy_task_order", "clin_1003", filter="dollars") }}
{{ DefinitionReviewField("<dl><dt>CLIN 2001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 2</dd></dl>", "task_order", "clin_2001", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 2001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 2</dd></dl>", "legacy_task_order", "clin_2001", filter="dollars") }}
{{ DefinitionReviewField("<dl><dt>CLIN 2003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 2</dd></dl>", "task_order", "clin_2003", filter="dollars") }} {{ DefinitionReviewField("<dl><dt>CLIN 2003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 2</dd></dl>", "legacy_task_order", "clin_2003", filter="dollars") }}
{{ DefinitionReviewField("Unique Item Identifier (UII)s related to your application(s) if you already have them", "financial_verification", "uii_ids", filter="renderList") }} {{ DefinitionReviewField("Unique Item Identifier (UII)s related to your application(s) if you already have them", "financial_verification", "uii_ids", filter="renderList") }}

View File

@ -71,55 +71,55 @@
{% if extended %} {% if extended %}
<fieldset class="form__sub-fields form__sub-fields--warning"> <fieldset class="form__sub-fields form__sub-fields--warning">
{{ OptionsInput(f.task_order.funding_type) }} {{ OptionsInput(f.legacy_task_order.funding_type) }}
<template v-if="funding_type == 'OTHER'" v-cloak> <template v-if="funding_type == 'OTHER'" v-cloak>
{{ TextInput(f.task_order.funding_type_other) }} {{ TextInput(f.legacy_task_order.funding_type_other) }}
</template> </template>
{{ DateInput(f.task_order.expiration_date, placeholder='MM / DD / YYYY', validation='date', tooltip='Please enter the expiration date for the task order only and do not include options that you may choose to exercise in the future.') }} {{ DateInput(f.legacy_task_order.expiration_date, placeholder='MM / DD / YYYY', validation='date', tooltip='Please enter the expiration date for the task order only and do not include options that you may choose to exercise in the future.') }}
{{ TextInput( {{ TextInput(
f.task_order.clin_0001, f.legacy_task_order.clin_0001,
validation='dollars' validation='dollars'
) }} ) }}
{{ TextInput( {{ TextInput(
f.task_order.clin_0003, f.legacy_task_order.clin_0003,
validation='dollars' validation='dollars'
) }} ) }}
{{ TextInput( {{ TextInput(
f.task_order.clin_1001, f.legacy_task_order.clin_1001,
validation='dollars' validation='dollars'
) }} ) }}
{{ TextInput( {{ TextInput(
f.task_order.clin_1003, f.legacy_task_order.clin_1003,
validation='dollars' validation='dollars'
) }} ) }}
{{ TextInput( {{ TextInput(
f.task_order.clin_2001, f.legacy_task_order.clin_2001,
validation='dollars' validation='dollars'
) }} ) }}
{{ TextInput( {{ TextInput(
f.task_order.clin_2003, f.legacy_task_order.clin_2003,
validation='dollars' validation='dollars'
) }} ) }}
<template v-if="showTaskOrderUpload"> <template v-if="showTaskOrderUpload">
<div class="usa-input {% if f.task_order.pdf.errors %} usa-input--error {% endif %}"> <div class="usa-input {% if f.legacy_task_order.pdf.errors %} usa-input--error {% endif %}">
{{ f.task_order.pdf.label }} {{ f.legacy_task_order.pdf.label }}
{{ f.task_order.pdf }} {{ f.legacy_task_order.pdf }}
{% for error in f.task_order.pdf.errors %} {% for error in f.legacy_task_order.pdf.errors %}
<span class="usa-input__message">{{error}}</span> <span class="usa-input__message">{{error}}</span>
{% endfor %} {% endfor %}
</div> </div>
</template> </template>
<template v-else> <template v-else>
<p>Uploaded {{ f.task_order.pdf.data }}.</p> <p>Uploaded {{ f.legacy_task_order.pdf.data }}.</p>
<div> <div>
<button v-on:click="forceShowTaskOrderUpload($event)">Change</button> <button v-on:click="forceShowTaskOrderUpload($event)">Change</button>
</div> </div>
@ -128,7 +128,7 @@
{% endif %} {% endif %}
{{ TextInput( {{ TextInput(
f.task_order.number, f.legacy_task_order.number,
placeholder="e.g.: 1234567899C0001", placeholder="e.g.: 1234567899C0001",
tooltip="A Contracting Officer will likely be the best source for this number.", tooltip="A Contracting Officer will likely be the best source for this number.",
validation="requiredField" validation="requiredField"

View File

@ -17,7 +17,7 @@
<a class='icon-link icon-link--large' href="/workspaces/{{ workspace.id }}/projects">{{ workspace.name }}</a><br> <a class='icon-link icon-link--large' href="/workspaces/{{ workspace.id }}/projects">{{ workspace.name }}</a><br>
</td> </td>
<td> <td>
#{{ workspace.task_order.number }} #{{ workspace.legacy_task_order.number }}
</td> </td>
<td> <td>
<span class="label">{{ workspace.user_count }}</span><span class='h6'>Users</span> <span class="label">{{ workspace.user_count }}</span><span class='h6'>Users</span>

View File

@ -56,7 +56,7 @@
<h2 class='to-summary__heading'>Task Order</h2> <h2 class='to-summary__heading'>Task Order</h2>
<dl class='to-summary__to-number'> <dl class='to-summary__to-number'>
<dt class='usa-sr-only'>Task Order Number</dt> <dt class='usa-sr-only'>Task Order Number</dt>
<dd>{{ task_order.number }}</dd> <dd>{{ legacy_task_order.number }}</dd>
</dl> </dl>
</div> </div>

View File

@ -139,7 +139,7 @@ def extended_financial_verification_data(pdf_upload):
"clin_1003": "7000", "clin_1003": "7000",
"clin_2001": "30000", "clin_2001": "30000",
"clin_2003": "7000", "clin_2003": "7000",
"task_order": pdf_upload, "legacy_task_order": pdf_upload,
} }

View File

@ -6,12 +6,12 @@ CLIN_NUMS = ["0001", "0003", "1001", "1003", "2001", "2003"]
def test_workspace_totals(): def test_workspace_totals():
task_order = LegacyTaskOrderFactory.create() legacy_task_order = LegacyTaskOrderFactory.create()
for num in CLIN_NUMS: for num in CLIN_NUMS:
setattr(task_order, "clin_{}".format(num), 200) setattr(legacy_task_order, "clin_{}".format(num), 200)
request = RequestFactory.create(task_order=task_order) request = RequestFactory.create(legacy_task_order=legacy_task_order)
workspace = WorkspaceFactory.create(request=request) workspace = WorkspaceFactory.create(request=request)
report = Reports.workspace_totals(workspace) report = Reports.workspace_totals(workspace)
total = 200 * len(CLIN_NUMS) total = 200 * len(CLIN_NUMS)

View File

@ -122,8 +122,8 @@ class RequestFactory(Base):
@classmethod @classmethod
def _adjust_kwargs(cls, **kwargs): def _adjust_kwargs(cls, **kwargs):
if kwargs.pop("with_task_order", False) and "task_order" not in kwargs: if kwargs.pop("with_task_order", False) and "legacy_task_order" not in kwargs:
kwargs["task_order"] = LegacyTaskOrderFactory.build() kwargs["legacy_task_order"] = LegacyTaskOrderFactory.build()
return kwargs return kwargs
@classmethod @classmethod

View File

@ -20,17 +20,17 @@ def test_suggest_pe_id(input_, expected):
def test_funding_type_other_not_required_if_funding_type_is_not_other(): def test_funding_type_other_not_required_if_funding_type_is_not_other():
form_data = ImmutableMultiDict({"task_order-funding_type": "PROC"}) form_data = ImmutableMultiDict({"legacy_task_order-funding_type": "PROC"})
form = FinancialVerificationForm(form_data) form = FinancialVerificationForm(form_data)
form.validate() form.validate()
assert "funding_type_other" not in form.errors assert "funding_type_other" not in form.errors
def test_funding_type_other_required_if_funding_type_is_other(): def test_funding_type_other_required_if_funding_type_is_other():
form_data = ImmutableMultiDict({"task_order-funding_type": "OTHER"}) form_data = ImmutableMultiDict({"legacy_task_order-funding_type": "OTHER"})
form = FinancialVerificationForm(form_data) form = FinancialVerificationForm(form_data)
form.validate() form.validate()
assert "funding_type_other" in form.errors["task_order"] assert "funding_type_other" in form.errors["legacy_task_order"]
@pytest.mark.parametrize( @pytest.mark.parametrize(
@ -85,8 +85,8 @@ def test_ba_code_validation(input_, expected):
def test_can_submit_zero_for_clin(): def test_can_submit_zero_for_clin():
form_first = FinancialVerificationForm() form_first = FinancialVerificationForm()
form_first.validate() form_first.validate()
assert "clin_0001" in form_first.errors["task_order"] assert "clin_0001" in form_first.errors["legacy_task_order"]
form_data = ImmutableMultiDict([("task_order-clin_0001", "0")]) form_data = ImmutableMultiDict([("legacy_task_order-clin_0001", "0")])
form_second = FinancialVerificationForm(form_data) form_second = FinancialVerificationForm(form_data)
form_second.validate() form_second.validate()
assert "clin_0001" not in form_second.errors["task_order"] assert "clin_0001" not in form_second.errors["legacy_task_order"]

View File

@ -9,7 +9,7 @@ def test_as_dictionary():
def test_budget(): def test_budget():
task_order = LegacyTaskOrderFactory.create( legacy_task_order = LegacyTaskOrderFactory.create(
clin_0001=500, clin_0001=500,
clin_0003=200, clin_0003=200,
clin_1001=None, clin_1001=None,
@ -17,4 +17,4 @@ def test_budget():
clin_2001=None, clin_2001=None,
clin_2003=None, clin_2003=None,
) )
assert task_order.budget == 700 assert legacy_task_order.budget == 700

View File

@ -10,9 +10,11 @@ def test_can_show_financial_data(client, user_session):
user = UserFactory.create() user = UserFactory.create()
user_session(user) user_session(user)
task_order = LegacyTaskOrderFactory.create() legacy_task_order = LegacyTaskOrderFactory.create()
request = RequestFactory.create_with_status( request = RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_APPROVAL, task_order=task_order, creator=user status=RequestStatus.PENDING_CCPO_APPROVAL,
legacy_task_order=legacy_task_order,
creator=user,
) )
response = client.get( response = client.get(
url_for("requests.view_request_details", request_id=request.id) url_for("requests.view_request_details", request_id=request.id)

View File

@ -46,10 +46,12 @@ def test_non_ccpo_cannot_view_approval(user_session, client):
def prepare_request_pending_approval(creator, pdf_attachment=None): def prepare_request_pending_approval(creator, pdf_attachment=None):
task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=pdf_attachment) legacy_task_order = LegacyTaskOrderFactory.create(
number="abc123", pdf=pdf_attachment
)
return RequestFactory.create_with_status( return RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_APPROVAL, status=RequestStatus.PENDING_CCPO_APPROVAL,
task_order=task_order, legacy_task_order=legacy_task_order,
creator=creator, creator=creator,
) )
@ -86,8 +88,8 @@ def test_task_order_download(app, client, user_session, pdf_upload):
user_session(user) user_session(user)
attachment = Attachment.attach(pdf_upload) attachment = Attachment.attach(pdf_upload)
task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=attachment) legacy_task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=attachment)
request = RequestFactory.create(task_order=task_order, creator=user) request = RequestFactory.create(legacy_task_order=legacy_task_order, creator=user)
# ensure that real data for pdf upload has been flushed to disk # ensure that real data for pdf upload has been flushed to disk
pdf_upload.seek(0) pdf_upload.seek(0)

View File

@ -26,7 +26,7 @@ from atst.domain.requests.query import RequestsQuery
def fv_data(): def fv_data():
return { return {
"request-pe_id": "123", "request-pe_id": "123",
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER, "legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-fname_co": "Contracting", "request-fname_co": "Contracting",
"request-lname_co": "Officer", "request-lname_co": "Officer",
"request-email_co": "jane@mail.mil", "request-email_co": "jane@mail.mil",
@ -44,16 +44,18 @@ def fv_data():
@pytest.fixture @pytest.fixture
def e_fv_data(pdf_upload): def e_fv_data(pdf_upload):
return { return {
"task_order-funding_type": "RDTE", "legacy_task_order-funding_type": "RDTE",
"task_order-funding_type_other": "other", "legacy_task_order-funding_type_other": "other",
"task_order-expiration_date": "1/1/{}".format(datetime.date.today().year + 1), "legacy_task_order-expiration_date": "1/1/{}".format(
"task_order-clin_0001": "50000", datetime.date.today().year + 1
"task_order-clin_0003": "13000", ),
"task_order-clin_1001": "30000", "legacy_task_order-clin_0001": "50000",
"task_order-clin_1003": "7000", "legacy_task_order-clin_0003": "13000",
"task_order-clin_2001": "30000", "legacy_task_order-clin_1001": "30000",
"task_order-clin_2003": "7000", "legacy_task_order-clin_1003": "7000",
"task_order-pdf": pdf_upload, "legacy_task_order-clin_2001": "30000",
"legacy_task_order-clin_2003": "7000",
"legacy_task_order-pdf": pdf_upload,
} }
@ -97,7 +99,7 @@ def test_update_fv_re_enter_pe_number(fv_data):
def test_update_fv_invalid_task_order_number(fv_data): def test_update_fv_invalid_task_order_number(fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = {**fv_data, "task_order-number": MANUAL_TO_NUMBER} data = {**fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
update_fv = UpdateFinancialVerification( update_fv = UpdateFinancialVerification(
TrueValidator, TrueValidator,
TaskOrderNumberValidator(), TaskOrderNumberValidator(),
@ -139,7 +141,7 @@ def test_update_fv_extended(fv_data, e_fv_data):
def test_update_fv_extended_does_not_validate_task_order(fv_data, e_fv_data): def test_update_fv_extended_does_not_validate_task_order(fv_data, e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-number": "abc123"} data = {**fv_data, **e_fv_data, "legacy_task_order-number": "abc123"}
update_fv = UpdateFinancialVerification( update_fv = UpdateFinancialVerification(
TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True
) )
@ -197,7 +199,7 @@ def test_save_draft_allows_invalid_data():
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = { data = {
"task_order-number": MANUAL_TO_NUMBER, "legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "123", "request-pe_id": "123",
"request-ba_code": "a", "request-ba_code": "a",
} }
@ -229,44 +231,44 @@ def test_save_draft_and_then_submit():
def test_updated_request_has_pdf(fv_data, e_fv_data): def test_updated_request_has_pdf(fv_data, e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER} data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
updated_request = UpdateFinancialVerification( updated_request = UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
assert updated_request.task_order.pdf assert updated_request.legacy_task_order.pdf
def test_can_save_draft_with_just_pdf(e_fv_data): def test_can_save_draft_with_just_pdf(e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = {"task_order-pdf": e_fv_data["task_order-pdf"]} data = {"legacy_task_order-pdf": e_fv_data["legacy_task_order-pdf"]}
SaveFinancialVerificationDraft( SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute() form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.pdf assert form.legacy_task_order.pdf
def test_task_order_info_present_in_extended_form(fv_data, e_fv_data): def test_task_order_info_present_in_extended_form(fv_data, e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = { data = {
"task_order-clin_0001": "1", "legacy_task_order-clin_0001": "1",
"task_order-number": fv_data["task_order-number"], "legacy_task_order-number": fv_data["legacy_task_order-number"],
} }
SaveFinancialVerificationDraft( SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute() form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.clin_0001.data assert form.legacy_task_order.clin_0001.data
def test_update_ignores_empty_values(fv_data, e_fv_data): def test_update_ignores_empty_values(fv_data, e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-funding_type": ""} data = {**fv_data, **e_fv_data, "legacy_task_order-funding_type": ""}
SaveFinancialVerificationDraft( SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
@ -276,14 +278,14 @@ def test_can_save_draft_with_funding_type(fv_data, e_fv_data):
request = RequestFactory.create() request = RequestFactory.create()
user = UserFactory.create() user = UserFactory.create()
data = { data = {
"task_order-number": fv_data["task_order-number"], "legacy_task_order-number": fv_data["legacy_task_order-number"],
"task_order-funding_type": e_fv_data["task_order-funding_type"], "legacy_task_order-funding_type": e_fv_data["legacy_task_order-funding_type"],
} }
updated_request = SaveFinancialVerificationDraft( updated_request = SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=False TrueValidator, TrueValidator, user, request, data, is_extended=False
).execute() ).execute()
assert updated_request.task_order.funding_type assert updated_request.legacy_task_order.funding_type
def test_update_fv_route(client, user_session, fv_data): def test_update_fv_route(client, user_session, fv_data):
@ -331,7 +333,7 @@ def test_manual_task_order_triggers_extended_form(
user = UserFactory.create() user = UserFactory.create()
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER} data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
UpdateFinancialVerification( UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
@ -352,7 +354,7 @@ def test_manual_to_does_not_trigger_approval(client, user_session, fv_data, e_fv
data = { data = {
**fv_data, **fv_data,
**e_fv_data, **e_fv_data,
"task_order-number": MANUAL_TO_NUMBER, "legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
user_session(user) user_session(user)
@ -374,7 +376,7 @@ def test_eda_task_order_does_trigger_approval(client, user_session, fv_data, e_f
data = { data = {
**fv_data, **fv_data,
**e_fv_data, **e_fv_data,
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER, "legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
user_session(user) user_session(user)
@ -396,7 +398,7 @@ def test_attachment_on_non_extended_form(client, user_session, fv_data, e_fv_dat
data = { data = {
**fv_data, **fv_data,
**e_fv_data, **e_fv_data,
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER, "legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
user_session(user) user_session(user)
@ -420,7 +422,7 @@ def test_task_order_number_persists_in_form(fv_data, e_fv_data):
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = { data = {
**fv_data, **fv_data,
"task_order-number": MANUAL_TO_NUMBER, "legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
@ -432,7 +434,7 @@ def test_task_order_number_persists_in_form(fv_data, e_fv_data):
pass pass
form = GetFinancialVerificationForm(user, request, is_extended=True).execute() form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.number.data == MANUAL_TO_NUMBER assert form.legacy_task_order.number.data == MANUAL_TO_NUMBER
def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data): def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
@ -440,7 +442,7 @@ def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = { data = {
**fv_data, **fv_data,
"task_order-number": MANUAL_TO_NUMBER, "legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
@ -454,7 +456,7 @@ def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
data = { data = {
**fv_data, **fv_data,
**e_fv_data, **e_fv_data,
"task_order-number": MANUAL_TO_NUMBER, "legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N", "request-pe_id": "0101228N",
} }
assert UpdateFinancialVerification( assert UpdateFinancialVerification(
@ -466,7 +468,7 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
# Use finver route to create initial TO #1, complete with PDF # Use finver route to create initial TO #1, complete with PDF
user = UserFactory.create() user = UserFactory.create()
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER} data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
UpdateFinancialVerification( UpdateFinancialVerification(
TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True
).execute() ).execute()
@ -474,7 +476,7 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
# Save draft on a new finver form, but with same number as TO #1 # Save draft on a new finver form, but with same number as TO #1
user = UserFactory.create() user = UserFactory.create()
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = {"task_order-number": MANUAL_TO_NUMBER} data = {"legacy_task_order-number": MANUAL_TO_NUMBER}
SaveFinancialVerificationDraft( SaveFinancialVerificationDraft(
TrueValidator, TrueValidator,
TaskOrderNumberValidator(), TaskOrderNumberValidator(),
@ -497,19 +499,19 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
def test_pdf_clearing(fv_data, e_fv_data, pdf_upload, pdf_upload2): def test_pdf_clearing(fv_data, e_fv_data, pdf_upload, pdf_upload2):
user = UserFactory.create() user = UserFactory.create()
request = RequestFactory.create(creator=user) request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-pdf": pdf_upload} data = {**fv_data, **e_fv_data, "legacy_task_order-pdf": pdf_upload}
SaveFinancialVerificationDraft( SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
data = {**data, "task_order-pdf": pdf_upload2} data = {**data, "legacy_task_order-pdf": pdf_upload2}
UpdateFinancialVerification( UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute() ).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute() form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.pdf.data == pdf_upload2.filename assert form.legacy_task_order.pdf.data == pdf_upload2.filename
# TODO: This test manages an edge case for our current non-unique handling of # TODO: This test manages an edge case for our current non-unique handling of
@ -523,10 +525,12 @@ def test_always_derives_pdf_filename(fv_data, e_fv_data, pdf_upload):
user = UserFactory.create() user = UserFactory.create()
request_one = RequestFactory.create(creator=user) request_one = RequestFactory.create(creator=user)
attachment = Attachment.attach( attachment = Attachment.attach(
pdf_upload, resource="task_order", resource_id=request_one.id pdf_upload, resource="legacy_task_order", resource_id=request_one.id
)
legacy_task_order = LegacyTaskOrderFactory.create(pdf=attachment)
request_two = RequestFactory.create(
creator=user, legacy_task_order=legacy_task_order
) )
task_order = LegacyTaskOrderFactory.create(pdf=attachment)
request_two = RequestFactory.create(creator=user, task_order=task_order)
form_one = GetFinancialVerificationForm( form_one = GetFinancialVerificationForm(
user, request_one, is_extended=True user, request_one, is_extended=True
@ -535,5 +539,5 @@ def test_always_derives_pdf_filename(fv_data, e_fv_data, pdf_upload):
user, request_two, is_extended=True user, request_two, is_extended=True
).execute() ).execute()
assert form_one.task_order.pdf.data == attachment.filename assert form_one.legacy_task_order.pdf.data == attachment.filename
assert form_two.task_order.pdf.data == attachment.filename assert form_two.legacy_task_order.pdf.data == attachment.filename