From d16ff725020353a7dbb5add4665762fe92edf5c5 Mon Sep 17 00:00:00 2001 From: Jin-Sun-tts Date: Mon, 1 Jul 2024 12:11:21 -0400 Subject: [PATCH] add email list field --- .env | 2 +- app/forms.py | 12 +++++++++--- app/routes.py | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.env b/.env index 9142725..472d4ac 100644 --- a/.env +++ b/.env @@ -8,7 +8,7 @@ HARVEST_SOURCE_PORT=80 HARVEST_SOURCE_URL=http://localhost:${HARVEST_SOURCE_PORT} CF_API_URL=https://api.fr.cloud.gov HARVEST_RUNNER_APP_GUID=e6a8bba8-ed6d-4200-8280-67b46cebdc63 -CLIENT_ID=urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:datagov-dev-harvest-admin +CLIENT_ID=urn:gov:gsa:openidconnect.profiles:sp:sso:gsa:datagov-local-harvest-admin ISSUER=https://idp.int.identitysandbox.gov REDIRECT_URI=http://localhost:8080/callback FLASK_APP_SECRET_KEY=Px4o0MPEsCzHJRRSUDyt1VRi-lYF2W5VEzR13lylAgI diff --git a/app/forms.py b/app/forms.py index 0ab6b4b..cbb370d 100644 --- a/app/forms.py +++ b/app/forms.py @@ -4,13 +4,19 @@ from wtforms import SelectField, StringField, TextAreaField from wtforms.validators import URL, DataRequired, ValidationError - def validate_email_list(form, field): - emails = field.data.split(",") + emails = field.data for email in emails: if not re.match(r"[^@]+@[^@]+\.[^@]+", email.strip()): raise ValidationError("Invalid email address: {}".format(email)) +class EmailListField(TextAreaField): + def process_formdata(self, valuelist): + if valuelist: + raw_data = valuelist[0].replace("\r\n", ", ") + self.data = [email.strip() for email in raw_data .split(',')] + else: + self.data = [] class HarvestSourceForm(FlaskForm): organization_id = SelectField( @@ -18,7 +24,7 @@ class HarvestSourceForm(FlaskForm): ) name = StringField("Name", validators=[DataRequired()]) url = StringField("URL", validators=[DataRequired(), URL()]) - notification_emails = TextAreaField( + notification_emails = EmailListField( "Notification_emails", validators=[DataRequired(), validate_email_list] ) frequency = SelectField( diff --git a/app/routes.py b/app/routes.py index 74c74c3..489834a 100644 --- a/app/routes.py +++ b/app/routes.py @@ -190,7 +190,7 @@ def remove_user(email): def make_new_source_contract(form): return { "name": form.name.data, - "notification_emails": form.notification_emails.data.replace("\r\n", ", "), + "notification_emails": form.notification_emails.data, "frequency": form.frequency.data, "user_requested_frequency": form.frequency.data, "url": form.url.data,