diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index f901950f..0001c2a3 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -25,6 +25,7 @@ from .data import ( ) from atst.utils.localization import translate + class RequiredIfNot(Required): # a validator which makes a field required only if # another field has a falsy value @@ -137,20 +138,19 @@ class OversightForm(CacheableForm): validators=[Required(), Length(min=10), IsNumber()], ) - am_cor = BooleanField( - translate("forms.task_order.oversight_am_cor_label"), - ) + am_cor = BooleanField(translate("forms.task_order.oversight_am_cor_label")) cor_first_name = StringField( translate("forms.task_order.oversight_first_name_label") ) cor_last_name = StringField(translate("forms.task_order.oversight_last_name_label")) cor_email = StringField(translate("forms.task_order.oversight_email_label")) cor_phone_number = TelField( - translate("forms.task_order.oversight_phone_label"), validators=[RequiredIfNot('am_cor'), PhoneNumber()] + translate("forms.task_order.oversight_phone_label"), + validators=[RequiredIfNot("am_cor"), PhoneNumber()], ) cor_dod_id = StringField( translate("forms.task_order.oversight_dod_id_label"), - validators=[RequiredIfNot('am_cor'), Length(min=10), IsNumber()], + validators=[RequiredIfNot("am_cor"), Length(min=10), IsNumber()], ) so_first_name = StringField( diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 8d1713ac..b59f1756 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -130,6 +130,16 @@ class UpdateTaskOrderWorkflow(ShowTaskOrderWorkflow): if "dev_team" in to_data and "other" not in to_data["dev_team"]: to_data["dev_team_other"] = None + if self.form_data.get("am_cor"): + cor_data = { + "cor_first_name": self.user.first_name, + "cor_last_name": self.user.last_name, + "cor_email": self.user.email, + "cor_phone_number": self.user.phone_number, + "cor_dod_id": self.user.dod_id, + } + to_data = {**to_data, **cor_data} + return to_data def validate(self): diff --git a/tests/routes/task_orders/test_new_task_order.py b/tests/routes/task_orders/test_new_task_order.py index 672bace0..f82f2db3 100644 --- a/tests/routes/task_orders/test_new_task_order.py +++ b/tests/routes/task_orders/test_new_task_order.py @@ -175,6 +175,13 @@ def test_other_text_not_saved_if_other_not_checked(task_order): assert not workflow.task_order.complexity_other +def test_cor_data_set_to_user_data_if_am_cor_is_checked(task_order): + to_data = {**task_order.to_dictionary(), "am_cor": True} + workflow = UpdateTaskOrderWorkflow(task_order.creator, to_data, 3, task_order.id) + workflow.update() + assert task_order.cor_dod_id == task_order.creator.dod_id + + def test_invite_officers_to_task_order(task_order, queue): to_data = { **TaskOrderFactory.dictionary(),