parse contract dates into datetime objects

This commit is contained in:
leigh-mil 2019-09-25 16:30:53 -04:00
parent df5f4b9d3e
commit 92243965ec
6 changed files with 15 additions and 19 deletions

View File

@ -2,6 +2,7 @@ import os
import re import re
import pathlib import pathlib
from configparser import ConfigParser from configparser import ConfigParser
from datetime import datetime
from flask import Flask, request, g, session from flask import Flask, request, g, session
from flask_session import Session from flask_session import Session
import redis import redis
@ -175,6 +176,12 @@ def map_config(config):
# with a Beat job once a day) # with a Beat job once a day)
"CELERY_RESULT_EXPIRES": 0, "CELERY_RESULT_EXPIRES": 0,
"CELERY_RESULT_EXTENDED": True, "CELERY_RESULT_EXTENDED": True,
"CONTRACT_START_DATE": datetime.strptime(
config.get("default", "CONTRACT_START_DATE"), "%Y-%m-%d"
).date(),
"CONTRACT_END_DATE": datetime.strptime(
config.get("default", "CONTRACT_END_DATE"), "%Y-%m-%d"
).date(),
} }

View File

@ -9,7 +9,6 @@ from wtforms.fields import (
from wtforms.fields.html5 import DateField from wtforms.fields.html5 import DateField
from wtforms.validators import Required, Optional, Length, NumberRange, ValidationError from wtforms.validators import Required, Optional, Length, NumberRange, ValidationError
from flask_wtf import FlaskForm from flask_wtf import FlaskForm
from datetime import datetime
from numbers import Number from numbers import Number
from .data import JEDI_CLIN_TYPES from .data import JEDI_CLIN_TYPES
@ -85,12 +84,8 @@ class CLINForm(FlaskForm):
def validate(self, *args, **kwargs): def validate(self, *args, **kwargs):
valid = super().validate(*args, **kwargs) valid = super().validate(*args, **kwargs)
contract_start = datetime.strptime( contract_start = app.config.get("CONTRACT_START_DATE")
app.config.get("CONTRACT_START_DATE"), "%Y-%m-%d" contract_end = app.config.get("CONTRACT_END_DATE")
).date()
contract_end = datetime.strptime(
app.config.get("CONTRACT_END_DATE"), "%Y-%m-%d"
).date()
if ( if (
self.start_date.data self.start_date.data

View File

@ -46,7 +46,7 @@ export default {
this.minEndDate = this.calcMinEndDate(date) this.minEndDate = this.calcMinEndDate(date)
} }
} else if (event.name.includes(END_DATE)) { } else if (event.name.includes(END_DATE)) {
if (event.valid != undefined && event.valid ) { if (event.valid != undefined && event.valid) {
var date = new Date(event.value) var date = new Date(event.value)
this.maxStartDate = this.calcMaxStartDate(date) this.maxStartDate = this.calcMaxStartDate(date)
} }

View File

@ -128,8 +128,6 @@
{{ 'task_orders.form.pop' | translate }} {{ 'task_orders.form.pop' | translate }}
</div> </div>
</div> </div>
{% set contract_start_formatted = contract_start | dateFromString(formatter="%Y-%m-%d") %}
{% set contract_end_formatted = contract_end | dateFromString(formatter="%Y-%m-%d") %}
{% if fields %} {% if fields %}
{{ PopDateRange(start_field=fields.start_date, end_field=fields.end_date, watch=True, optional=False, mindate=contract_start, maxdate=contract_end) }} {{ PopDateRange(start_field=fields.start_date, end_field=fields.end_date, watch=True, optional=False, mindate=contract_start, maxdate=contract_end) }}
{% else %} {% else %}

View File

@ -48,7 +48,7 @@
</p> </p>
<div v-if='minError' class="usa-input-error-message"> <div v-if='minError' class="usa-input-error-message">
PoP start date must be on or after {{ mindate | dateFromString(formatter="%Y-%m-%d") | formattedDate(formatter="%B %d, %Y") }}. PoP start date must be on or after {{ mindate | formattedDate(formatter="%B %d, %Y") }}.
</div> </div>
<div v-if='maxError' class="usa-input-error-message"> <div v-if='maxError' class="usa-input-error-message">
PoP start date must be before end date. PoP start date must be before end date.
@ -137,7 +137,7 @@
<div class="usa-input__title"> <div class="usa-input__title">
{{ 'task_orders.form.pop_end' | translate }} {{ 'task_orders.form.pop_end' | translate }}
</div> </div>
{% set formatted_end_date = maxdate | dateFromString(formatter="%Y-%m-%d") | formattedDate(formatter="%B %d, %Y") %} {% set formatted_end_date = maxdate | formattedDate(formatter="%B %d, %Y") %}
{{ Alert(message="task_orders.form.pop_end_alert" | translate({'end_date': formatted_end_date })) }} {{ Alert(message="task_orders.form.pop_end_alert" | translate({'end_date': formatted_end_date })) }}
<p class='usa-input__help'> <p class='usa-input__help'>
@ -148,7 +148,7 @@
PoP end date must be after start date. PoP end date must be after start date.
</div> </div>
<div v-if='maxError' class="usa-input-error-message"> <div v-if='maxError' class="usa-input-error-message">
PoP end date must be on or after {{ maxdate | dateFromString(formatter="%Y-%m-%d") | formattedDate(formatter="%B %d, %Y") }}. PoP end date must be on or after {{ formatted_end_date }}.
</div> </div>
</legend> </legend>

View File

@ -38,12 +38,8 @@ def test_clin_form_start_date_before_end_date():
def test_clin_form_pop_dates_within_contract_dates(): def test_clin_form_pop_dates_within_contract_dates():
CONTRACT_START_DATE = datetime.datetime.strptime( CONTRACT_START_DATE = app.config.get("CONTRACT_START_DATE")
app.config.get("CONTRACT_START_DATE"), "%Y-%m-%d" CONTRACT_END_DATE = app.config.get("CONTRACT_END_DATE")
).date()
CONTRACT_END_DATE = datetime.datetime.strptime(
app.config.get("CONTRACT_END_DATE"), "%Y-%m-%d"
).date()
invalid_start = CONTRACT_START_DATE - relativedelta(months=1) invalid_start = CONTRACT_START_DATE - relativedelta(months=1)
invalid_end = CONTRACT_END_DATE + relativedelta(months=1) invalid_end = CONTRACT_END_DATE + relativedelta(months=1)