Commit Graph

5053 Commits

Author SHA1 Message Date
Chris Hill-Scott
e75c84a88c Merge pull request #1831 from alphagov/normalise-newlines-sms
Bump utils to normalise newlines in text messages
2018-04-12 15:05:08 +01:00
Chris Hill-Scott
308511e0ed Bump utils to normalise newlines in text messages
Brings in:
- [ ] https://github.com/alphagov/notifications-utils/pull/460
2018-04-12 11:13:02 +01:00
Sakis
a025e2cc9c Merge pull request #1811 from alphagov/add-http-healthchecks
Add http health-check for the api app
2018-04-11 15:51:05 +01:00
Athanasios Voutsadakis
0766e68099 Revert "Add 5 second sleep before stopping old api instances"
This reverts commit 23cfe73c48.
2018-04-11 15:38:41 +01:00
Athanasios Voutsadakis
23cfe73c48 Add 5 second sleep before stopping old api instances
This is to allow the new instances to start responding to the http
healthchecks and start serving traffic.
2018-04-11 15:01:45 +01:00
Athanasios Voutsadakis
e2a05efae0 Merge branch 'master' into add-http-healthchecks 2018-04-11 13:45:20 +01:00
Chris Hill-Scott
87ac1f15b7 Merge pull request #1829 from alphagov/bump-utils-plain-text-email-formatting
Bump utils to improve plain text email formatting
2018-04-10 11:37:40 +01:00
Chris Hill-Scott
c9882e2f9c Bump utils to improve plain text email formatting
Brings in:
- [x] https://github.com/alphagov/notifications-utils/pull/438
- [x] https://github.com/alphagov/notifications-utils/pull/450
- [x] https://github.com/alphagov/notifications-utils/pull/454

Changes:
- https://github.com/alphagov/notifications-utils/compare/25.3.0...26.2.0
2018-04-10 11:14:48 +01:00
Alexey Bezhan
84b99a9796 Merge pull request #1823 from alphagov/post-notification-with-document-upload
Post notification with document upload
2018-04-10 10:33:34 +01:00
Katie Smith
abade902e1 Merge pull request #1827 from alphagov/change-letter-still-sending-notification-date
Add extra day before raising letter still sending alert
2018-04-10 09:36:30 +01:00
Katie Smith
5ab46c737d Merge pull request #1830 from alphagov/pyup-update-pytest-mock-1.8.0-to-1.9.0
Update pytest-mock to 1.9.0
2018-04-10 09:36:22 +01:00
Katie Smith
417d382d1b Add extra day before raising letter still sending alert
We now want to wait an extra day before sending the alert that letters
are still sending.
2018-04-10 09:29:29 +01:00
pyup-bot
1e1e6c3550 Update pytest-mock from 1.8.0 to 1.9.0 2018-04-10 04:28:17 +01:00
Alexey Bezhan
89f2f8b9a7 Test that document download requests set the auth header 2018-04-09 16:30:16 +01:00
Alexey Bezhan
c189f09687 Update template content values from notification personalisation
We need to set template_with_content placeholder values with an
updated personalisation dictionary after processing the document
uploads in order to avoid returning base64 file data instead of
the document URLs in the response contents.
2018-04-09 16:30:16 +01:00
Alexey Bezhan
b097a16a86 Handle and log document-download-api request errors
Catches the requests exception for document-download-api calls, logs
a warning and returns a matching response code and message.

Connection errors to document download result in 503 response to the
user.
2018-04-09 16:30:16 +01:00
Alexey Bezhan
f2e163dc43 Upload files from personalisation data to document download
Adds support for a new personalisation value type: file upload.

File uploads are represented as a dictionary with a "file" key and
a base64-encoded file data as the key's value:

```
personalisation={
  'field1': {'file': '<base64-encoded file contents>'}
}
```

Post notification endpoint checks the request personalisation data
looking for the file uploads in personalisation data. If any are
found and the service has permissions to upload documents the files
are sent to document download API and personalisation values are
replaced with the URLs returned in the document download response.

A fake document URL is returned for simulated notifications, no
documents are stored in Document Download.

