diff --git a/src/registrar/forms/user_profile.py b/src/registrar/forms/user_profile.py index fe4d6d609..c04baa9e5 100644 --- a/src/registrar/forms/user_profile.py +++ b/src/registrar/forms/user_profile.py @@ -4,6 +4,7 @@ from registrar.models.contact import Contact from django.core.validators import MaxLengthValidator from phonenumber_field.widgets import RegionalPhoneNumberWidget +from registrar.models.utility.domain_helper import DomainHelper class UserProfileForm(forms.ModelForm): """Form for updating user profile.""" @@ -51,4 +52,6 @@ class UserProfileForm(forms.ModelForm): "required": "Enter your email address in the required format, like name@example.com." } self.fields["phone"].error_messages["required"] = "Enter your phone number." - self.domainInfo = None \ No newline at end of file + self.domainInfo = None + + DomainHelper.disable_field(self.fields["email"], disable_required=True) \ No newline at end of file diff --git a/src/registrar/templates/profile.html b/src/registrar/templates/profile.html index e91a68042..c4c5c5db6 100644 --- a/src/registrar/templates/profile.html +++ b/src/registrar/templates/profile.html @@ -19,6 +19,17 @@ Edit your User Profile | Back to manage your domains

+ {# messages block is under the back breadcrumb link #} + {% if messages %} + {% for message in messages %} +
+
+ {{ message }} +
+
+ {% endfor %} + {% endif %} + {% include "includes/form_errors.html" with form=form %}

Your profile

We require that you maintain accurate contact information. The details you provide will only be used to support the administration of .gov and won’t be made public.

Contact information

diff --git a/src/registrar/views/user_profile.py b/src/registrar/views/user_profile.py index 3530cccb7..ea1f1ffdf 100644 --- a/src/registrar/views/user_profile.py +++ b/src/registrar/views/user_profile.py @@ -4,7 +4,10 @@ import logging +from django.contrib import messages +from django.views.generic.edit import FormMixin from registrar.forms.user_profile import UserProfileForm +from django.urls import reverse from registrar.models import ( User, Contact, @@ -15,7 +18,7 @@ from registrar.views.utility.permission_views import UserProfilePermissionView logger = logging.getLogger(__name__) -class UserProfileView(UserProfilePermissionView): +class UserProfileView(UserProfilePermissionView, FormMixin): """ Base View for the Domain. Handles getting and setting the domain in session cache on GETs. Also provides methods for getting @@ -38,13 +41,39 @@ class UserProfileView(UserProfilePermissionView): logger.info(context) return self.render_to_response(context) - # def get_context_data(self, **kwargs): - # logger.info("in get_context_data") - # kwargs.setdefault("view", self) - # if self.extra_context is not None: - # kwargs.update(self.extra_context) - # return kwargs - + def get_success_url(self): + """Redirect to the overview page for the domain.""" + return reverse("user-profile") + + # def post(self, request, *args, **kwargs): + # # Handle POST request logic here + # form = self.get_form() + # if form.is_valid(): + # # Save form data or perform other actions + # return HttpResponseRedirect(reverse('profile_success')) # Redirect to a success page + # else: + # # Form is not valid, re-render the page with errors + # return self.render_to_response(self.get_context_data(form=form)) + + def post(self, request, *args, **kwargs): + self.object = self.get_object() + form = self.get_form() + form.instance.id = self.object.id + form.instance.created_at = self.object.created_at + form.instance.user = self.request.user + if form.is_valid(): + return self.form_valid(form) + else: + return self.form_invalid(form) + + def form_valid(self, form): + form.save() + + messages.success(self.request, "Your profile has been updated.") + + # superclass has the redirect + return super().form_valid(form) + # Override get_object to return the logged-in user def get_object(self, queryset=None): logger.info("in get_object")