Commit Graph

7170 Commits

Author SHA1 Message Date
Chris Hill-Scott
086b83d65b Merge pull request #2431 from alphagov/grid-invite
Fix misaligned elements on invite page
2018-10-31 10:09:12 +00:00
Chris Hill-Scott
9589bdb89c Merge pull request #2432 from alphagov/set-letter-pricing
Update pricing on page where you turn letters on
2018-10-31 10:08:59 +00:00
Chris Hill-Scott
1a87126bb3 Update pricing on page where you turn letters on
It didn’t match the new rates for 1st class.
2018-10-31 10:02:12 +00:00
Chris Hill-Scott
bf13ea021f Fix misaligned elements on invite page
This page doesn’t need a grid any more (everything goes full width).
2018-10-31 09:59:03 +00:00
Chris Hill-Scott
d26ddb48a7 Merge pull request #2423 from alphagov/make-service-model-wrap-more-things
Move more things from the view layer to the service model
2018-10-31 09:39:19 +00:00
Chris Hill-Scott
dea1ffa569 Merge pull request #2424 from alphagov/templates-page-spacing
Make spacing tighter on templates page
2018-10-31 09:39:00 +00:00
Chris Hill-Scott
dda37b6538 Remove unimplemented methods on service model
During the migration from the model inhereting from a `dict` to being a
plain object it was useful to have these exceptions raised for quicker
debugging.

Now that all the code which relied on these methods has gone it’s OK
to remove them (attempts to call them will fall through to Python’s
native exception handling).
2018-10-30 15:12:01 +00:00
Chris Hill-Scott
67534f838d Don’t allow use of .get() on service model
Making people use a property is a sure way to make sure they’re spelling
the name of the property correctly, and allows us to easily swap out
properties that call through to the underlying JSON, and properties
which are implemented as methods.

The API should always return something in the JSON for a property, even
if it’s just `None`.
2018-10-30 15:09:54 +00:00
Chris Hill-Scott
1e2608d2e0 Refactor settings page to use service model
There’s a lot of code in service settings which:
- talks to the API directly through the clients
- passes that information through to the Jinja template

By encapsulating this logic in the service model:
- the Jinja template can access the data directly
- the logic can be reused across multiple methods
2018-10-30 15:07:52 +00:00
Chris Hill-Scott
526f2d7900 Use service model for the copy page
The view here is rebuilding a pseudo-service object. Now that service
objects have templates it’s cleaner to use the actual service object.

Requires a small change to the `templates_by_type` method so that it can
filter by one or many template types (a user should be able to copy any
template whose type is enabled for their service, and the service
they’re copying from).
2018-10-30 15:05:47 +00:00
Chris Hill-Scott
7d57c73411 Import clients from own files, not from app.py
Being able to import things at the top level is much cleaner.
2018-10-30 15:03:42 +00:00
Chris Hill-Scott
e04b2b5631 Split models to prevent circular imports
This commit is the first step to disentangling the models from the API
clients. With the models in the same folder as the API clients it makes
it hard to import the API clients within the model without getting a
circular import.

After this commit the user API clients still has this problem, but at
least the service API client doesn’t.
2018-10-30 15:01:36 +00:00
Chris Hill-Scott
9e798506c5 Initialise clients outside the app
This avoids the annoying problem where you can’t import a client unless
the app has already been initialised.
2018-10-30 14:59:24 +00:00
Chris Hill-Scott
2bf2103cce Re-sort order in which clients are initialised
This separates the non-API clients from the API clients.
2018-10-30 14:57:16 +00:00
Chris Hill-Scott
e1197c54a5 Don’t allow indexing on service model
Making people use a property is a sure way to make sure they’re spelling
the name of the property correctly, and allows us to easily swap out
properties that call through to the underlying JSON, and properties
which are implemented as methods.
2018-10-30 14:55:01 +00:00
Chris Hill-Scott
780b9bb715 Use cached property from werkzeug.utils
This means we can have a method on the service model which hits the API
(or Redis) but can be called multiple times (within the context of a
request) without making multiple network requests.