Multiple files can be uploaded for one notification by providing
a file upload in more than one personalisation field.
2018-04-09 16:30:16 +01:00
Alexey Bezhan
204aaf172d Add a document download client
Allows uploading documents to the Document Download API.
The client is configured with an API host and auth token. There's
no need for a flag to disable the client in the test environments
at the moment since the upload is only triggered by a specific
payload which would only be sent with an explicit goal of using
document download.
2018-04-09 16:30:16 +01:00
Rebecca Law
a0c6f6a22e Merge pull request #1828 from alphagov/refactor-post-letters
refactor post letters
2018-04-09 16:13:54 +01:00
Leo Hemsted
46021f4604 Merge pull request #1826 from alphagov/pyup-update-pytest-mock-1.7.1-to-1.8.0
Update pytest-mock to 1.8.0
2018-04-09 15:17:23 +01:00
Leo Hemsted
aa7a33c859 Merge pull request #1815 from alphagov/pyup-update-sqlalchemy-1.2.5-to-1.2.6
Update sqlalchemy to 1.2.6
2018-04-09 15:17:14 +01:00
Leo Hemsted
41e3a150d8 Merge pull request #1824 from alphagov/redis-populate-command-fix
make sure redis command filters dates properly
2018-04-09 15:17:07 +01:00
Rebecca Law
b73bf4220f Refactor process_letter_notification to make the code easier to read.
- Separated the logic of precompiled and template letters.
- Remove the check for research mode, research mode is not relevant to api calls. The test key is used for testing.
Refactor upload_pdf_letter to accept a precompile boolean to save a query to template.
2018-04-09 13:56:44 +01:00
Leo Hemsted
ac0b2d79a2 sys.exit rather than throwing an assertion error
Assertions should only be used in tests - they can be disabled at
runtime by setting the python flag -O (though I don't believe we use
that flag under normal circumstances).

also clean up test asserts - mock_redis is the redis object, so its
`called` property will always be false, because we never say
`redis_store()`. Rather, we should use the `mock_calls` property to
see all calls to all of its children
2018-04-09 11:45:43 +01:00
pyup-bot
a6b3c3e018 Update pytest-mock from 1.7.1 to 1.8.0 2018-04-07 05:13:11 +01:00
Rebecca Law
e7bd6380ab Merge pull request #1825 from alphagov/revert-1820-ken-fix-precompiled-research-mode
Revert "Fix research mode preview of precompiled letters"
2018-04-06 16:14:46 +01:00
Rebecca Law
3c92f00fdb Revert "Fix research mode preview of precompiled letters" 2018-04-06 16:10:06 +01:00
Rebecca Law
002b96b4f8 Merge pull request #1820 from alphagov/ken-fix-precompiled-research-mode
Fix research mode preview of precompiled letters
2018-04-06 15:22:09 +01:00
Rebecca Law
39e4f63b8c Use the positive condition when checking the environment 2018-04-06 12:01:16 +01:00
Chris Waszczuk
15d92e235f Merge pull request #1822 from alphagov/added-new-paginated-inbound-endpoint
Added new paginated inbound endpoint
2018-04-06 11:11:48 +01:00
Leo Hemsted
ba612b0f5b make sure redis command filters dates properly
also write the tests that i should have written a while ago for this
2018-04-05 15:11:29 +01:00
chrisw
0f2ddd8cfa added new paginated inbound endpoint 2018-04-04 17:10:41 +01:00
Leo Hemsted
730eff7e97 Merge pull request #1818 from alphagov/redis-templates
add new redis template usage per day key
2018-04-04 16:25:39 +01:00
Rebecca Law
5b92b0e4ee Merge pull request #1821 from alphagov/fix-delete-notification-time
Fix BST date bug
2018-04-04 14:17:29 +01:00
Rebecca Law
dc325a3ab4 Merge pull request #1819 from alphagov/reduce-exception-when-id-not-found
Fix error message for invalid UUID
2018-04-04 13:07:42 +01:00
Rebecca Law
e47b9364d9 Now that we are in British Summer Time the delete notification scheduled tasks were running at 23:40, but the code expects that the task runs the following day.
Which resulted in the notifications being around for 8 days.
This PR fixes that.
2018-04-04 12:20:36 +01:00
Athanasios Voutsadakis
5068d4cf38 Merge branch 'master' into add-http-healthchecks 2018-04-04 10:22:56 +01:00
Ken Tsang
8b35c1c007 Fix research mode preview of precompiled letters 2018-04-03 22:52:45 +01:00
Rebecca Law
ecc4cde4de Update the get_notification_by_id to return a sensible message if the id is not a valid UUID.
Previously "Result not found" would be returned when the id is not a valid uuid, which does not make sense.
Now the message says "notification_id is not a valid UUID", this should be a clearer message for the client service.
2018-04-03 16:37:41 +01:00
Sakis
dce24147a6 Merge pull request #1814 from alphagov/bump-db-connections
Increase pool size to 15 permanent connections
2018-04-03 16:17:21 +01:00
Leo Hemsted
6e554188bd add command to backfill template usage
The command takes a service id and a day, grabs the historical data for
that day (potentially out of notification_history), and pops it in
redis (for eight days, same as if it were written to manually).

