From 4f9e5e3678d218e73ff48229ed5beb80387c34a7 Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Mon, 6 Aug 2018 12:28:51 +0100
Subject: [PATCH] Disable email field and add context to the message

---
 opentech/apply/users/forms.py            | 6 +++++-
 opentech/apply/users/tests/test_forms.py | 5 ++---
 opentech/apply/users/tests/test_views.py | 4 ----
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/opentech/apply/users/forms.py b/opentech/apply/users/forms.py
index b27eab0b8..8338010a6 100644
--- a/opentech/apply/users/forms.py
+++ b/opentech/apply/users/forms.py
@@ -1,5 +1,6 @@
 from django import forms
 from django.contrib.auth import get_user_model
+from django.utils.translation import gettext_lazy as _
 
 from wagtail.users.forms import UserEditForm, UserCreationForm
 
@@ -36,7 +37,10 @@ class ProfileForm(forms.ModelForm):
 
         if not self.instance.has_usable_password():
             # User is registered with oauth - no password change allowed
-            del self.fields['email']
+            email_field = self.fields['email']
+            email_field.disabled = True
+            email_field.required = False
+            email_field.help_text = _('You are registered using OAuth, please contact an admin if you need to change your email address.')
 
     def clean_slack(self):
         slack = self.cleaned_data['slack']
diff --git a/opentech/apply/users/tests/test_forms.py b/opentech/apply/users/tests/test_forms.py
index 06e81fb93..edb991775 100644
--- a/opentech/apply/users/tests/test_forms.py
+++ b/opentech/apply/users/tests/test_forms.py
@@ -48,10 +48,9 @@ class TestStaffProfileForm(BaseTestProfileForm):
     def setUp(self):
         self.staff = StaffFactory()
 
-    def test_cant_change_password(self):
+    def test_cant_change_email(self):
         new_email = 'me@this.com'
-        form = self.submit_form(self.staff, email=new_email)
-        self.assertFalse('email' in form.fields)
+        self.submit_form(self.staff, email=new_email)
         self.staff.refresh_from_db()
         self.assertNotEqual(new_email, self.staff.email)
 
diff --git a/opentech/apply/users/tests/test_views.py b/opentech/apply/users/tests/test_views.py
index 1943e5083..935dcdc98 100644
--- a/opentech/apply/users/tests/test_views.py
+++ b/opentech/apply/users/tests/test_views.py
@@ -43,7 +43,3 @@ class TestStaffProfileView(BaseTestProfielView):
     def test_can_set_slack_name(self):
         response = self.client.get(self.url, follow=True)
         self.assertContains(response, 'Slack name')
-
-    def test_can_not_set_email(self):
-        response = self.client.get(self.url, follow=True)
-        self.assertNotContains(response, 'Email')
-- 
GitLab