diff --git a/alembic/versions/0ff4c31c4d28_add_custom_clauses_to_task_order.py b/alembic/versions/0ff4c31c4d28_add_custom_clauses_to_task_order.py new file mode 100644 index 00000000..789d813b --- /dev/null +++ b/alembic/versions/0ff4c31c4d28_add_custom_clauses_to_task_order.py @@ -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 ### diff --git a/atst/forms/ko_review.py b/atst/forms/ko_review.py index 4081b5a3..8b882f21 100644 --- a/atst/forms/ko_review.py +++ b/atst/forms/ko_review.py @@ -29,7 +29,6 @@ class KOReviewForm(CacheableForm): message=translate("forms.ko_review.invalid_date"), ) ], - format="%m/%d/%Y", ) pdf = FileField( translate("forms.ko_review.pdf_label"), @@ -37,11 +36,11 @@ class KOReviewForm(CacheableForm): validators=[ FileAllowed( ["pdf", "png"], translate("forms.task_order.file_format_not_allowed") - ), + ) ], 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()] ) loa = StringField( diff --git a/atst/models/task_order.py b/atst/models/task_order.py index 846f1fbc..c38eb356 100644 --- a/atst/models/task_order.py +++ b/atst/models/task_order.py @@ -72,7 +72,8 @@ class TaskOrder(Base, mixins.TimestampsMixin): so_phone_number = Column(String) # Phone Number so_dod_id = Column(String) # DOD ID 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 def csp_estimate(self): @@ -93,7 +94,12 @@ class TaskOrder(Base, mixins.TimestampsMixin): @property 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 def status(self): diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py index 7d01f190..3a76e0db 100644 --- a/atst/routes/portfolios/task_orders.py +++ b/atst/routes/portfolios/task_orders.py @@ -71,7 +71,7 @@ def view_task_order(portfolio_id, task_order_id): @portfolios_bp.route("/portfolios//task_order//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) # get permission: make sure g.current_user is task_order.contracting_officer 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", portfolio=portfolio, task_order=task_order, - form=form or KOReviewForm(), + form=KOReviewForm(obj=task_order), ) @@ -92,22 +92,20 @@ def submit_ko_review(portfolio_id, task_order_id, form=None): portfolio = Portfolios.get(g.current_user, portfolio_id) 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( url_for( "portfolios.view_task_order", portfolio_id=portfolio_id, task_order_id=task_order_id, - form=form, ) ) else: return render_template( - "/portfolios/task_orders/review.html", - portfolio=portfolio, - task_order=task_order, - form=form, + "/portfolios/task_orders/review.html", + portfolio=portfolio, + task_order=task_order, + form=form, ) diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index a12e5ec7..dfdcc282 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -213,7 +213,8 @@ {{ form.pdf.label }} {{ form.pdf.description }} {{ form.pdf }} - {{ TextInput(form.to_number) }} + {{ TextInput(form.number) }} + {{ TextInput(form.loa) }} {{ TextInput(form.custom_clauses, paragraph=True) }}