also, prefix template usage key with "service" to make clear that it's
a service id, and not an individual template id.
2018-04-03 16:14:47 +01:00
Leo Hemsted
8e73961f65 add new redis template usage per day key
We've run into issues with redis expiring keys while we try and write
to them - short lived redis TTLs aren't really sustainable for keys
where we mutate the state. Template usage is a hash contained in redis
where we increment a count keyed by template_id each time a message is
sent for that template. But if the key expires, hincrby (redis command
for incrementing a value in a hash) will re-create an empty hash.

This is no good, as we need the hash to be populated with the last
seven days worth of data, which we then increment further. We can't
tell whether the hincrby created the key, so a different approach
entirely was needed:

* New redis key: <service_id>-template-usage-<YYYY-MM-DD>. Note: This
  YYYY-MM-DD is BTC time so it lines up nicely with ft_billing table
* Incremented to from process_notification - if it doesn't exist yet,
  it'll be created then.
* Expiry set to 8 days every time it's incremented to.

Then, at read time, we'll just read the last eight days of keys from
Redis, and sum them up. This works because we're only ever incrementing
from that one place - never setting wholesale, never recreating the
data from scratch. So we know that if the data is in redis, then it is
good and accurate data.

One thing we *don't* know and *cannot* reason about is what no key in
redis means. It could be either of:

* This is the first message that the service has sent today.
* The key was deleted from redis for some reason.

Since we set the TTL to so long, we'll never be writing to a key that
previously expired. But if there is a redis (or operator) error and the
key is deleted, then we'll have bad data - after any data loss we'll
have to rebuild the data.
2018-04-03 16:12:54 +01:00
Leo Hemsted
e692e06b7f add new template stat read pseudocode
we can't use this new code until the new redis keys have been popualted
for the last seven days
2018-04-03 16:12:25 +01:00
kentsanggds
a0f74b35e1 Merge pull request #1813 from alphagov/ken-hide-notify-tag-on-first-page
Hide notify tag on first page
2018-04-03 15:40:54 +01:00
Richard Chapman
82274123f4 Merge pull request #1817 from alphagov/rc_add_virus_scan_error_task
Logging refactor to make debugging Antivirus scans easier
2018-04-03 14:17:15 +01:00
Chris Hill-Scott
c392053847 Merge pull request #1816 from alphagov/bump-utils-asterisks
Bump utils to 25.2.3
2018-04-03 13:07:51 +01:00
Richard Chapman
f1abce22ae Logging refactor to make debugging easier. Before the filename needed to
be known. Added the notification id to the logging message so that
the notification can be traced through the logging system by knowing
the notification id, making it easier to debug. Also changed to raise an
exception so that alerts are generated. This way we should get an email
to say that there has been an error.
2018-04-03 12:31:52 +01:00
Chris Hill-Scott
c9b297a3d4 Bump utils to 25.2.3
To bring in:
- [x] https://github.com/alphagov/notifications-utils/pull/436

Changes:
- https://github.com/alphagov/notifications-utils/compare/25.2.2...25.2.3
2018-04-03 12:10:45 +01:00
Sakis
f06bd20900 Merge pull request #1809 from alphagov/revisit-proxy-header-check
Revisit proxy header check
2018-04-03 10:55:41 +01:00
pyup-bot
691a44f1cf Update sqlalchemy from 1.2.5 to 1.2.6 2018-03-30 21:49:12 +01:00