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 %}
+
+ {% 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")