Merge pull request #370 from alphagov/add-tour

Make first time use clearer
This commit is contained in:
Chris Hill-Scott
2016-04-04 13:40:37 +01:00
30 changed files with 343 additions and 212 deletions

View File

@@ -23,5 +23,6 @@ from app.main.views import (
api_keys,
manage_users,
invites,
all_services
all_services,
tour
)

View File

@@ -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='Cant 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='Cant 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='Cant 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='Cant 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='Cant 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='Cant 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='Cant 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='Cant 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 cant send an invitation to yourself")
class TwoFactorForm(Form):
@@ -149,7 +149,7 @@ class AddServiceForm(Form):
name = StringField(
'Service name',
validators=[
DataRequired(message='Service name cant be empty')
DataRequired(message='Cant be empty')
]
)
@@ -173,7 +173,7 @@ class ServiceNameForm(Form):
name = StringField(
u'New name',
validators=[
DataRequired(message='Service name cant be empty')
DataRequired(message='Cant 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="Cant be empty")])
template_content = TextAreaField(
u'Message',
validators=[DataRequired(message="Template content cannot be empty")])
u'Message content',
validators=[DataRequired(message="Cant be empty")])
class EmailTemplateForm(SMSTemplateForm):
subject = StringField(
u'Subject',
validators=[DataRequired(message="Subject cannot be empty")])
validators=[DataRequired(message="Cant be empty")])
class ForgotPasswordForm(Form):

View File

@@ -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',

View File

@@ -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
View 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 Nicks PR is merged
current_page=page,
next_page=(page + 1)
)