Commit Graph

14648 Commits

Author SHA1 Message Date
Chris Hill-Scott
f625853388 Merge pull request #3569 from alphagov/remove-regions
Remove ‘Regions of England’ library
2020-08-13 11:19:42 +01:00
Pea Tyczynska
1da336827b Make agreement test work with both error message classes 2020-08-13 11:00:28 +01:00
Pea Tyczynska
2252e68d37 Remove duplicate spellcheck false for email fields 2020-08-13 10:53:28 +01:00
Chris Hill-Scott
8ef1e98745 Remove ‘Regions of England’ library
It made for a good early demo to show how we could have different
libraries, but we’d don’t think there’s a strong user need for being
able to broadcast to a region of England.

Regions also have the problem that:
- they are ambiguous – both England and Scotland have a region called
  ‘South east’
- Northern Ireland doesn’t have formal regions

This commit removes the regions library.
2020-08-12 18:03:50 +01:00
Chris Hill-Scott
a85134ee22 Merge pull request #3563 from alphagov/better-library-examples
Improve examples given for broadcast area libraries
2020-08-12 16:50:14 +01:00
Chris Hill-Scott
4242078885 Always show 4 items in the example list
If a library has lots of items then the first 3 should be shown, with
a count of how many more there are, for a total of 4 list items:
> a, b, c, and 23 more

If the library only has 4 items then all 4 should be shown, with
consistent use of conjunction and Oxford comma[1]:
> a, b, c, and d

This keeps the lengths of the examples nice and consistent.

1. We use an Oxford comma because it helps disambiguate when an area
itself has a comma or ‘and’ in it, for example ‘Armagh City, Banbridge
and Craigavon’
2020-08-12 16:34:17 +01:00
Chris Hill-Scott
dfa2ae0ced Order areas by name in examples
When you click through to the page for a library you see the available
areas in alphabetical order. The examples given for each library should
match this.
2020-08-12 16:34:17 +01:00
Chris Hill-Scott
53fd5b8869 Exclude grouped areas from examples
The given examples should match the choices offered when you visit the
next page. The choices offered on the next page are either the areas
(when a library is not grouped) or the groups (when a library is
grouped).

This commit makes the examples match the choices by excluding sub-areas,
ie those that have a grouping ID.
2020-08-12 16:34:17 +01:00
Chris Hill-Scott
40dacdeac9 Fix live search when selecting broadcast sub areas
It was targeting the wrong element because it hadn’t been updated to
reflect that we’re now using the Design System checkboxes.
2020-08-12 16:33:00 +01:00
Toby Lorne
4ba157ae8a deps: bump notifications-utils to 41
Signed-off-by: Toby Lorne <toby.lornewelch-richards@digital.cabinet-office.gov.uk>
2020-08-12 16:11:38 +01:00
David McDonald
48fee71c2b Reduce risk of commiting files with personal information in 2020-08-12 15:38:01 +01:00
Chris Hill-Scott
781847d32c Merge pull request #3557 from alphagov/view-only-broadcast-page
Let users without `send_messages` view broadcasts
2020-08-12 15:16:39 +01:00
Katie Smith
6a49e5bcbd Add international letter rates to pricing page
This also updates a few pages where we listed the minimum and maximum
letter price.
2020-08-12 13:10:08 +01:00
Tom Byers
222bb864bc Remove horizontal padding for pill items
This gives the contents of each item more space
which is useful on smaller screens or at higher
zoom levels.

Each item still has a 2px border so is prevented
from its contents touching those of the other
items. They are also flex-items, set to occupy a
quarter of the available space so will removing
this padding will not effect their width.
2020-08-12 11:32:55 +01:00
Chris Hill-Scott
0b206e3c0f Merge pull request #3561 from alphagov/optimise-broadcast
Optimise broadcast area code for fast page loads
2020-08-12 11:32:13 +01:00
Chris Hill-Scott
8d74e9c08d Store names and IDs of areas in memory
Now that the data needed to create a `BroadcastArea` is pretty
lightweight because it doesn’t include the GeoJSON we can go back to
putting it in memory when we start up the app, to make the pages load
really fast.

Rough estimate for the size of this dataset:
> 10,000 areas
> Average length of area name = 20 characters
> Average length of area id = 20 characters
> Size of one area in bytes = 20 + 20 = 40
> Size of dataset = 40 * 10,000 = 400,000 bytes = 400kb
2020-08-12 10:45:44 +01:00
Chris Hill-Scott
6c21a1732c Refactor to assign directly
There’s no need for an intermediate variable here, and it’s confusing
having two properties containing the same data.
2020-08-12 10:45:14 +01:00
Chris Hill-Scott
f96c43f5bc Store GeoJSON in a separate table
I think that even with good indexes, querying the area names from one
table is always going to be slow because there’s so much GeoJSON to scan
past.

This commit splits the data into two tables, one for the names and
grouping IDs and one for the blobs of GeoJSON. So for most pages the app
will never even be looking at the table where the GeoJSON is held.

I don’t know if this is a proper, normalised way of structuring the
data, but it does go brrr.
2020-08-12 10:43:01 +01:00
Chris Hill-Scott
e267e3d9f1 Refactor to use .query
All the other methods of this class call through to query, we can make
this code clearer by making `get_areas` do the same.
2020-08-12 10:42:28 +01:00
Chris Hill-Scott
adad27dadb Lazy load feature from the SQLite database
Rather than querying all the features whenever we look up area(s) let’s
only get them when we need them.

The features are really big blobs of data to pass around, so there’s a
significant performance gain to be had from doing this.
2020-08-12 10:40:27 +01:00
Tom Byers
bff07c10b1 Convert IntegerFields to GovukIntegerFields
Changes those fields in the following forms:
- FreeSMSAllowance
- ProviderForm
- ProviderRatioForm
- ServiceDataRetentionEditForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
97ddc7923a Add GovukIntegerField - extends IntegerField 2020-08-12 10:34:51 +01:00
Pea Tyczynska
3953e67499 Remove unused template 2020-08-12 10:34:51 +01:00
Tom Byers
c715681f5c Convert DateFields to GovukDateFields
Changes those fields in the following forms:
- DateFilterForm
- RequiredDateFilterForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
8faca47152 Add GovukDateField - extends DateField 2020-08-12 10:34:51 +01:00
Pea Tyczynska
1d2a73a1a4 Update TemplateAndFoldersSelectionForm fields
Changes its StringFields to GovukTextInputFields.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
3f7142b3e2 Update fields on ServiceLetterBrandingDetails
Changes its StringField to GovukTextInputField.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Pea Tyczynska
852ef61aad Update ServiceSmsSenderForm with new fields
Changes its StringField to GovukTextInputField.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Pea Tyczynska
f38e268db6 Update AddGPOrganisationForm with new fields
Changes its StingFields to GovukTextInputFields.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Pea Tyczynska
9437a23f09 Update RenameOrganisationForm with new fields
Changes its StringFields to GovukTextInputFields.

This change also affects NewOrganisationForm,
which inherits from RenameOrganisationForm.

Also includes changes to templates that use this
form and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
a22b8cf684 Update ForgivingIntegerField
Makes it inherit from GovukTextInputField.

Changes to govuk_field_widget to allow the value
attribute to be set by passing a value keyword
argument to the __call__ method.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Pea Tyczynska
ebd8588c03 Convert TwoFactorForm to gov uk frontend 2020-08-12 10:34:51 +01:00
Pea Tyczynska
be7d4891ae Consolidate callback forms and convert them to gov uk frontend
We had two identical callback form classes. One for delivery callbacks
and one for inbound sms callbacks. Since they did not differ I consolidated
them into one CallbackForm class that they both inherited from previously.

I also substituted field classes for this form with new fields
that cooperate with gov uk frontend.
2020-08-12 10:34:51 +01:00
Pea Tyczynska
6f1fc3d16d Convert TemplateFolderForm to govuk frontend 2020-08-12 10:34:51 +01:00
Pea Tyczynska
ad3b391e46 Convert ListEntry component to use new fields
ListEntry component uses FieldList field to group
textboxes. Textboxes can be text inputs, email fields
or international phone number fields. This converts
all field-lists to use:

- GovukTextInputField
- GovukEmailField
- InternationalPhoneNumber

Affects these forms:
- OrganisationDomainsForm
- GuestList

Also changes to related Javascript:

Update list-entry JS tests to match new HTML

Updates the HTML the JS operates on in the test
(a fixture representing the HTML in the page on
load) to match the new GOVUK Frontend we are
generating.

Make list-entry JS work with GOVUK Frontend HTML

The existing list-entry JS did a few things that
clashed with how the new HTML works:
- added a 'input-' prefix to the id attributes
  of all text-inputs
- did not make its name and id attributes values
  match

The new HTML has id and name attributes that
match so these changes remove the prefix for id
attributes and makes them match the name
attribute.

To understand these changes, it is useful to
know how the values for id and name attributes are
generated:
1. the id attribute for the component element is
   stored
2. the 'list-entry-' prefix is removed and the
   remainder is used to generate ids

For example, if the component's id is
'list-entry-domains', the id will be 'domains-1',
where the text-input is the first one.

This also adds some logic to the HoganJS template
to make the value attribute optional, so it is
only added if it has a non-null value. This
matches the behaviour of the text-input component
used in the new list-entry component.

Also change whitelist references to guestlist in tests
- we forgot to do it earlier, when we moved from calling this
feature whitelist to calling it guestlist.
2020-08-12 10:34:51 +01:00
Tom Byers
11dcd87115 Update ServiceContactDetailsForm with new fields
Changes its:
- StringFields to GovukTextInputFields
- EmailFields to GovukEmailFields

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
880a0a3318 Update CreateKeyForm to new fields
Changes its StringFields to GovukTextInputFields.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
949aa3a9bd Update CreateServiceForm with new fields
Changes its StringField to GovukTextInputField.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
9457ba206a Convert BaseTemplateForm to use new fields
Updates StringField to GovukTextInputField.

These changes also affect the following forms that
inherit from BaseTemplateForm:
- SMSTemplateForm
- EmailTemplateForm

Includes changes to templates that use these forms
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers
d21b9475ba Convert SearchFields to GovukSearchFields
Changes those fields in the following forms:
- SearchByNameForm
- SearchUsersByEmailForm
- SearchUsersForm
- SearchNotificationsForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:50 +01:00
Tom Byers
f95d57cfde Add GovukSearchField - extends SearchField 2020-08-12 10:34:50 +01:00
Tom Byers
427b01999c Update UKMobileNumber & InternationalPhoneNumber
Changes those classes so they have the same
interface as a GOVUK field when instantiated and
render GovukTextInputField HTML.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:50 +01:00
Pea Tyczynska
39bc7cf721 Convert EmailFields to GovukEmailFields
Changes those fields (and sometimes also regular text input fields)
 in the following forms:
- LoginForm
- RegisterUserForm
- ChangeEmailForm
- FeedbackOrProblem
- AcceptAgreementForm
- ChangeNameForm (only name field here, but used in the same template
field as ChangeEmailForm here: app/templates/views/user-profile/change.html)

Also includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:42 +01:00
Tom Byers
7e771a5fa1 Add GovukEmailField - extends EmailField 2020-08-12 10:23:43 +01:00
Tom Byers
139616a0a9 Add data attributes to send errors to analytics 2020-08-12 10:23:43 +01:00
Pea Tyczynska
8219ae7861 Allow html in error messages for text input fields 2020-08-12 10:23:43 +01:00
Pea Tyczynska
1d21b5b96e Refactor gov uk textbox field classes to avoid repetition 2020-08-12 10:23:43 +01:00
Tom Byers
e316e33180 Convert PasswordFields to GovukPasswordFields
Converts them directly in the following forms:
- LoginForm
- ConfirmPasswordForm

Changes the password function to return
GovukPasswordField instead of PasswordField which
effects the following forms:
- RegisterUserForm
- RegisterUserFromInviteForm
- RegisterUserFromOrgInviteForm
- NewPasswordForm
- ChangePasswordForm

It also updates StringField on RegisterUserFromOrgInviteForm
to GovukTextInputField

Also includes changes to templates that use this
form and associated tests.
2020-08-12 10:23:43 +01:00
Tom Byers
5cbf57e1fb Add GovukPasswordField - extends PasswordField
Also adds it to the list of fields
StripWhitespaceForm skips when processing field
data.
2020-08-12 10:22:20 +01:00
Tom Byers
a3e661830d Convert text inputs on ServiceUpdateEmailBranding
Includes changes to templates that use this form
and associated tests.
2020-08-12 10:22:20 +01:00