Remove unused request form

This commit is contained in:
Patrick Smith
2019-02-20 15:32:08 -05:00
parent c3b79103a4
commit c8a139a941
4 changed files with 0 additions and 665 deletions

View File

@@ -1,248 +0,0 @@
import re
import pendulum
from wtforms.fields.html5 import DateField, EmailField
from wtforms.fields import StringField, FileField, FormField
from wtforms.validators import InputRequired, Email, Regexp, Optional
from flask_wtf.file import FileAllowed
from werkzeug.datastructures import FileStorage
from .fields import NewlineListField, SelectField, NumberStringField
from atst.forms.forms import CacheableForm
from atst.utils.localization import translate
from .data import FUNDING_TYPES
from .validators import DateRange
TREASURY_CODE_REGEX = re.compile(r"^0*([1-9]{4}|[1-9]{6})$")
BA_CODE_REGEX = re.compile(r"[0-9]{2}\w?$")
def number_to_int(num):
if num:
return int(num)
def coerce_choice(val):
if val is None:
return None
elif isinstance(val, str):
return val
else:
return val.value
class TaskOrderForm(CacheableForm):
def do_validate_number(self):
for field in self:
if field.name != "legacy_task_order-number":
field.validators.insert(0, Optional())
valid = super().validate()
for field in self:
if field.name != "legacy_task_order-number":
field.validators.pop(0)
return valid
number = StringField(
translate("forms.financial.number_label"),
description=translate("forms.financial.number_description"),
validators=[InputRequired()],
)
funding_type = SelectField(
description=translate("forms.financial.funding_type_description"),
choices=FUNDING_TYPES,
validators=[InputRequired()],
coerce=coerce_choice,
render_kw={"required": False},
)
funding_type_other = StringField(
translate("forms.financial.funding_type_other_label")
)
expiration_date = DateField(
translate("forms.financial.expiration_date_label"),
description=translate("forms.financial.expiration_date_description"),
validators=[
InputRequired(),
DateRange(
lower_bound=pendulum.duration(days=0),
upper_bound=pendulum.duration(years=100),
message="Must be a date in the future.",
),
],
format="%m/%d/%Y",
)
clin_0001 = NumberStringField(
translate("forms.financial.clin_0001_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_0001_description"),
filters=[number_to_int],
)
clin_0003 = NumberStringField(
translate("forms.financial.clin_0003_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_0003_description"),
filters=[number_to_int],
)
clin_1001 = NumberStringField(
translate("forms.financial.clin_1001_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_1001_description"),
filters=[number_to_int],
)
clin_1003 = NumberStringField(
translate("forms.financial.clin_1003_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_1003_description"),
filters=[number_to_int],
)
clin_2001 = NumberStringField(
translate("forms.financial.clin_2001_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_2001_description"),
filters=[number_to_int],
)
clin_2003 = NumberStringField(
translate("forms.financial.clin_2003_label"),
validators=[InputRequired()],
description=translate("forms.financial.clin_2003_description"),
filters=[number_to_int],
)
pdf = FileField(
translate("forms.financial.pdf_label"),
validators=[
FileAllowed(["pdf"], translate("forms.financial.pdf_allowed_description")),
InputRequired(),
],
render_kw={"required": False},
)
class RequestFinancialVerificationForm(CacheableForm):
uii_ids = NewlineListField(
translate("forms.financial.uii_ids_label"),
description=translate("forms.financial.uii_ids_description"),
)
pe_id = StringField(
translate("forms.financial.pe_id_label"),
description=translate("forms.financial.pe_id_description"),
validators=[InputRequired()],
)
treasury_code = StringField(
translate("forms.financial.treasury_code_label"),
description=translate("forms.financial.treasury_code_description"),
validators=[InputRequired(), Regexp(TREASURY_CODE_REGEX)],
)
ba_code = StringField(
translate("forms.financial.ba_code_label"),
description=translate("forms.financial.ba_code_description"),
validators=[InputRequired(), Regexp(BA_CODE_REGEX)],
)
fname_co = StringField(
translate("forms.financial.fname_co_label"), validators=[InputRequired()]
)
lname_co = StringField(
translate("forms.financial.lname_co_label"), validators=[InputRequired()]
)
email_co = EmailField(
translate("forms.financial.email_co_label"),
validators=[InputRequired(), Email()],
)
office_co = StringField(
translate("forms.financial.office_co_label"), validators=[InputRequired()]
)
fname_cor = StringField(
translate("forms.financial.fname_cor_label"), validators=[InputRequired()]
)
lname_cor = StringField(
translate("forms.financial.lname_cor_label"), validators=[InputRequired()]
)
email_cor = EmailField(
translate("forms.financial.email_cor_label"),
validators=[InputRequired(), Email()],
)
office_cor = StringField(
translate("forms.financial.office_cor_label"), validators=[InputRequired()]
)
def reset(self):
"""
Reset UII info so that it can be de-parsed rendered properly.
This is a stupid workaround, and there's probably a better way.
"""
self.uii_ids.process_data(self.uii_ids.data)
class FinancialVerificationForm(CacheableForm):
legacy_task_order = FormField(TaskOrderForm)
request = FormField(RequestFinancialVerificationForm)
def validate(self, *args, **kwargs):
if not kwargs.get("is_extended", True):
return self.do_validate_request()
if self.legacy_task_order.funding_type.data == "OTHER":
self.legacy_task_order.funding_type_other.validators.append(InputRequired())
to_pdf_validators = None
if kwargs.get("has_attachment"):
to_pdf_validators = list(self.legacy_task_order.pdf.validators)
self.legacy_task_order.pdf.validators = []
valid = super().validate()
if to_pdf_validators:
self.legacy_task_order.pdf.validators = to_pdf_validators
return valid
def do_validate_request(self):
"""
Called do_validate_request to avoid being considered an inline
validator by wtforms.
"""
request_valid = self.request.validate(self)
task_order_valid = self.legacy_task_order.do_validate_number()
return request_valid and task_order_valid
def reset(self):
self.request.reset()
@property
def pe_id(self):
return self.request.pe_id
@property
def has_pdf_upload(self):
return isinstance(self.legacy_task_order.pdf.data, FileStorage)
@property
def is_missing_task_order_number(self):
return "number" in self.errors.get("legacy_task_order", {})
@property
def is_only_missing_task_order_number(self):
return "task_order_number" in self.errors and len(self.errors) == 1