It does this by storing the results of the method on the object’s
internal `__dict__` the first time the method is called.
2018-10-30 14:55:01 +00:00
Chris Hill-Scott
b48305c50d Don’t have service model inherit from dict
Inheriting from `dict` has some unexpected side effects that don’t
happen with plain object. The one we want to avoid right now is that
a dict doesn’t seem to implement `__dict__` in a normal way, which
is required by `werkzeug.utils.cached_property`.
2018-10-30 14:55:00 +00:00
Chris Hill-Scott
1e6b79a546 Put templates on service model
We do a lot of logic around choosing which templates to show. This logic
is all inside one view method.

It makes it cleaner to break this logic up into functions. But this
would mean passing around variables from one function to another.
Putting these methods onto a class (the service model) means that
there’s a place to store this data (rather than having to pass it around
a lot).

Making this code more manageable is important so that when we have
templates and folders it’s easy to encapsulate the logic around
combining the two.
2018-10-30 14:55:00 +00:00
Chris Hill-Scott
d69e8b50cd Only initialised service model once per request
`_get_current_service` is a function which gets called every time
`current_service` is referenced in a view method or Jinja template.

Because the service model was getting initialised inside this function
it was being reconstructed many times in one request. On the service
settings page, for example, it was getting initialised 43 times, adding
about 200ms to the response time.

This commit moves its initialisation to the point where we’re getting
the data from the API, which only happens once per request.
2018-10-30 14:55:00 +00:00
Katie Smith
1ffcbf5e91 Add test for the notifications page when there are failed notifications
We already have tests for the
/services/<service_id>/notifications/<notification_type> page, but these
were not testing the page when there were failed notifications, so this
adds a test for the page in this situation.
2018-10-30 13:15:31 +00:00
Chris Hill-Scott
3caaf74c4a Split paragraph into two
There was an awkward line break in this text, and the line length was
too long because there was no grid on the page.

Splitting it into two paragraphs makes it:
- read nicer
- avoids any awkward line breaks
2018-10-30 13:11:50 +00:00
Chris Hill-Scott
b727a50c13 Don’t have copy API key button jump around
It’s annoying that this button moves after you click on it. It’s
happening because the API key is wrapping onto multiple lines.

This commit fixes the height of the container so that it doesn’t reflow
when it has less content in it.

Uses a bit of flexbox to vertically centre the text.
2018-10-30 13:10:19 +00:00
Chris Hill-Scott
f6ff070f80 Merge pull request #2287 from alphagov/remove-old-key-info-2
Remove old API key and service ID combo
2018-10-30 10:13:19 +00:00
Chris Hill-Scott
d5d1f7394d Remove old API key and service ID combo
Once all our users have upgraded to the latest clients they won’t need
this. The latest clients only use the combined key and service ID.

Discuss: when can we safely remove it?
2018-10-30 10:01:37 +00:00
Chris Hill-Scott
08cd8e2a2d Merge pull request #2425 from alphagov/pyup-update-pytest-xdist-1.23.2-to-1.24.0
Update pytest-xdist to 1.24.0
2018-10-30 09:32:06 +00:00
Chris Hill-Scott
2f5e029c87 Merge pull request #2360 from alphagov/pyup-update-ago-0.0.92-to-0.0.93
Update ago to 0.0.93
2018-10-30 09:30:43 +00:00
Katie Smith
734cae73cf Merge pull request #2426 from alphagov/minor-fix
Add missing argument to function
2018-10-30 08:19:18 +00:00
Katie Smith
3431996860 Add required argument to function 2018-10-30 07:56:27 +00:00
pyup-bot
8e296b1c90 Update pytest-xdist from 1.23.2 to 1.24.0 2018-10-29 21:06:18 +00:00
Chris Hill-Scott
2d3c1b2ead Freeze requirements 2018-10-29 16:40:29 +00:00
pyup-bot
81c5e2c6c4 Update ago from 0.0.92 to 0.0.93 2018-10-29 16:39:35 +00:00
Chris Hill-Scott
6cfa533b75 Merge pull request #2374 from alphagov/cancelled-letter-status
Show if a letter has been cancelled
2018-10-29 16:29:33 +00:00
Chris Hill-Scott
85d5a44c85 Merge pull request #2422 from alphagov/pyup-update-pytz-2018.5-to-2018.7
Update pytz to 2018.7
2018-10-29 16:27:23 +00:00
Chris Hill-Scott
14b8ca19db Freeze requirements 2018-10-29 16:06:46 +00:00
pyup-bot
c0b11c7a15 Update pytz from 2018.5 to 2018.7 2018-10-29 16:05:02 +00:00
Chris Hill-Scott
846b927459 Make spacing tighter on templates page
The prototype for folders tightens up the templates page to fit more
templates on the screen. Partly because it looks better, and partly
because the sticky bottom toolbar means that there’s less available
space. So reducing the spacing means that roughly the same number of
templates fit on the screen.

