Refactor views.create_homepage_form into its callers.

The indirection is no longer that useful, and obscures Django's conventional
style for calling a form.
This commit is contained in:
Rishi Gupta
2016-12-23 19:35:58 -08:00
committed by Tim Abbott
parent 146f2ca482
commit d6e7014f06
4 changed files with 14 additions and 20 deletions

View File

@@ -14,6 +14,7 @@ import jwt
import mock import mock
import re import re
from zerver.forms import HomepageForm
from zerver.lib.actions import do_deactivate_realm, do_deactivate_user, \ from zerver.lib.actions import do_deactivate_realm, do_deactivate_user, \
do_reactivate_realm, do_reactivate_user do_reactivate_realm, do_reactivate_user
from zerver.lib.initial_password import initial_password from zerver.lib.initial_password import initial_password
@@ -1467,7 +1468,7 @@ class TestMaybeSendToRegistration(ZulipTestCase):
return True return True
with self.settings(ONLY_SSO=True): with self.settings(ONLY_SSO=True):
with mock.patch('zerver.views.auth.create_homepage_form', return_value=Form()): with mock.patch('zerver.views.auth.HomepageForm', return_value=Form()):
self.assertEqual(PreregistrationUser.objects.all().count(), 0) self.assertEqual(PreregistrationUser.objects.all().count(), 0)
result = maybe_send_to_registration(request, 'hamlet@zulip.com') result = maybe_send_to_registration(request, 'hamlet@zulip.com')
self.assertEqual(result.status_code, 302) self.assertEqual(result.status_code, 302)
@@ -1501,7 +1502,7 @@ class TestMaybeSendToRegistration(ZulipTestCase):
user.save() user.save()
with self.settings(ONLY_SSO=True): with self.settings(ONLY_SSO=True):
with mock.patch('zerver.views.auth.create_homepage_form', return_value=Form()): with mock.patch('zerver.views.auth.HomepageForm', return_value=Form()):
self.assertEqual(PreregistrationUser.objects.all().count(), 1) self.assertEqual(PreregistrationUser.objects.all().count(), 1)
result = maybe_send_to_registration(request, email) result = maybe_send_to_registration(request, email)
self.assertEqual(result.status_code, 302) self.assertEqual(result.status_code, 302)

View File

