From cee255270602e0e54427092c640242e4c4eb2de4 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 4 Dec 2023 14:52:48 -0800 Subject: [PATCH] notify-admin-931 --- app/main/forms.py | 17 +++++++++++++++++ app/main/views/user_profile.py | 17 +++++++++++++++++ app/models/user.py | 2 +- app/notify_client/user_api_client.py | 1 + app/templates/views/user-profile.html | 2 +- tests/app/test_navigation.py | 1 + 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index fb9b7eeac..b811e8c83 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -1279,6 +1279,23 @@ class ChangeNameForm(StripWhitespaceForm): new_name = GovukTextInputField("Your name") +class ChangePreferredTimezoneForm(StripWhitespaceForm): + def __init__(self, *args, **kwargs): + super(ChangePreferredTimezoneForm, self).__init__(*args, **kwargs) + self.new_preferred_timezone.choices = [ + ("US/Eastern", "US/Eastern"), + ("US/Central", "US/Central"), + ("US/Mountain", "US/Mountain"), + ("US/Pacific", "US/Pacific"), + ("US/Hawaii", "US/Hawaii"), + ] + + new_preferred_timezone = GovukRadiosField( + "What timezone would you like to use?", + default="US/Eastern", + ) + + class ChangeEmailForm(StripWhitespaceForm): def __init__(self, validate_email_func, *args, **kwargs): self.validate_email_func = validate_email_func diff --git a/app/main/views/user_profile.py b/app/main/views/user_profile.py index 9bd844254..5d10fbf75 100644 --- a/app/main/views/user_profile.py +++ b/app/main/views/user_profile.py @@ -24,6 +24,7 @@ from app.main.forms import ( ChangeMobileNumberForm, ChangeNameForm, ChangePasswordForm, + ChangePreferredTimezoneForm, ConfirmPasswordForm, ServiceOnOffSettingForm, TwoFactorForm, @@ -61,6 +62,22 @@ def user_profile_name(): ) +@main.route("/user-profile/preferred_timezone", methods=["GET", "POST"]) +@user_is_logged_in +def user_profile_preferred_timezone(): + form = ChangePreferredTimezoneForm(new_name=current_user.preferred_timezone) + + if form.validate_on_submit(): + current_user.update(preferred_timezone=form.new_preferred_timezone.data) + current_user.preferred_timezone = form.new_preferred_timezone.data + return redirect(url_for(".user_profile")) + return render_template( + "views/user-profile/change.html", + thing="preferred timezone", + form_field=form.new_preferred_timezone, + ) + + @main.route("/user-profile/email", methods=["GET", "POST"]) @user_is_logged_in @user_is_gov_user diff --git a/app/models/user.py b/app/models/user.py index abd887a4d..7e9f10632 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -54,7 +54,6 @@ class User(JSONModel, UserMixin): super().__init__(_dict) self.permissions = _dict.get("permissions", {}) self._platform_admin = _dict["platform_admin"] - self.preferred_timezone = "US/Eastern" @classmethod def from_id(cls, user_id): @@ -366,6 +365,7 @@ class User(JSONModel, UserMixin): "permissions": [x for x in self._permissions], "organizations": self.organization_ids, "current_session_id": self.current_session_id, + "preferred_timezone": self.preferred_timezone, } if hasattr(self, "_password"): dct["password"] = self._password diff --git a/app/notify_client/user_api_client.py b/app/notify_client/user_api_client.py index 542d1e96b..bfe2f7182 100644 --- a/app/notify_client/user_api_client.py +++ b/app/notify_client/user_api_client.py @@ -12,6 +12,7 @@ ALLOWED_ATTRIBUTES = { "updated_by", "current_session_id", "email_access_validated_at", + "preferred_timezone", } diff --git a/app/templates/views/user-profile.html b/app/templates/views/user-profile.html index 37f3cbdcf..58003e5e4 100644 --- a/app/templates/views/user-profile.html +++ b/app/templates/views/user-profile.html @@ -63,7 +63,7 @@ ) }} {% endcall %} - + IS IT HERE???? {{ current_user.preferred_timezone }} {% call row() %} {{ text_field('Preferred Timezone') }} {{ optional_text_field(current_user.preferred_timezone) }} diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index 5ae9a42d9..ae0abfcca 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -253,6 +253,7 @@ EXCLUDED_ENDPOINTS = tuple( "user_profile_mobile_number_delete", "user_profile_name", "user_profile_password", + "user_profile_preferred_timezone", "using_notify", "verify", "verify_email",