For those who won’t see the checkboxes (people who don’t have the send
permission) or use folders, this just means that they’ll have slightly
less scrolling to do if they have a lot of templates.

Doing this before adding the folders so that:
- we roll out changes more gradually
- once we add the folders we can see if the spacing has stayed
  consistent
- changing where the margins are applied to resolve the inconsistent
  spacing when there is/isn’t tabbed navigation or a search box shown
2018-10-29 15:00:17 +00:00
Katie Smith
9d4b2e1014 Merge pull request #2420 from alphagov/pyup-update-pytest-3.9.2-to-3.9.3
Update pytest to 3.9.3
2018-10-29 13:34:26 +00:00
Katie Smith
b02877df7d Merge pull request #2421 from alphagov/bump-utils-30.5.6
Update notifications-utils to 30.5.6
2018-10-29 13:34:08 +00:00
Chris Hill-Scott
f1a9761ea1 Show letters that fail validation as cancelled
At the moment we show precompiled letters that have failed the
validation as having been sent. This is confusing.

We should communicate it as having been cancelled (rather than failed),
with the implication being that Notify has come along and cancelled the
letter before printing it. I think this is conceptually what makes the
most sense.

From the user’s point of view any letters that show up as cancelled
probably need to be fixed and resent, so it makes sense to group them
with the same name.
2018-10-29 12:13:33 +00:00
Chris Hill-Scott
bbb4b87cac Show count of cancelled letters on dashboard 2018-10-29 11:51:43 +00:00
Chris Hill-Scott
c01d761a3c Show if a letter has been cancelled
At the moment we are manually cancelling letters for people when they
ask us to. Once’s we’ve done this there is no indication that it’s
happened except for the date going red on the list of letters.

This commit adds some error messaging and styling to show when a letter
is cancelled.

Letting people cancel their own letters will be a future enhancement.
2018-10-29 11:51:41 +00:00
Katie Smith
4927da62fb Update notifications-utils to 30.5.6
This brings in the change to email validation which removes obscure white space from email addresses.
2018-10-29 10:21:04 +00:00
pyup-bot
9707d030e9 Update pytest from 3.9.2 to 3.9.3 2018-10-27 19:11:14 +01:00
Katie Smith
78cb3d1165 Merge pull request #2415 from alphagov/add-edit-folders-permission-button
Add platform admin button for edit_folders permission
2018-10-25 14:21:11 +01:00
Katie Smith
a79831e997 Merge pull request #2405 from alphagov/pyup-update-pytest-3.9.1-to-3.9.2
Update pytest to 3.9.2
2018-10-25 14:21:02 +01:00
Alexey Bezhan
8d8e374fdb Merge pull request #2402 from alphagov/python-3-5-5
Bump PaaS python version to 3.5.5
2018-10-25 13:08:39 +01:00
Katie Smith
ae79a3ac75 Add platform admin button for edit_folders permission
Added a platform admin button to allow / remove the edit_folders
permission for a service.
2018-10-25 12:09:26 +01:00
Katie Smith
af29ee7ff1 Merge pull request #2407 from alphagov/stop-sending-dvla-org-id
Stop passing dvla_org_id to template preview
2018-10-24 16:28:58 +01:00
Chris Hill-Scott
465296776e Merge pull request #2406 from alphagov/service-count
Updated service count to 410 and 127 orgs
2018-10-24 14:35:03 +01:00
Katie Smith
a489e7a26b Stop passing dvla_org_id to template preview
We were passing both dvla_org_id and filename to template-preview
temporarily while we switch to only using filename. Now that
template-preview is set up to use filename, we can stop sending the
dvla_org_id too.
2018-10-23 16:21:18 +01:00