[SIP-3] Scheduled email reports for Slices / Dashboards (#5294)

* [scheduled reports] Add support for scheduled reports

* Scheduled email reports for slice and dashboard visualization
  (attachment or inline)
* Scheduled email reports for slice data (CSV attachment on inline table)
* Each schedule has a list of recipients (all of them can receive a single mail,
  or separate mails)
* All outgoing mails can have a mandatory bcc - for audit purposes.
* Each dashboard/slice can have multiple schedules.

In addition, this PR also makes a few minor improvements to the celery
infrastructure.
* Create a common celery app
* Added more celery annotations for the tasks
* Introduced celery beat
* Update docs about concurrency / pools

* [scheduled reports] - Debug mode for scheduled emails

* [scheduled reports] - Ability to send test mails

* [scheduled reports] - Test email functionality - minor improvements

* [scheduled reports] - Rebase with master. Minor fixes

* [scheduled reports] - Add warning messages

* [scheduled reports] - flake8

* [scheduled reports] - fix rebase

* [scheduled reports] - fix rebase

* [scheduled reports] - fix flake8

* [scheduled reports] Rebase in prep for merge

* Fixed alembic tree after rebase
* Updated requirements to latest version of packages (and tested)
* Removed py2 stuff

* [scheduled reports] - fix flake8

* [scheduled reports] - address review comments

* [scheduled reports] - rebase with master
This commit is contained in:
Mahendra M
2018-12-10 22:29:29 -08:00
committed by Maxime Beauchemin
parent f366bbe735
commit 808622414c
23 changed files with 1569 additions and 40 deletions

View File

@@ -4,6 +4,10 @@ from os import path
FIXTURES_DIR = 'tests/fixtures'
def read_fixture(fixture_file_name):
with open(path.join(FIXTURES_DIR, fixture_file_name), 'rb') as fixture_file:
return fixture_file.read()
def load_fixture(fixture_file_name):
with open(path.join(FIXTURES_DIR, fixture_file_name)) as fixture_file:
return json.load(fixture_file)
return json.loads(read_fixture(fixture_file_name))