Migration to add custom_clauses to TO; form fixes
This commit is contained in:
parent
be003c1821
commit
40780bf244
@ -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 ###
|
@ -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(
|
||||||
|
@ -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):
|
||||||
|
@ -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:
|
||||||
|
@ -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) }}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user