Commit 2e3129fb by Chris Rodriguez

AC-578 fixing link in label on logistration form

parent 2d9e38ca
...@@ -337,7 +337,7 @@ class RegisterFromCombinedPageTest(UniqueCourseTest): ...@@ -337,7 +337,7 @@ class RegisterFromCombinedPageTest(UniqueCourseTest):
# Verify that the expected errors are displayed. # Verify that the expected errors are displayed.
errors = self.register_page.wait_for_errors() errors = self.register_page.wait_for_errors()
self.assertIn(u'Please enter your Public username.', errors) self.assertIn(u'Please enter your Public username.', errors)
self.assertIn(u'You must agree to the edX Terms of Service and Honor Code.', errors) self.assertIn(u'You must agree to the edX Terms of Service and Honor Code', errors)
self.assertIn(u'Please select your Country.', errors) self.assertIn(u'Please select your Country.', errors)
self.assertIn(u'Please tell us your favorite movie.', errors) self.assertIn(u'Please tell us your favorite movie.', errors)
......
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
{ {
placeholder: '', placeholder: '',
name: 'honor_code', name: 'honor_code',
label: 'I agree to the <a href="/honor">Terms of Service and Honor Code</a>', label: 'I agree to the Terms of Service and Honor Code',
defaultValue: '', defaultValue: '',
type: 'checkbox', type: 'checkbox',
required: true, required: true,
......
...@@ -85,7 +85,9 @@ ...@@ -85,7 +85,9 @@
html.push(_.template(fieldTpl)($.extend(data[i], { html.push(_.template(fieldTpl)($.extend(data[i], {
form: this.formType, form: this.formType,
requiredStr: this.requiredStr requiredStr: this.requiredStr,
supplementalText: data[i].supplementalText || '',
supplementalLink: data[i].supplementalLink || ''
}))); })));
} }
......
...@@ -245,7 +245,8 @@ ...@@ -245,7 +245,8 @@
color: $red; color: $red;
} }
&[for="register-honor_code"], &[for="register-terms_of_service"] { &[for="register-honor_code"],
&[for="register-terms_of_service"] {
display: inline-block; display: inline-block;
margin: 5px 5px 0 0; margin: 5px 5px 0 0;
width: 90%; width: 90%;
...@@ -255,10 +256,6 @@ ...@@ -255,10 +256,6 @@
&[for="login-remember"] { &[for="login-remember"] {
display: inline-block; display: inline-block;
} }
a {
font-family: $sans-serif;
}
} }
.field-link { .field-link {
...@@ -604,3 +601,7 @@ ...@@ -604,3 +601,7 @@
font-weight: bold; font-weight: bold;
} }
} }
.supplemental-link {
margin: 1rem 0;
}
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
<%= label %> <%= label %>
<% if ( required && requiredStr ) { %> <%= requiredStr %></label><% } %> <% if ( required && requiredStr ) { %> <%= requiredStr %></label><% } %>
</label> </label>
<% if (supplementalLink && supplementalText) { %>
<div class="supplemental-link">
<a href="<%- supplementalLink %>"><%- supplementalText %></a>
</div>
<% } %>
<% } %> <% } %>
<% if ( type === 'select' ) { %> <% if ( type === 'select' ) { %>
...@@ -24,6 +29,11 @@ ...@@ -24,6 +29,11 @@
<% }); %> <% }); %>
</select> </select>
<% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %> <% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %>
<% if (supplementalLink && supplementalText) { %>
<div class="supplemental-link">
<a href="<%- supplementalLink %>"><%- supplementalText %></a>
</div>
<% } %>
<% } else if ( type === 'textarea' ) { %> <% } else if ( type === 'textarea' ) { %>
<textarea id="<%= form %>-<%= name %>" <textarea id="<%= form %>-<%= name %>"
type="<%= type %>" type="<%= type %>"
...@@ -41,6 +51,11 @@ ...@@ -41,6 +51,11 @@
} %> } %>
<% if ( required ) { %> aria-required="true" required<% } %> ></textarea> <% if ( required ) { %> aria-required="true" required<% } %> ></textarea>
<% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %> <% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %>
<% if (supplementalLink && supplementalText) { %>
<div class="supplemental-link">
<a href="<%- supplementalLink %>"><%- supplementalText %></a>
</div>
<% } %>
<% } else { %> <% } else { %>
<input id="<%= form %>-<%= name %>" <input id="<%= form %>-<%= name %>"
type="<%= type %>" type="<%= type %>"
...@@ -49,7 +64,7 @@ ...@@ -49,7 +64,7 @@
<% if ( instructions ) { %> aria-describedby="<%= form %>-<%= name %>-desc" <% } %> <% if ( instructions ) { %> aria-describedby="<%= form %>-<%= name %>-desc" <% } %>
<% if ( restrictions.min_length ) { %> minlength="<%= restrictions.min_length %>"<% } %> <% if ( restrictions.min_length ) { %> minlength="<%= restrictions.min_length %>"<% } %>
<% if ( restrictions.max_length ) { %> maxlength="<%= restrictions.max_length %>"<% } %> <% if ( restrictions.max_length ) { %> maxlength="<%= restrictions.max_length %>"<% } %>
<% if ( required ) { %> aria-required="true" required<% } %> <% if ( required ) { %> required<% } %>
<% if ( typeof errorMessages !== 'undefined' ) { <% if ( typeof errorMessages !== 'undefined' ) {
_.each(errorMessages, function( msg, type ) {%> _.each(errorMessages, function( msg, type ) {%>
data-errormsg-<%= type %>="<%= msg %>" data-errormsg-<%= type %>="<%= msg %>"
...@@ -65,6 +80,11 @@ ...@@ -65,6 +80,11 @@
</label> </label>
<% } %> <% } %>
<% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %> <% if ( instructions ) { %> <span class="tip tip-input" id="<%= form %>-<%= name %>-desc"><%= instructions %></span><% } %>
<% if (supplementalLink && supplementalText) { %>
<div class="supplemental-link">
<a href="<%- supplementalLink %>"><%- supplementalText %></a>
</div>
<% } %>
<% } %> <% } %>
<% if( form === 'login' && name === 'password' ) { %> <% if( form === 'login' && name === 'password' ) { %>
......
...@@ -138,7 +138,7 @@ class FormDescription(object): ...@@ -138,7 +138,7 @@ class FormDescription(object):
OVERRIDE_FIELD_PROPERTIES = [ OVERRIDE_FIELD_PROPERTIES = [
"label", "type", "defaultValue", "placeholder", "label", "type", "defaultValue", "placeholder",
"instructions", "required", "restrictions", "instructions", "required", "restrictions",
"options" "options", "supplementalLink", "supplementalText"
] ]
def __init__(self, method, submit_url): def __init__(self, method, submit_url):
...@@ -158,6 +158,7 @@ class FormDescription(object): ...@@ -158,6 +158,7 @@ class FormDescription(object):
self, name, label=u"", field_type=u"text", default=u"", self, name, label=u"", field_type=u"text", default=u"",
placeholder=u"", instructions=u"", required=True, restrictions=None, placeholder=u"", instructions=u"", required=True, restrictions=None,
options=None, include_default_option=False, error_messages=None, options=None, include_default_option=False, error_messages=None,
supplementalLink=u"", supplementalText=u""
): ):
"""Add a field to the form description. """Add a field to the form description.
...@@ -198,6 +199,12 @@ class FormDescription(object): ...@@ -198,6 +199,12 @@ class FormDescription(object):
that the messages should be displayed if the user does that the messages should be displayed if the user does
not provide a value for a required field. not provide a value for a required field.
supplementalLink (unicode): A qualified URL to provide supplemental information
for the form field. An example may be a link to documentation for creating
strong passwords.
supplementalText (unicode): The visible text for the supplemental link above.
Raises: Raises:
InvalidFieldError InvalidFieldError
...@@ -219,6 +226,8 @@ class FormDescription(object): ...@@ -219,6 +226,8 @@ class FormDescription(object):
"required": required, "required": required,
"restrictions": {}, "restrictions": {},
"errorMessages": {}, "errorMessages": {},
"supplementalLink": supplementalLink,
"supplementalText": supplementalText
} }
if field_type == "select": if field_type == "select":
......
...@@ -88,7 +88,9 @@ class FormDescriptionTest(TestCase): ...@@ -88,7 +88,9 @@ class FormDescriptionTest(TestCase):
}, },
error_messages={ error_messages={
"required": "You must provide a value!" "required": "You must provide a value!"
} },
supplementalLink="",
supplementalText="",
) )
self.assertEqual(desc.to_json(), json.dumps({ self.assertEqual(desc.to_json(), json.dumps({
...@@ -109,7 +111,9 @@ class FormDescriptionTest(TestCase): ...@@ -109,7 +111,9 @@ class FormDescriptionTest(TestCase):
}, },
"errorMessages": { "errorMessages": {
"required": "You must provide a value!" "required": "You must provide a value!"
} },
"supplementalLink": "",
"supplementalText": ""
} }
] ]
})) }))
......
...@@ -596,6 +596,8 @@ class LoginSessionViewTest(UserAPITestCase): ...@@ -596,6 +596,8 @@ class LoginSessionViewTest(UserAPITestCase):
"max_length": EMAIL_MAX_LENGTH "max_length": EMAIL_MAX_LENGTH
}, },
"errorMessages": {}, "errorMessages": {},
"supplementalText": "",
"supplementalLink": "",
}, },
{ {
"name": "password", "name": "password",
...@@ -610,6 +612,8 @@ class LoginSessionViewTest(UserAPITestCase): ...@@ -610,6 +612,8 @@ class LoginSessionViewTest(UserAPITestCase):
"max_length": PASSWORD_MAX_LENGTH "max_length": PASSWORD_MAX_LENGTH
}, },
"errorMessages": {}, "errorMessages": {},
"supplementalText": "",
"supplementalLink": "",
}, },
{ {
"name": "remember", "name": "remember",
...@@ -621,6 +625,8 @@ class LoginSessionViewTest(UserAPITestCase): ...@@ -621,6 +625,8 @@ class LoginSessionViewTest(UserAPITestCase):
"instructions": "", "instructions": "",
"restrictions": {}, "restrictions": {},
"errorMessages": {}, "errorMessages": {},
"supplementalText": "",
"supplementalLink": "",
}, },
]) ])
...@@ -758,6 +764,8 @@ class PasswordResetViewTest(UserAPITestCase): ...@@ -758,6 +764,8 @@ class PasswordResetViewTest(UserAPITestCase):
"max_length": EMAIL_MAX_LENGTH "max_length": EMAIL_MAX_LENGTH
}, },
"errorMessages": {}, "errorMessages": {},
"supplementalText": "",
"supplementalLink": "",
} }
]) ])
...@@ -1173,22 +1181,22 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1173,22 +1181,22 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
) )
@mock.patch.dict(settings.FEATURES, {"ENABLE_MKTG_SITE": True}) @mock.patch.dict(settings.FEATURES, {"ENABLE_MKTG_SITE": True})
def test_registration_honor_code_mktg_site_enabled(self): def test_registration_honor_code_mktg_site_enabled(self):
link_html = '<a href=\"https://www.test.com/honor\">Terms of Service and Honor Code</a>' link_label = 'Terms of Service and Honor Code'
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required"}, {"honor_code": "required"},
{ {
"label": "I agree to the {platform_name} {link_html}.".format( "label": "I agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
), ),
"name": "honor_code", "name": "honor_code",
"defaultValue": False, "defaultValue": False,
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} {link_html}.".format( "required": "You must agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
) )
} }
} }
...@@ -1197,22 +1205,22 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1197,22 +1205,22 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
@override_settings(MKTG_URLS_LINK_MAP={"HONOR": "honor"}) @override_settings(MKTG_URLS_LINK_MAP={"HONOR": "honor"})
@mock.patch.dict(settings.FEATURES, {"ENABLE_MKTG_SITE": False}) @mock.patch.dict(settings.FEATURES, {"ENABLE_MKTG_SITE": False})
def test_registration_honor_code_mktg_site_disabled(self): def test_registration_honor_code_mktg_site_disabled(self):
link_html = '<a href=\"/honor\">Terms of Service and Honor Code</a>' link_label = 'Terms of Service and Honor Code'
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required"}, {"honor_code": "required"},
{ {
"label": "I agree to the {platform_name} {link_html}.".format( "label": "I agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
), ),
"name": "honor_code", "name": "honor_code",
"defaultValue": False, "defaultValue": False,
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} {link_html}.".format( "required": "You must agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
) )
} }
} }
...@@ -1227,44 +1235,44 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1227,44 +1235,44 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
def test_registration_separate_terms_of_service_mktg_site_enabled(self): def test_registration_separate_terms_of_service_mktg_site_enabled(self):
# Honor code field should say ONLY honor code, # Honor code field should say ONLY honor code,
# not "terms of service and honor code" # not "terms of service and honor code"
link_html = '<a href=\"https://www.test.com/honor\">Honor Code</a>' link_label = 'Honor Code'
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required", "terms_of_service": "required"}, {"honor_code": "required", "terms_of_service": "required"},
{ {
"label": "I agree to the {platform_name} {link_html}.".format( "label": "I agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
), ),
"name": "honor_code", "name": "honor_code",
"defaultValue": False, "defaultValue": False,
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} {link_html}.".format( "required": "You must agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
) )
} }
} }
) )
# Terms of service field should also be present # Terms of service field should also be present
link_html = '<a href=\"https://www.test.com/tos\">Terms of Service</a>' link_label = 'Terms of Service'
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required", "terms_of_service": "required"}, {"honor_code": "required", "terms_of_service": "required"},
{ {
"label": "I agree to the {platform_name} {link_html}.".format( "label": "I agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
), ),
"name": "terms_of_service", "name": "terms_of_service",
"defaultValue": False, "defaultValue": False,
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} {link_html}.".format( "required": "You must agree to the {platform_name} {link_label}".format(
platform_name=settings.PLATFORM_NAME, platform_name=settings.PLATFORM_NAME,
link_html=link_html link_label=link_label
) )
} }
} }
...@@ -1278,7 +1286,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1278,7 +1286,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required", "terms_of_service": "required"}, {"honor_code": "required", "terms_of_service": "required"},
{ {
"label": "I agree to the {platform_name} <a href=\"/honor\">Honor Code</a>.".format( "label": "I agree to the {platform_name} Honor Code".format(
platform_name=settings.PLATFORM_NAME platform_name=settings.PLATFORM_NAME
), ),
"name": "honor_code", "name": "honor_code",
...@@ -1286,7 +1294,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1286,7 +1294,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} <a href=\"/honor\">Honor Code</a>.".format( "required": "You must agree to the {platform_name} Honor Code".format(
platform_name=settings.PLATFORM_NAME platform_name=settings.PLATFORM_NAME
) )
} }
...@@ -1297,7 +1305,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1297,7 +1305,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
self._assert_reg_field( self._assert_reg_field(
{"honor_code": "required", "terms_of_service": "required"}, {"honor_code": "required", "terms_of_service": "required"},
{ {
"label": "I agree to the {platform_name} <a href=\"/tos\">Terms of Service</a>.".format( "label": "I agree to the {platform_name} Terms of Service".format(
platform_name=settings.PLATFORM_NAME platform_name=settings.PLATFORM_NAME
), ),
"name": "terms_of_service", "name": "terms_of_service",
...@@ -1305,7 +1313,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase): ...@@ -1305,7 +1313,7 @@ class RegistrationViewTest(ThirdPartyAuthTestMixin, UserAPITestCase):
"type": "checkbox", "type": "checkbox",
"required": True, "required": True,
"errorMessages": { "errorMessages": {
"required": "You must agree to the {platform_name} <a href=\"/tos\">Terms of Service</a>.".format( "required": "You must agree to the {platform_name} Terms of Service".format( # pylint: disable=line-too-long
platform_name=settings.PLATFORM_NAME platform_name=settings.PLATFORM_NAME
) )
} }
......
...@@ -755,31 +755,30 @@ class RegistrationView(APIView): ...@@ -755,31 +755,30 @@ class RegistrationView(APIView):
""" """
# Separate terms of service and honor code checkboxes # Separate terms of service and honor code checkboxes
if self._is_field_visible("terms_of_service"): if self._is_field_visible("terms_of_service"):
terms_text = _(u"Honor Code") terms_label = _(u"Honor Code")
terms_link = marketing_link("HONOR")
terms_text = _(u"Review the Honor Code")
# Combine terms of service and honor code checkboxes # Combine terms of service and honor code checkboxes
else: else:
# Translators: This is a legal document users must agree to # Translators: This is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
terms_text = _(u"Terms of Service and Honor Code") terms_label = _(u"Terms of Service and Honor Code")
terms_link = marketing_link("HONOR")
terms_link = u"<a href=\"{url}\">{terms_text}</a>".format( terms_text = _(u"Review the Terms of Service and Honor Code")
url=marketing_link("HONOR"),
terms_text=terms_text
)
# Translators: "Terms of Service" is a legal document users must agree to # Translators: "Terms of Service" is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
label = _(u"I agree to the {platform_name} {terms_of_service}.").format( label = _(u"I agree to the {platform_name} {terms_of_service}").format(
platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME), platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME),
terms_of_service=terms_link terms_of_service=terms_label
) )
# Translators: "Terms of Service" is a legal document users must agree to # Translators: "Terms of Service" is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
error_msg = _(u"You must agree to the {platform_name} {terms_of_service}.").format( error_msg = _(u"You must agree to the {platform_name} {terms_of_service}").format(
platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME), platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME),
terms_of_service=terms_link terms_of_service=terms_label
) )
form_desc.add_field( form_desc.add_field(
...@@ -790,7 +789,9 @@ class RegistrationView(APIView): ...@@ -790,7 +789,9 @@ class RegistrationView(APIView):
required=required, required=required,
error_messages={ error_messages={
"required": error_msg "required": error_msg
} },
supplementalLink=terms_link,
supplementalText=terms_text
) )
def _add_terms_of_service_field(self, form_desc, required=True): def _add_terms_of_service_field(self, form_desc, required=True):
...@@ -805,24 +806,22 @@ class RegistrationView(APIView): ...@@ -805,24 +806,22 @@ class RegistrationView(APIView):
""" """
# Translators: This is a legal document users must agree to # Translators: This is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
terms_text = _(u"Terms of Service") terms_label = _(u"Terms of Service")
terms_link = u"<a href=\"{url}\">{terms_text}</a>".format( terms_link = marketing_link("TIS")
url=marketing_link("TOS"), terms_text = _(u"Review the Terms of Service")
terms_text=terms_text
)
# Translators: "Terms of service" is a legal document users must agree to # Translators: "Terms of service" is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
label = _(u"I agree to the {platform_name} {terms_of_service}.").format( label = _(u"I agree to the {platform_name} {terms_of_service}").format(
platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME), platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME),
terms_of_service=terms_link terms_of_service=terms_label
) )
# Translators: "Terms of service" is a legal document users must agree to # Translators: "Terms of service" is a legal document users must agree to
# in order to register a new account. # in order to register a new account.
error_msg = _(u"You must agree to the {platform_name} {terms_of_service}.").format( error_msg = _(u"You must agree to the {platform_name} {terms_of_service}").format(
platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME), platform_name=configuration_helpers.get_value("PLATFORM_NAME", settings.PLATFORM_NAME),
terms_of_service=terms_link terms_of_service=terms_label
) )
form_desc.add_field( form_desc.add_field(
...@@ -833,7 +832,9 @@ class RegistrationView(APIView): ...@@ -833,7 +832,9 @@ class RegistrationView(APIView):
required=required, required=required,
error_messages={ error_messages={
"required": error_msg "required": error_msg
} },
supplementalLink=terms_link,
supplementalText=terms_text
) )
def _apply_third_party_auth_overrides(self, request, form_desc): def _apply_third_party_auth_overrides(self, request, form_desc):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment