Commit Graph

2395 Commits

Author SHA1 Message Date
Chris Hill-Scott
2ddc6216a5 Let any user see the uploads page
Even if you can’t send messages you might still want to see the messages
that other people have sent.
2019-10-25 12:48:30 +01:00
Chris Hill-Scott
93322d41e5 Make jobs and uploads page the same
This makes these pages call the same code.

We can resolve the multiple URLs once we’ve removed the feature flag.
2019-10-25 12:48:30 +01:00
Chris Hill-Scott
0185270308 Fix sorting of events
Events should be sorted reverse-chronologically, no matter what order
they come back from the API in, or which field in the API response
they’ve been extracted from.
2019-10-23 15:05:26 +01:00
Chris Hill-Scott
600e3affc1 Show user names for events without API changes
This commit introduces a slightly hacky way of putting usernames against
events, given that the API only returns user IDs.

It does so without:
- making changes to the API
- making a pages that could potentially fire off dozens of API calls (ie
  one per user)

This comes with the limitation that it can only get names for those team
members who are still in the team. Otherwise it will say ‘Unknown’.

In the future the API should probably return the name and email address
for the user who initiated the event, and whether that user was acting
in a platform admin capacity.
2019-10-23 13:15:41 +01:00
Chris Hill-Scott
9055a33dca Only show the filters if they will have an effect
If you never create any API keys we shouldn’t give you the option to see
API-related events – it will only confuse things.

And since there’s (currently) only one type of event left once you take
API key events out of the picture it doesn’t make sense to show the
filters at all.
2019-10-23 13:13:37 +01:00
Chris Hill-Scott
63f6a3ab12 Let users filter by type of event
At the moment we have two types of event, ‘service’ events and ‘API key’
events. They are munged together which is useful initially, but could
get noisy.

This commit adds filters (copied from the choose template page) that let
users narrow down the list to one of the two types of event. This might
help users get a clearer picture of what’s going on.
2019-10-23 13:09:47 +01:00
Chris Hill-Scott
d93ebd99d3 Refactor history off the service model
Directly referencing the `ModelList` instances will let us more easily
make choices at the view layer about which kinds of events to show, and
is one less layer of indirection to jump through.
2019-10-23 13:08:06 +01:00
Chris Hill-Scott
b2ebaf153a Chunk events by day
Scanning the page is difficult at the moment because it’s hard to tell
how far apart in time events are, and thereby determine which events
might be related.

Grouping the events by day quickly lets users narrow their focus to
a meaningful subset of the events.
2019-10-23 13:06:25 +01:00
Chris Hill-Scott
59b4d60c91 Munge stuff into a consistent event data type
We store our audit history in two ways:

  1. A list of versions of a service
  2. A list of events to do with API keys

In the future there could be auditing data which we want to display that
is stored in other formats (for example the event table).

This commit adds some objects which wrap around the different types of
auditing data, and expose a consistent interface to them. This
architecture will let us:
- write clean code in the presentation layer to display these events on
  a page
- add more types of events in the future by subclassing the `Event` data
  type, without having to rewrite anything in the presentation layer
2019-10-23 13:02:11 +01:00
Chris Hill-Scott
7c2ecfa094 Use service model for history
Rather than have the view layer interact directly with the API client.
This will let us add extra transformation in the model layer at some
point.
2019-10-21 16:29:06 +01:00
Chris Hill-Scott
fce0397b55 Move service history into it own file
We’re going to do some work on this page, let’s put it in a sensible
place first before we add a bunch more code to the wrong place.
2019-10-21 16:29:05 +01:00
Katie Smith
b0ffca2774 Only show overlay when content is outside the printable area
The overlay was showing for any invalid pdf - we only want to show the
overlay for invalid pdf files where there is content outside the
printable area.
2019-10-21 11:10:27 +01:00
Katie Smith
3b3f74bbf0 Use the new error messages when uploading a letter
We now use the pattern of showing a box at the top of the page with the
error. The error message has a heading and can have additional details.
Error messages and the invalid pages get stored in the S3 metadata.
2019-10-21 08:37:55 +01:00
Pea (Malgorzata Tyczynska)
53ef438a1e Merge pull request #3135 from alphagov/enforce_letter_10_page_limit
Enforce letter 10 page limit
2019-10-16 13:14:30 +01:00
Pea Tyczynska
4b5a131072 Harmonise content of error message with the document laid out by our content designer 2019-10-16 13:02:11 +01:00
Pea Tyczynska
2ed1e382b4 Move letter length check to utils repo so template-preview can use it, too
Update requirements
2019-10-10 14:25:19 +01:00
Chris Hill-Scott
7f033efc28 Fix email branding request page with only textbox
If there aren’t a range of options (normally presented as radio buttons)
to show the user on the email branding request page then we just show
the textbox. But we were still doing form validation on the radio
buttons, even though the user couldn’t see them to click them. This
stopped the user from being able to submit the form.

This commit fixes the problem by, in this specific case, pre-ticking the
‘Something else’ radio button.
2019-10-09 16:42:30 +01:00
Pea Tyczynska
c524b0bbf5 Rebase and set upload status to invalid if too many pages 2019-10-09 16:03:48 +01:00
Pea Tyczynska
6639209229 Check page count of actual notification not of template
But for jobs we are only checking preview row, otherwise it would
be too slow. We will check other row when creating the pdf
2019-10-09 16:03:48 +01:00
Pea Tyczynska
12ec2870af Move letter too long banner message over from utils, also refactor 2019-10-09 16:03:47 +01:00
Pea Tyczynska
b42c7c4c9f Refactor page_count checks to avoid magic numbers 2019-10-09 16:03:47 +01:00
Pea Tyczynska
028d156dc7 Do not allow to send job of letters if letters longer than 10 pages 2019-10-09 16:03:47 +01:00
Pea Tyczynska
c690434b1f One off letter flow does not allow to send letter longer than 10 pages 2019-10-09 16:03:47 +01:00
Pea Tyczynska
0adf80f294 Do not allow to send uploaded pdf letters longer than 10 pages 2019-10-09 16:03:46 +01:00
Pea Tyczynska
579ae72abb Do not allow to send a letter template longer than 10 pages 2019-10-09 16:03:46 +01:00
Katie Smith
11543e15be Store all data about uploaded letters in the S3 metadata
We had been storing whether or not a file was valid in the S3 metadata,
but using the query string of the URL to store the original filename
and the page count. This meant that if you tried to view the preview
letter page without the query string you would see a `500`. It was
possible for this to happen if you were signed out of Notify while on
the preview page - you would be redirected back to the preview page but
without the query string, causing an error.
2019-10-08 15:34:00 +01:00
Pea (Malgorzata Tyczynska)
28c901d5b9 Merge pull request #3130 from alphagov/notification-coubt
Get notification count from api instead of getting list of notifications from api
2019-10-08 12:19:55 +01:00
Chris Hill-Scott
78e57dbff9 Clear service cache for when updating org branding
Updating an organisation’s branding might now also update the branding
of services associated to that organisation. This is similar to how
updating an organisation’s type can update the organisation type for its
services.

In the latter case we already make sure to clear the cached version of
these services which is held in Redis.

This commit does the same clearing of the caches when updating an
organisation’s branding (and does a bit of refactoring to do so without
duplication of code.)
2019-10-03 12:10:53 +01:00
Pea Tyczynska
9058b13ff2 Get notification count from api instead of list of notifications
when checking if job can be cancelled. This makes query lighter,
less likely to fall over if job is large and removes
pagination bug.
2019-09-24 19:07:20 +01:00
Rebecca Law
18e3eb6b32 Update tests for content changes. 2019-09-23 13:22:28 +01:00
karlchillmaid
daf94ddc16 Replace couldn't with could not 2019-09-23 13:22:16 +01:00
karlchillmaid
4b2990e735 Replace isn't with is not 2019-09-23 13:22:00 +01:00
karlchillmaid
653c2c399f Replace won't with will not 2019-09-23 13:21:59 +01:00
karlchillmaid
1a603c8d48 Replace can't with cannot 2019-09-23 13:21:08 +01:00
karlchillmaid
5f79a12a9d Replace can't with cannot 2019-09-23 13:21:07 +01:00
karlchillmaid
aa1e857e03 Replace can't with cannot 2019-09-23 13:21:07 +01:00
karlchillmaid
a2455abda4 Replace can't with cannot 2019-09-23 13:20:24 +01:00
Chris Hill-Scott
68c9147fec Merge pull request #3119 from alphagov/retire-old-static-content
Retire old static content pages
2019-09-23 13:19:01 +01:00
Chris Hill-Scott
56772533e6 Replace negative contraction with Cannot
In accordance with style guide
2019-09-18 14:21:25 +01:00
Chris Hill-Scott
20f857753a Use constants for organisation type
This reduces the chances of making a typo, because doing so will raise
an exception rather than fail silently.
2019-09-16 11:33:50 +01:00
Chris Hill-Scott
afcdedf598 Allow elaboration when ‘something else’ is chosen
Letting people input a bit of free text should reduce the amount of back
and forth we have to do over support tickets when setting up someone’s
branding.

If something else is the only option then we don’t show the radio button
at all and have just the free text input on the page (not behind a
progressive disclosure).
2019-09-16 11:18:22 +01:00
Chris Hill-Scott
6d0d10e8de Only show relevant choices of email branding
Users who work in local government can’t have GOV.UK branding on their
emails. And only those working for Companies House (for example) can
request the Companies House branding.

This commit adds:
- new choices of email branding, which offer the name of the branding,
  rather than the style
- logic to filter this list to only the applicable options, based on
  what we know about the user, service and organisation

This is a change from the previous approach which put the onus on users
to figure out the style of branding they wanted, when we might already
know that a lot of the options weren’t available to them, or would be
inconsistent with the branding of other services in their organisation.
2019-09-16 11:03:52 +01:00
Chris Hill-Scott
29a0611e42 Refactor organisation branding into model
This is the same way we handle lazy-loading the branding in the service
model.
2019-09-16 11:02:34 +01:00
Katie Smith
81da8e762d Update for new template preview sanitise response 2019-09-12 09:54:36 +01:00
Katie Smith
79053dec93 Allow uploaded letters to be sent if valid
Added a send button which only appears on the page if the query string
indicates that the PDF is valid. Before actually sending, we check that
the service has the right permissions and that the metadata for the
letter confirms the letter is valid (because the query string can be
changed).
2019-09-12 09:54:36 +01:00
Katie Smith
7368245c9a Show letter preview once file is uploaded
This shows the sanitised letter preview if the file had no validation
errors or the preview with the overlay if it failed validation.
2019-09-12 09:54:36 +01:00
Katie Smith
8a322b844b Sanitise uploaded letters and store in S3
This sanitises uploaded letters and stores the sanitised result in S3
with if it passes validation or the original PDF in S3 if validation
fails. A metadata value of 'status' is set to either 'valid' or
'invalid'.
2019-09-12 09:54:36 +01:00
Katie Smith
5fa9e071c7 Add check that PDF file can be opened and is not malformed
This checks that the PDF file is not malformed in some way (e.g. by
missing the EOF marker). We check this by trying to get the page count
of the letter which will be needed to display the preview of the letter.
2019-09-12 09:54:36 +01:00
Katie Smith
a103dbf801 Add max file size check when uploading a letter 2019-09-12 09:54:36 +01:00
Katie Smith
be6b5b922a Add virus scan stage when uploading a letter 2019-09-12 09:54:36 +01:00