Migration to add custom_clauses to TO; form fixes

This commit is contained in:
Montana 2019-01-30 11:48:13 -05:00
parent be003c1821
commit 40780bf244
5 changed files with 49 additions and 15 deletions

View File

@ -0,0 +1,30 @@
"""Add Custom Clauses to Task Order
Revision ID: 0ff4c31c4d28
Revises: da9d1c911a52
Create Date: 2019-01-30 11:28:37.193854
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '0ff4c31c4d28'
down_revision = 'da9d1c911a52'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('task_orders', 'loa', type_=sa.String(), nullable=True)
op.add_column('task_orders', sa.Column('custom_clauses', sa.String(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('task_orders', 'custom_clauses')
op.alter_column('task_orders', 'loa', type_=sa.ARRAY(sa.String()), nullable=True)
# ### end Alembic commands ###

View File

@ -29,7 +29,6 @@ class KOReviewForm(CacheableForm):
message=translate("forms.ko_review.invalid_date"), message=translate("forms.ko_review.invalid_date"),
) )
], ],
format="%m/%d/%Y",
) )
pdf = FileField( pdf = FileField(
translate("forms.ko_review.pdf_label"), translate("forms.ko_review.pdf_label"),
@ -37,11 +36,11 @@ class KOReviewForm(CacheableForm):
validators=[ validators=[
FileAllowed( FileAllowed(
["pdf", "png"], translate("forms.task_order.file_format_not_allowed") ["pdf", "png"], translate("forms.task_order.file_format_not_allowed")
), )
], ],
render_kw={"required": False, "accept": ".pdf,.png,application/pdf,image/png"}, render_kw={"required": False, "accept": ".pdf,.png,application/pdf,image/png"},
) )
to_number = StringField( number = StringField(
translate("forms.ko_review.to_number"), validators=[Length(min=10), IsNumber()] translate("forms.ko_review.to_number"), validators=[Length(min=10), IsNumber()]
) )
loa = StringField( loa = StringField(

View File

@ -72,7 +72,8 @@ class TaskOrder(Base, mixins.TimestampsMixin):
so_phone_number = Column(String) # Phone Number so_phone_number = Column(String) # Phone Number
so_dod_id = Column(String) # DOD ID so_dod_id = Column(String) # DOD ID
number = Column(String, unique=True) # Task Order Number number = Column(String, unique=True) # Task Order Number
loa = Column(ARRAY(String)) # Line of Accounting (LOA) loa = Column(String) # Line of Accounting (LOA)
custom_clauses = Column(String) # Custom Clauses
@hybrid_property @hybrid_property
def csp_estimate(self): def csp_estimate(self):
@ -93,7 +94,12 @@ class TaskOrder(Base, mixins.TimestampsMixin):
@property @property
def is_submitted(self): def is_submitted(self):
return self.number is not None
return (
self.number is not None
and self.start_date is not None
and self.end_date is not None
)
@property @property
def status(self): def status(self):

View File

@ -71,7 +71,7 @@ def view_task_order(portfolio_id, task_order_id):
@portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>/review") @portfolios_bp.route("/portfolios/<portfolio_id>/task_order/<task_order_id>/review")
def ko_review(portfolio_id, task_order_id, form=None): def ko_review(portfolio_id, task_order_id):
task_order = TaskOrders.get(g.current_user, task_order_id) task_order = TaskOrders.get(g.current_user, task_order_id)
# get permission: make sure g.current_user is task_order.contracting_officer # get permission: make sure g.current_user is task_order.contracting_officer
portfolio = Portfolios.get(g.current_user, portfolio_id) portfolio = Portfolios.get(g.current_user, portfolio_id)
@ -79,7 +79,7 @@ def ko_review(portfolio_id, task_order_id, form=None):
"/portfolios/task_orders/review.html", "/portfolios/task_orders/review.html",
portfolio=portfolio, portfolio=portfolio,
task_order=task_order, task_order=task_order,
form=form or KOReviewForm(), form=KOReviewForm(obj=task_order),
) )
@ -92,14 +92,12 @@ def submit_ko_review(portfolio_id, task_order_id, form=None):
portfolio = Portfolios.get(g.current_user, portfolio_id) portfolio = Portfolios.get(g.current_user, portfolio_id)
if form.validate(): if form.validate():
form_data = {**http_request.form, **http_request.files} TaskOrders.update(user=g.current_user, task_order=task_order, **form.data)
TaskOrders.update(user=g.current_user, task_order=task_order, **form_data)
return redirect( return redirect(
url_for( url_for(
"portfolios.view_task_order", "portfolios.view_task_order",
portfolio_id=portfolio_id, portfolio_id=portfolio_id,
task_order_id=task_order_id, task_order_id=task_order_id,
form=form,
) )
) )
else: else:

View File

@ -213,7 +213,8 @@
{{ form.pdf.label }} {{ form.pdf.label }}
{{ form.pdf.description }} {{ form.pdf.description }}
{{ form.pdf }} {{ form.pdf }}
{{ TextInput(form.to_number) }} {{ TextInput(form.number) }}
{{ TextInput(form.loa) }} {{ TextInput(form.loa) }}
{{ TextInput(form.custom_clauses, paragraph=True) }} {{ TextInput(form.custom_clauses, paragraph=True) }}