mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-19 05:59:44 -04:00
Merge pull request #370 from alphagov/add-tour
Make first time use clearer
This commit is contained in:
@@ -23,5 +23,6 @@ from app.main.views import (
|
||||
api_keys,
|
||||
manage_users,
|
||||
invites,
|
||||
all_services
|
||||
all_services,
|
||||
tour
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@ from app.main.validators import (Blacklist, CsvFileValidator, ValidEmailDomainRe
|
||||
def email_address(label='Email address'):
|
||||
return EmailField(label, validators=[
|
||||
Length(min=5, max=255),
|
||||
DataRequired(message='Email cannot be empty'),
|
||||
DataRequired(message='Can’t be empty'),
|
||||
Email(message='Enter a valid email address'),
|
||||
ValidEmailDomainRegex()])
|
||||
|
||||
@@ -37,35 +37,35 @@ class UKMobileNumber(TelField):
|
||||
|
||||
def mobile_number():
|
||||
return UKMobileNumber('Mobile phone number',
|
||||
validators=[DataRequired(message='Cannot be empty')])
|
||||
validators=[DataRequired(message='Can’t be empty')])
|
||||
|
||||
|
||||
def password(label='Create a password'):
|
||||
return PasswordField(label,
|
||||
validators=[DataRequired(message='Password can not be empty'),
|
||||
Length(10, 255, message='Password must be at least 10 characters'),
|
||||
validators=[DataRequired(message='Can’t be empty'),
|
||||
Length(10, 255, message='Must be at least 10 characters'),
|
||||
Blacklist(message='That password is blacklisted, too common')])
|
||||
|
||||
|
||||
def sms_code():
|
||||
verify_code = '^\d{5}$'
|
||||
return StringField('Text message code',
|
||||
validators=[DataRequired(message='Text message confirmation code can not be empty'),
|
||||
validators=[DataRequired(message='Can’t be empty'),
|
||||
Regexp(regex=verify_code,
|
||||
message='Text message confirmation code must be 5 digits')])
|
||||
message='Must be 5 digits')])
|
||||
|
||||
|
||||
def email_code():
|
||||
verify_code = '^\d{5}$'
|
||||
return StringField("Email code",
|
||||
validators=[DataRequired(message='Email confirmation code can not be empty'),
|
||||
Regexp(regex=verify_code, message='Email confirmation code must be 5 digits')])
|
||||
validators=[DataRequired(message='Can’t be empty'),
|
||||
Regexp(regex=verify_code, message='Must be 5 digits')])
|
||||
|
||||
|
||||
class LoginForm(Form):
|
||||
email_address = StringField('Email address', validators=[
|
||||
Length(min=5, max=255),
|
||||
DataRequired(message='Email cannot be empty'),
|
||||
DataRequired(message='Can’t be empty'),
|
||||
Email(message='Enter a valid email address')
|
||||
])
|
||||
password = PasswordField('Password', validators=[
|
||||
@@ -76,7 +76,7 @@ class LoginForm(Form):
|
||||
class RegisterUserForm(Form):
|
||||
|
||||
name = StringField('Full name',
|
||||
validators=[DataRequired(message='Name can not be empty')])
|
||||
validators=[DataRequired(message='Can’t be empty')])
|
||||
email_address = email_address()
|
||||
mobile_number = mobile_number()
|
||||
password = password()
|
||||
@@ -84,7 +84,7 @@ class RegisterUserForm(Form):
|
||||
|
||||
class RegisterUserFromInviteForm(Form):
|
||||
name = StringField('Full name',
|
||||
validators=[DataRequired(message='Name can not be empty')])
|
||||
validators=[DataRequired(message='Can’t be empty')])
|
||||
mobile_number = mobile_number()
|
||||
password = password()
|
||||
service = HiddenField('service')
|
||||
@@ -108,7 +108,7 @@ class InviteUserForm(PermissionsForm):
|
||||
|
||||
def validate_email_address(self, field):
|
||||
if field.data.lower() == self.invalid_email_address:
|
||||
raise ValidationError("You can't send an invitation to yourself")
|
||||
raise ValidationError("You can’t send an invitation to yourself")
|
||||
|
||||
|
||||
class TwoFactorForm(Form):
|
||||
@@ -149,7 +149,7 @@ class AddServiceForm(Form):
|
||||
name = StringField(
|
||||
'Service name',
|
||||
validators=[
|
||||
DataRequired(message='Service name can’t be empty')
|
||||
DataRequired(message='Can’t be empty')
|
||||
]
|
||||
)
|
||||
|
||||
@@ -173,7 +173,7 @@ class ServiceNameForm(Form):
|
||||
name = StringField(
|
||||
u'New name',
|
||||
validators=[
|
||||
DataRequired(message='Service name can’t be empty')
|
||||
DataRequired(message='Can’t be empty')
|
||||
])
|
||||
|
||||
def validate_name(self, a):
|
||||
@@ -199,18 +199,18 @@ class ConfirmPasswordForm(Form):
|
||||
class SMSTemplateForm(Form):
|
||||
name = StringField(
|
||||
u'Template name',
|
||||
validators=[DataRequired(message="Template name cannot be empty")])
|
||||
validators=[DataRequired(message="Can’t be empty")])
|
||||
|
||||
template_content = TextAreaField(
|
||||
u'Message',
|
||||
validators=[DataRequired(message="Template content cannot be empty")])
|
||||
u'Message content',
|
||||
validators=[DataRequired(message="Can’t be empty")])
|
||||
|
||||
|
||||
class EmailTemplateForm(SMSTemplateForm):
|
||||
|
||||
subject = StringField(
|
||||
u'Subject',
|
||||
validators=[DataRequired(message="Subject cannot be empty")])
|
||||
validators=[DataRequired(message="Can’t be empty")])
|
||||
|
||||
|
||||
class ForgotPasswordForm(Form):
|
||||
|
||||
@@ -44,7 +44,7 @@ def add_service():
|
||||
user_id=session['user_id'],
|
||||
email_from=email_from)
|
||||
|
||||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||||
return redirect(url_for('main.tour', service_id=service_id, page=1))
|
||||
else:
|
||||
return render_template(
|
||||
'views/add-service.html',
|
||||
|
||||
@@ -77,7 +77,6 @@ def choose_template(service_id, template_type):
|
||||
|
||||
if template_type not in ['email', 'sms']:
|
||||
abort(404)
|
||||
jobs = job_api_client.get_job(service_id)['data']
|
||||
|
||||
return render_template(
|
||||
'views/choose-template.html',
|
||||
@@ -91,7 +90,6 @@ def choose_template(service_id, template_type):
|
||||
template_type=template_type,
|
||||
page_heading=get_page_headings(template_type),
|
||||
service=service,
|
||||
has_jobs=len(jobs),
|
||||
service_id=service_id
|
||||
)
|
||||
|
||||
|
||||
15
app/main/views/tour.py
Normal file
15
app/main/views/tour.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from flask import render_template
|
||||
from flask_login import login_required
|
||||
|
||||
from app.main import main
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/tour/<int:page>")
|
||||
@login_required
|
||||
def tour(service_id, page):
|
||||
return render_template(
|
||||
'views/tour/{}.html'.format(page),
|
||||
service_id=service_id, # TODO: fix when Nick’s PR is merged
|
||||
current_page=page,
|
||||
next_page=(page + 1)
|
||||
)
|
||||
Reference in New Issue
Block a user