@@ -12,7 +12,8 @@ from confirmation.models import Confirmation
from zilencer.models import Deployment from zilencer.models import Deployment
from zerver.views import do_change_password, create_homepage_form from zerver.forms import HomepageForm
from zerver.views import do_change_password
from zerver.views.invite import get_invitee_emails_set from zerver.views.invite import get_invitee_emails_set
from zerver.models import ( from zerver.models import (
get_realm_by_string_id, get_prereg_user_by_email, get_user_profile_by_email, get_realm_by_string_id, get_prereg_user_by_email, get_user_profile_by_email,
@@ -985,7 +986,7 @@ class UserSignUpTest(ZulipTestCase):
with self.settings(REALMS_HAVE_SUBDOMAINS = True): with self.settings(REALMS_HAVE_SUBDOMAINS = True):
request = HostRequestMock(host = realm.host) request = HostRequestMock(host = realm.host)
request.session = {} # type: ignore request.session = {} # type: ignore
form = create_homepage_form(request, {'email': 'user@acme.com'}) form = HomepageForm({'email': 'user@acme.com'}, realm=realm)
self.assertIn("trying to join, zulip, only allows users with e-mail", form.errors['email'][0]) self.assertIn("trying to join, zulip, only allows users with e-mail", form.errors['email'][0])
def test_failed_signup_due_to_invite_required(self): def test_failed_signup_due_to_invite_required(self):
@@ -995,7 +996,7 @@ class UserSignUpTest(ZulipTestCase):
realm.save() realm.save()
request = HostRequestMock(host = realm.host) request = HostRequestMock(host = realm.host)
request.session = {} # type: ignore request.session = {} # type: ignore
form = create_homepage_form(request, {'email': 'user@zulip.com'}) form = HomepageForm({'email': 'user@zulip.com'}, realm=realm)
self.assertIn("Please request an invite from", form.errors['email'][0]) self.assertIn("Please request an invite from", form.errors['email'][0])
def test_failed_signup_due_to_nonexistent_realm(self): def test_failed_signup_due_to_nonexistent_realm(self):
@@ -1003,7 +1004,7 @@ class UserSignUpTest(ZulipTestCase):
with self.settings(REALMS_HAVE_SUBDOMAINS = True): with self.settings(REALMS_HAVE_SUBDOMAINS = True):
request = HostRequestMock(host = 'acme.' + settings.EXTERNAL_HOST) request = HostRequestMock(host = 'acme.' + settings.EXTERNAL_HOST)
request.session = {} # type: ignore request.session = {} # type: ignore
form = create_homepage_form(request, {'email': 'user@acme.com'}) form = HomepageForm({'email': 'user@acme.com'}, realm=None)
self.assertIn("organization you are trying to join does not exist", form.errors['email'][0]) self.assertIn("organization you are trying to join does not exist", form.errors['email'][0])
def test_registration_through_ldap(self): def test_registration_through_ldap(self):

View File

@@ -296,15 +296,6 @@ def accounts_accept_terms(request):
'special_message_template': special_message_template}, 'special_message_template': special_message_template},
request=request) request=request)
def create_homepage_form(request, user_info=None):
# type: (HttpRequest, Optional[Dict[str, Any]]) -> HomepageForm
realm = get_realm_from_request(request)
if user_info:
return HomepageForm(user_info, realm=realm)
# An empty fields dict is not treated the same way as not
# providing it.
return HomepageForm(realm=realm)
def create_preregistration_user(email, request, realm_creation=False): def create_preregistration_user(email, request, realm_creation=False):
# type: (Text, HttpRequest, bool) -> HttpResponse # type: (Text, HttpRequest, bool) -> HttpResponse
domain = request.session.get("domain") domain = request.session.get("domain")
@@ -400,8 +391,9 @@ def get_realm_from_request(request):
def accounts_home(request): def accounts_home(request):
# type: (HttpRequest) -> HttpResponse # type: (HttpRequest) -> HttpResponse
realm = get_realm_from_request(request)
if request.method == 'POST': if request.method == 'POST':
form = create_homepage_form(request, user_info=request.POST) form = HomepageForm(request.POST, realm=realm)
if form.is_valid(): if form.is_valid():
email = form.cleaned_data['email'] email = form.cleaned_data['email']
send_registration_completion_email(email, request) send_registration_completion_email(email, request)
@@ -413,7 +405,7 @@ def accounts_home(request):
except ValidationError: except ValidationError:
return redirect_to_email_login_url(email) return redirect_to_email_login_url(email)
else: else:
form = create_homepage_form(request) form = HomepageForm(realm=realm)
return render_to_response('zerver/accounts_home.html', return render_to_response('zerver/accounts_home.html',
{'form': form, 'current_url': request.get_full_path}, {'form': form, 'current_url': request.get_full_path},
request=request) request=request)

View File

@@ -17,12 +17,12 @@ from six.moves import urllib
from typing import Any, Dict, Optional, Tuple, Text from typing import Any, Dict, Optional, Tuple, Text
from confirmation.models import Confirmation from confirmation.models import Confirmation
from zerver.forms import OurAuthenticationForm, WRONG_SUBDOMAIN_ERROR from zerver.forms import HomepageForm, OurAuthenticationForm, WRONG_SUBDOMAIN_ERROR
from zerver.lib.request import REQ, has_request_variables, JsonableError from zerver.lib.request import REQ, has_request_variables, JsonableError
from zerver.lib.response import json_success, json_error from zerver.lib.response import json_success, json_error
from zerver.lib.utils import get_subdomain from zerver.lib.utils import get_subdomain
from zerver.models import PreregistrationUser, UserProfile, remote_user_to_email, Realm from zerver.models import PreregistrationUser, UserProfile, remote_user_to_email, Realm
from zerver.views import create_homepage_form, create_preregistration_user, \ from zerver.views import create_preregistration_user, get_realm_from_request, \
redirect_and_log_into_subdomain redirect_and_log_into_subdomain
from zproject.backends import password_auth_enabled, dev_auth_enabled, google_auth_enabled from zproject.backends import password_auth_enabled, dev_auth_enabled, google_auth_enabled
from zproject.jinja2 import render_to_response from zproject.jinja2 import render_to_response
@@ -37,7 +37,7 @@ import ujson
def maybe_send_to_registration(request, email, full_name=''): def maybe_send_to_registration(request, email, full_name=''):
# type: (HttpRequest, Text, Text) -> HttpResponse # type: (HttpRequest, Text, Text) -> HttpResponse
form = create_homepage_form(request, user_info={'email': email}) form = HomepageForm({'email': email}, realm=get_realm_from_request(request))
request.verified_email = None request.verified_email = None
if form.is_valid(): if form.is_valid():
# Construct a PreregistrationUser object and send the user over to # Construct a PreregistrationUser object and send the user over to