Create CLINs when creating a TO

This commit is contained in:
leigh-mil
2019-06-04 11:42:14 -04:00
parent 633e1b6a37
commit 36200e01ad
8 changed files with 161 additions and 33 deletions

View File

@@ -1,6 +1,7 @@
from flask import current_app as app
from atst.database import db
from atst.models.clin import CLIN
from atst.models.task_order import TaskOrder
from . import BaseDomainClass
@@ -18,27 +19,49 @@ class TaskOrders(BaseDomainClass):
UNCLASSIFIED_FUNDING = []
@classmethod
def create(cls, creator, portfolio_id, **kwargs):
task_order = TaskOrder(portfolio_id=portfolio_id, creator=creator)
for key, value in kwargs.items():
setattr(task_order, key, value)
def create(cls, creator, portfolio_id, number, clins):
task_order = TaskOrder(
portfolio_id=portfolio_id, creator=creator, number=number
)
db.session.add(task_order)
db.session.commit()
TaskOrders.create_clins(task_order.id, clins)
return task_order
@classmethod
def update(cls, task_order_id, **kwargs):
def update(cls, task_order_id, number, clins):
task_order = TaskOrders.get(task_order_id)
for key, value in kwargs.items():
setattr(task_order, key, value)
db.session.add(task_order)
db.session.commit()
for clin in task_order.clins:
db.session.delete(clin)
db.session.commit()
if number != task_order.number:
task_order.number = number
db.session.add(task_order)
db.session.commit()
TaskOrders.create_clins(task_order_id, clins)
return task_order
@classmethod
def create_clins(cls, task_order_id, clin_list):
for clin_data in clin_list:
clin = CLIN(
task_order_id=task_order_id,
number=clin_data["number"],
loas=clin_data["loas"],
start_date=clin_data["start_date"],
end_date=clin_data["end_date"],
obligated_amount=clin_data["obligated_amount"],
jedi_clin_type=clin_data["jedi_clin_type"],
)
db.session.add(clin)
db.session.commit()
@classmethod
def section_completion_status(cls, task_order, section):
if section in TaskOrders.mission_owner_sections():

View File

@@ -223,8 +223,8 @@ ENV_ROLES = [(role.value, role.value) for role in CSPRole] + [
]
JEDI_CLIN_TYPES = [
("jedi_clin_0001", translate("forms.task_order.clin_01_label")),
("jedi_clin_0002", translate("forms.task_order.clin_02_label")),
("jedi_clin_0003", translate("forms.task_order.clin_03_label")),
("jedi_clin_0004", translate("forms.task_order.clin_04_label")),
("JEDI_CLIN_1", translate("forms.task_order.clin_01_label")),
("JEDI_CLIN_2", translate("forms.task_order.clin_02_label")),
("JEDI_CLIN_3", translate("forms.task_order.clin_03_label")),
("JEDI_CLIN_4", translate("forms.task_order.clin_04_label")),
]

View File

@@ -12,7 +12,7 @@ from atst.utils.localization import translate
class CLINForm(FlaskForm):
jedi_clin_type = SelectField("Jedi CLIN type", choices=JEDI_CLIN_TYPES)
clin_number = StringField(validators=[Required()])
number = StringField(validators=[Required()])
start_date = DateField(
translate("forms.task_order.start_date_label"),
format="%m/%d/%Y",
@@ -23,7 +23,7 @@ class CLINForm(FlaskForm):
format="%m/%d/%Y",
validators=[Required()],
)
obligated_funds = DecimalField()
obligated_amount = DecimalField()
loas = FieldList(StringField())

View File

@@ -7,10 +7,10 @@ from atst.models import Base, mixins, types
class JEDICLINType(Enum):
JEDI_CLIN_1 = "jedi clin 0001"
JEDI_CLIN_2 = "jedi clin 0002"
JEDI_CLIN_3 = "jedi clin 0003"
JEDI_CLIN_4 = "jedi clin 0004"
JEDI_CLIN_1 = "JEDI_CLIN_1"
JEDI_CLIN_2 = "JEDI_CLIN_2"
JEDI_CLIN_3 = "JEDI_CLIN_3"
JEDI_CLIN_4 = "JEDI_CLIN_4"
class CLIN(Base, mixins.TimestampsMixin):

View File

@@ -34,7 +34,7 @@ class TaskOrder(Base, mixins.TimestampsMixin):
signer_dod_id = Column(String)
signed_at = Column(DateTime)
clins = relationship("CLIN")
clins = relationship("CLIN", back_populates="task_order")
@hybrid_property
def pdf(self):