View File

@@ -1,222 +0,0 @@
import pendulum
from wtforms.fields.html5 import DateField, EmailField, IntegerField
from wtforms.fields import BooleanField, RadioField, StringField, TextAreaField
from wtforms.validators import Email, Length, Optional, InputRequired, DataRequired
from .fields import SelectField
from .forms import CacheableForm
from .edit_user import USER_FIELDS, inherit_field
from .data import (
SERVICE_BRANCHES,
ASSISTANCE_ORG_TYPES,
DATA_TRANSFER_AMOUNTS,
COMPLETION_DATE_RANGES,
)
from .validators import DateRange, IsNumber
from atst.domain.requests import Requests
from atst.utils.localization import translate
class DetailsOfUseForm(CacheableForm):
def validate(self, *args, **kwargs):
if self.jedi_migration.data == "no":
self.rationalization_software_systems.validators.append(Optional())
self.technical_support_team.validators.append(Optional())
self.organization_providing_assistance.validators.append(Optional())
self.engineering_assessment.validators.append(Optional())
self.data_transfers.validators.append(Optional())
self.expected_completion_date.validators.append(Optional())
elif self.jedi_migration.data == "yes":
if self.technical_support_team.data == "no":
self.organization_providing_assistance.validators.append(Optional())
self.cloud_native.validators.append(Optional())
try:
annual_spend = int(self.estimated_monthly_spend.data or 0) * 12
except ValueError:
annual_spend = 0
if annual_spend > Requests.ANNUAL_SPEND_THRESHOLD:
self.number_user_sessions.validators.append(InputRequired())
self.average_daily_traffic.validators.append(InputRequired())
return super(DetailsOfUseForm, self).validate(*args, **kwargs)
# Details of Use: General
dod_component = SelectField(
translate("forms.new_request.dod_component_label"),
description=translate("forms.new_request.dod_component_description"),
choices=SERVICE_BRANCHES,
validators=[InputRequired()],
)
jedi_usage = TextAreaField(
translate("forms.new_request.jedi_usage_label"),
description=translate("forms.new_request.jedi_usage_description"),
validators=[InputRequired()],
)
# Details of Use: Cloud Readiness
num_software_systems = IntegerField(
translate("forms.new_request.num_software_systems_label"),
description=translate("forms.new_request.num_software_systems_description"),
)
jedi_migration = RadioField(
translate("forms.new_request.jedi_migration_label"),
description=translate("forms.new_request.jedi_migration_description"),
choices=[("yes", "Yes"), ("no", "No")],
default="",
)
rationalization_software_systems = RadioField(
description=translate(
"forms.new_request.rationalization_software_systems_description"
),
choices=[("yes", "Yes"), ("no", "No"), ("In Progress", "In Progress")],
default="",
)
technical_support_team = RadioField(
description=translate("forms.new_request.technical_support_team_description"),
choices=[("yes", "Yes"), ("no", "No")],
default="",
)
organization_providing_assistance = RadioField( # this needs to be updated to use checkboxes instead of radio
description=translate(
"forms.new_request.organization_providing_assistance_description"
),
choices=ASSISTANCE_ORG_TYPES,
default="",
)
engineering_assessment = RadioField(
description=translate("forms.new_request.engineering_assessment_description"),
choices=[("yes", "Yes"), ("no", "No"), ("In Progress", "In Progress")],
default="",
)
data_transfers = SelectField(
description=translate("forms.new_request.data_transfers_description"),
choices=DATA_TRANSFER_AMOUNTS,
validators=[DataRequired()],
)
expected_completion_date = SelectField(
description=translate("forms.new_request.expected_completion_date_description"),
choices=COMPLETION_DATE_RANGES,
validators=[DataRequired()],
)
cloud_native = RadioField(
description=translate("forms.new_request.cloud_native_description"),
choices=[("yes", "Yes"), ("no", "No")],
default="",
)
# Details of Use: Financial Usage
estimated_monthly_spend = IntegerField(
translate("forms.new_request.estimated_monthly_spend_label"),
description=translate("forms.new_request.estimated_monthly_spend_description"),
)
dollar_value = IntegerField(
translate("forms.new_request.dollar_value_label"),
description=translate("forms.new_request.dollar_value_description"),
)
number_user_sessions = IntegerField(
description=translate("forms.new_request.number_user_sessions_description")
)
average_daily_traffic = IntegerField(
translate("forms.new_request.average_daily_traffic_label"),
description=translate("forms.new_request.average_daily_traffic_description"),
)
average_daily_traffic_gb = IntegerField(
translate("forms.new_request.average_daily_traffic_gb_label"),
description=translate("forms.new_request.average_daily_traffic_gb_description"),
)
start_date = DateField(
description=translate("forms.new_request.start_date_label"),
validators=[
InputRequired(),
DateRange(
lower_bound=pendulum.duration(days=1),
upper_bound=None,
message=translate(
"forms.new_request.start_date_date_range_validation_message"
),
),
],
format="%m/%d/%Y",
)
name = StringField(
translate("forms.new_request.name_label"),
description=translate("forms.new_request.name_description"),
validators=[
InputRequired(),
Length(
min=4,
max=100,
message=translate("forms.new_request.name_length_validation_message"),
),
],
)
class InformationAboutYouForm(CacheableForm):
fname_request = inherit_field(USER_FIELDS["first_name"])
lname_request = inherit_field(USER_FIELDS["last_name"])
email_request = inherit_field(USER_FIELDS["email"])
phone_number = inherit_field(USER_FIELDS["phone_number"])
phone_ext = inherit_field(USER_FIELDS["phone_ext"], required=False)
service_branch = inherit_field(USER_FIELDS["service_branch"])
citizenship = inherit_field(USER_FIELDS["citizenship"])
designation = inherit_field(USER_FIELDS["designation"])
date_latest_training = inherit_field(USER_FIELDS["date_latest_training"])
class PortfolioOwnerForm(CacheableForm):
def validate(self, *args, **kwargs):
if self.am_poc.data:
# Prepend Optional validators so that the validation chain
# halts if no data exists.
self.fname_poc.validators.insert(0, Optional())
self.lname_poc.validators.insert(0, Optional())
self.email_poc.validators.insert(0, Optional())
self.dodid_poc.validators.insert(0, Optional())
return super().validate(*args, **kwargs)
am_poc = BooleanField(
translate("forms.new_request.am_poc_label"),
default=False,
false_values=(False, "false", "False", "no", ""),
)
fname_poc = StringField(
translate("forms.new_request.fname_poc_label"), validators=[InputRequired()]
)
lname_poc = StringField(
translate("forms.new_request.lname_poc_label"), validators=[InputRequired()]
)
email_poc = EmailField(
translate("forms.new_request.email_poc_label"),
validators=[InputRequired(), Email()],
)
dodid_poc = StringField(
translate("forms.new_request.dodid_poc_label"),
validators=[InputRequired(), Length(min=10), IsNumber()],
)
class ReviewAndSubmitForm(CacheableForm):
reviewed = BooleanField(translate("forms.new_request.reviewed_label"))