Skip to content

Commit

Permalink
Merge pull request #150 from maykinmedia/issue/149-pdf-destruction-re…
Browse files Browse the repository at this point in the history
…port

Fixes #149 - Destruction report is now a PDF
  • Loading branch information
SilviaAmAm committed Mar 23, 2021
2 parents 0c65c41 + ae1c6cb commit 4f24dd9
Show file tree
Hide file tree
Showing 13 changed files with 226 additions and 132 deletions.
3 changes: 3 additions & 0 deletions requirements/base.in
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ flower # task monitoring

# ZGW-related libraries
zgw-consumers

# PDF document creation
WeasyPrint
18 changes: 15 additions & 3 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@
#
amqp==2.6.0 # via kombu
billiard==3.6.3.0 # via celery
cairocffi==1.2.0 # via cairosvg, weasyprint
cairosvg==2.5.1 # via weasyprint
celery==4.4.5 # via -r requirements/base.in, flower
certifi==2020.4.5.1 # via elastic-apm, requests, sentry-sdk
cffi==1.14.0 # via cryptography
cffi==1.14.0 # via cairocffi, cryptography, weasyprint
chardet==3.0.4 # via requests
cryptography==2.9.2 # via django-auth-adfs
cssselect2==0.4.1 # via cairosvg, weasyprint
defusedxml==0.6.0 # via cairosvg
django-admin-index==1.4.0 # via -r requirements/base.in
django-appconf==1.0.4 # via django-axes, django-timeline-logger
django-auth-adfs-db==0.2.0 # via -r requirements/base.in
Expand Down Expand Up @@ -39,15 +43,17 @@ elastic-apm==5.6.0 # via -r requirements/base.in
flower==0.9.4 # via -r requirements/base.in
future==0.18.2 # via celery
gemma-zds-client==0.13.1 # via zgw-consumers
html5lib==1.1 # via weasyprint
humanize==0.5.1 # via flower
idna==2.9 # via requests
kombu==4.6.10 # via celery
maykin-django-better-admin-arrayfield==1.0.5 # via -r requirements/base.in
pillow==7.1.2 # via -r requirements/base.in
pillow==7.1.2 # via -r requirements/base.in, cairosvg, weasyprint
polib==1.1.0 # via django-rosetta
psycopg2==2.8.5 # via -r requirements/base.in
pycparser==2.20 # via cffi
pyjwt==1.7.1 # via django-auth-adfs, gemma-zds-client
pyphen==0.10.0 # via weasyprint
python-dateutil==2.8.1 # via django-relativedelta
python-decouple==3.3 # via -r requirements/base.in
python-dotenv==0.13.0 # via -r requirements/base.in
Expand All @@ -56,10 +62,16 @@ pyyaml==5.3.1 # via gemma-zds-client
redis==3.5.3 # via django-redis
requests==2.23.0 # via django-auth-adfs, django-rosetta, gemma-zds-client
sentry-sdk==0.14.4 # via -r requirements/base.in
six==1.15.0 # via cryptography, django-choices, django-compat, django-extra-views, django-rosetta, python-dateutil
six==1.15.0 # via cryptography, django-choices, django-compat, django-extra-views, django-rosetta, html5lib, python-dateutil
sqlparse==0.3.1 # via django
tinycss2==1.1.0 # via cairosvg, cssselect2, weasyprint
tornado==6.0.4 # via flower
urllib3==1.25.9 # via elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/base.in
vine==1.3.0 # via amqp, celery
weasyprint==52.2 # via -r requirements/base.in
webencodings==0.5.1 # via cssselect2, html5lib, tinycss2
zgw-consumers==0.10.2 # via -r requirements/base.in

# The following packages are considered to be unsafe in a requirements file:
# setuptools
18 changes: 15 additions & 3 deletions requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
amqp==2.6.0 # via -r requirements/base.txt, kombu
beautifulsoup4==4.9.1 # via webtest
billiard==3.6.3.0 # via -r requirements/base.txt, celery
cairocffi==1.2.0 # via -r requirements/base.txt, cairosvg, weasyprint
cairosvg==2.5.1 # via -r requirements/base.txt, weasyprint
celery==4.4.5 # via -r requirements/base.txt, flower
certifi==2020.4.5.1 # via -r requirements/base.txt, elastic-apm, requests, sentry-sdk
cffi==1.14.0 # via -r requirements/base.txt, cryptography
cffi==1.14.0 # via -r requirements/base.txt, cairocffi, cryptography, weasyprint
chardet==3.0.4 # via -r requirements/base.txt, requests
coverage==4.5.4 # via -r requirements/test-tools.in
cryptography==2.9.2 # via -r requirements/base.txt, django-auth-adfs
cssselect2==0.4.1 # via -r requirements/base.txt, cairosvg, weasyprint
cssselect==1.1.0 # via pyquery
defusedxml==0.6.0 # via -r requirements/base.txt, cairosvg
django-admin-index==1.4.0 # via -r requirements/base.txt
django-appconf==1.0.4 # via -r requirements/base.txt, django-axes, django-timeline-logger
django-auth-adfs-db==0.2.0 # via -r requirements/base.txt
Expand Down Expand Up @@ -48,16 +52,18 @@ flower==0.9.4 # via -r requirements/base.txt
freezegun==0.3.15 # via -r requirements/test-tools.in
future==0.18.2 # via -r requirements/base.txt, celery
gemma-zds-client==0.13.1 # via -r requirements/base.txt, zgw-consumers
html5lib==1.1 # via -r requirements/base.txt, weasyprint
humanize==0.5.1 # via -r requirements/base.txt, flower
idna==2.9 # via -r requirements/base.txt, requests
kombu==4.6.10 # via -r requirements/base.txt, celery
lxml==4.6.2 # via pyquery
maykin-django-better-admin-arrayfield==1.0.5 # via -r requirements/base.txt
pillow==7.1.2 # via -r requirements/base.txt
pillow==7.1.2 # via -r requirements/base.txt, cairosvg, weasyprint
polib==1.1.0 # via -r requirements/base.txt, django-rosetta
psycopg2==2.8.5 # via -r requirements/base.txt
pycparser==2.20 # via -r requirements/base.txt, cffi
pyjwt==1.7.1 # via -r requirements/base.txt, django-auth-adfs, gemma-zds-client
pyphen==0.10.0 # via -r requirements/base.txt, weasyprint
pyquery==1.4.1 # via -r requirements/test-tools.in
python-dateutil==2.8.1 # via -r requirements/base.txt, django-relativedelta, faker, freezegun
python-decouple==3.3 # via -r requirements/base.txt
Expand All @@ -68,16 +74,22 @@ redis==3.5.3 # via -r requirements/base.txt, django-redis
requests-mock==1.8.0 # via -r requirements/test-tools.in
requests==2.23.0 # via -r requirements/base.txt, django-auth-adfs, django-rosetta, gemma-zds-client, requests-mock
sentry-sdk==0.14.4 # via -r requirements/base.txt
six==1.15.0 # via -r requirements/base.txt, cryptography, django-choices, django-compat, django-extra-views, django-rosetta, freezegun, python-dateutil, requests-mock, webtest
six==1.15.0 # via -r requirements/base.txt, cryptography, django-choices, django-compat, django-extra-views, django-rosetta, freezegun, html5lib, python-dateutil, requests-mock, webtest
soupsieve==2.0.1 # via beautifulsoup4
sqlparse==0.3.1 # via -r requirements/base.txt, django
tblib==1.6.0 # via -r requirements/test-tools.in
text-unidecode==1.3 # via faker
tinycss2==1.1.0 # via -r requirements/base.txt, cairosvg, cssselect2, weasyprint
tornado==6.0.4 # via -r requirements/base.txt, flower
urllib3==1.25.9 # via -r requirements/base.txt, elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/base.txt
vine==1.3.0 # via -r requirements/base.txt, amqp, celery
waitress==1.4.4 # via webtest
weasyprint==52.2 # via -r requirements/base.txt
webencodings==0.5.1 # via -r requirements/base.txt, cssselect2, html5lib, tinycss2
webob==1.8.6 # via webtest
webtest==2.0.35 # via django-webtest
zgw-consumers==0.10.2 # via -r requirements/base.txt

# The following packages are considered to be unsafe in a requirements file:
# setuptools
217 changes: 120 additions & 97 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,103 +4,126 @@
#
# pip-compile --no-index --output-file=requirements/dev.txt requirements/ci.txt requirements/dev.in
#
alabaster==0.7.12
# via sphinx
appdirs==1.4.4
# via black
attrs==19.3.0
# via black
babel==2.8.0
# via sphinx
black==19.10b0
# via -r dev.in
certifi==2020.4.5.1
# via requests
chardet==3.0.4
# via requests
click==7.1.2
# via
# black
# pip-tools
django-debug-toolbar==2.2
# via -r dev.in
django-extensions==2.2.9
# via -r dev.in
django==2.2.12
# via django-debug-toolbar
docutils==0.16
# via sphinx
flake8==3.8.2
# via -r dev.in
idna==2.9
# via requests
imagesize==1.2.0
# via sphinx
isort==5.0.3
# via -r dev.in
jinja2==2.11.3
# via sphinx
markupsafe==1.1.1
# via jinja2
mccabe==0.6.1
# via flake8
packaging==20.4
# via sphinx
pathspec==0.8.0
# via black
pip-tools==5.2.0
# via -r dev.in
pycodestyle==2.6.0
# via flake8
pyflakes==2.2.0
# via flake8
pygments==2.6.1
# via sphinx
pyparsing==2.4.7
# via packaging
pytz==2020.1
# via
# babel
# django
regex==2020.5.14
# via black
requests==2.23.0
# via sphinx
six==1.15.0
# via
# django-extensions
# packaging
# pip-tools
snowballstemmer==2.0.0
# via sphinx
sphinx-rtd-theme==0.4.3
# via -r dev.in
sphinx==3.0.4
# via
# -r dev.in
# sphinx-rtd-theme
sphinxcontrib-applehelp==1.0.2
# via sphinx
sphinxcontrib-devhelp==1.0.2
# via sphinx
sphinxcontrib-htmlhelp==1.0.3
# via sphinx
sphinxcontrib-jsmath==1.0.1
# via sphinx
sphinxcontrib-qthelp==1.0.3
# via sphinx
sphinxcontrib-serializinghtml==1.1.4
# via sphinx
sqlparse==0.3.1
# via
# django
# django-debug-toolbar
toml==0.10.1
# via black
typed-ast==1.4.1
# via black
urllib3==1.25.9
# via requests
alabaster==0.7.12 # via sphinx
amqp==2.6.0 # via -r requirements/ci.txt, kombu
appdirs==1.4.4 # via black
attrs==19.3.0 # via black
babel==2.8.0 # via sphinx
beautifulsoup4==4.9.1 # via -r requirements/ci.txt, webtest
billiard==3.6.3.0 # via -r requirements/ci.txt, celery
black==19.10b0 # via -r requirements/dev.in
cairocffi==1.2.0 # via -r requirements/ci.txt, cairosvg, weasyprint
cairosvg==2.5.1 # via -r requirements/ci.txt, weasyprint
celery==4.4.5 # via -r requirements/ci.txt, flower
certifi==2020.4.5.1 # via -r requirements/ci.txt, elastic-apm, requests, sentry-sdk
cffi==1.14.0 # via -r requirements/ci.txt, cairocffi, cryptography, weasyprint
chardet==3.0.4 # via -r requirements/ci.txt, requests
click==7.1.2 # via black, pip-tools
coverage==4.5.4 # via -r requirements/ci.txt
cryptography==2.9.2 # via -r requirements/ci.txt, django-auth-adfs
cssselect2==0.4.1 # via -r requirements/ci.txt, cairosvg, weasyprint
cssselect==1.1.0 # via -r requirements/ci.txt, pyquery
defusedxml==0.6.0 # via -r requirements/ci.txt, cairosvg
django-admin-index==1.4.0 # via -r requirements/ci.txt
django-appconf==1.0.4 # via -r requirements/ci.txt, django-axes, django-timeline-logger
django-auth-adfs-db==0.2.0 # via -r requirements/ci.txt
django-auth-adfs==1.3.1 # via -r requirements/ci.txt, django-auth-adfs-db
django-axes==5.3.2 # via -r requirements/ci.txt
django-capture-on-commit-callbacks==1.1.0 # via -r requirements/ci.txt
django-choices==1.7.1 # via -r requirements/ci.txt, zgw-consumers
django-compat==1.0.15 # via -r requirements/ci.txt, django-hijack, django-hijack-admin
django-debug-toolbar==2.2 # via -r requirements/dev.in
django-extensions==2.2.9 # via -r requirements/dev.in
django-extra-views==0.13.0 # via -r requirements/ci.txt
django-filter==2.3.0 # via -r requirements/ci.txt
django-fsm-admin==1.2.4 # via -r requirements/ci.txt
django-fsm==2.7.0 # via -r requirements/ci.txt, django-fsm-admin
django-hijack-admin==2.1.10 # via -r requirements/ci.txt
django-hijack==2.1.10 # via -r requirements/ci.txt, django-hijack-admin
django-ipware==2.1.0 # via -r requirements/ci.txt, django-axes
django-jenkins==0.110.0 # via -r requirements/ci.txt
django-ordered-model==3.4.1 # via -r requirements/ci.txt, django-admin-index
django-privates==1.2.1 # via -r requirements/ci.txt
django-redis==4.12.1 # via -r requirements/ci.txt
django-relativedelta==1.1.1 # via -r requirements/ci.txt, zgw-consumers
django-rosetta==0.9.4 # via -r requirements/ci.txt
django-sendfile2==0.6.0 # via -r requirements/ci.txt, django-privates
django-sniplates==0.7.0 # via -r requirements/ci.txt
django-solo==1.1.3 # via -r requirements/ci.txt, django-auth-adfs-db, zgw-consumers
django-timeline-logger==1.1.2 # via -r requirements/ci.txt
django-webtest==1.9.7 # via -r requirements/ci.txt
django==2.2.12 # via -r requirements/ci.txt, django-appconf, django-auth-adfs, django-auth-adfs-db, django-axes, django-capture-on-commit-callbacks, django-choices, django-debug-toolbar, django-extra-views, django-filter, django-fsm-admin, django-jenkins, django-privates, django-redis, django-relativedelta, django-rosetta, django-sendfile2, django-sniplates, django-timeline-logger, zgw-consumers
docutils==0.16 # via sphinx
elastic-apm==5.6.0 # via -r requirements/ci.txt
factory-boy==2.12.0 # via -r requirements/ci.txt
faker==4.1.0 # via -r requirements/ci.txt, factory-boy
flake8==3.8.2 # via -r requirements/dev.in
flower==0.9.4 # via -r requirements/ci.txt
freezegun==0.3.15 # via -r requirements/ci.txt
future==0.18.2 # via -r requirements/ci.txt, celery
gemma-zds-client==0.13.1 # via -r requirements/ci.txt, zgw-consumers
html5lib==1.1 # via -r requirements/ci.txt, weasyprint
humanize==0.5.1 # via -r requirements/ci.txt, flower
idna==2.9 # via -r requirements/ci.txt, requests
imagesize==1.2.0 # via sphinx
isort==5.0.3 # via -r requirements/dev.in
jinja2==2.11.3 # via sphinx
kombu==4.6.10 # via -r requirements/ci.txt, celery
lxml==4.6.2 # via -r requirements/ci.txt, pyquery
markupsafe==1.1.1 # via jinja2
maykin-django-better-admin-arrayfield==1.0.5 # via -r requirements/ci.txt
mccabe==0.6.1 # via flake8
packaging==20.4 # via sphinx
pathspec==0.8.0 # via black
pillow==7.1.2 # via -r requirements/ci.txt, cairosvg, weasyprint
pip-tools==5.2.0 # via -r requirements/dev.in
polib==1.1.0 # via -r requirements/ci.txt, django-rosetta
psycopg2==2.8.5 # via -r requirements/ci.txt
pycodestyle==2.6.0 # via flake8
pycparser==2.20 # via -r requirements/ci.txt, cffi
pyflakes==2.2.0 # via flake8
pygments==2.6.1 # via sphinx
pyjwt==1.7.1 # via -r requirements/ci.txt, django-auth-adfs, gemma-zds-client
pyparsing==2.4.7 # via packaging
pyphen==0.10.0 # via -r requirements/ci.txt, weasyprint
pyquery==1.4.1 # via -r requirements/ci.txt
python-dateutil==2.8.1 # via -r requirements/ci.txt, django-relativedelta, faker, freezegun
python-decouple==3.3 # via -r requirements/ci.txt
python-dotenv==0.13.0 # via -r requirements/ci.txt
pytz==2020.1 # via -r requirements/ci.txt, babel, celery, django, flower
pyyaml==5.3.1 # via -r requirements/ci.txt, gemma-zds-client
redis==3.5.3 # via -r requirements/ci.txt, django-redis
regex==2020.5.14 # via black
requests-mock==1.8.0 # via -r requirements/ci.txt
requests==2.23.0 # via -r requirements/ci.txt, django-auth-adfs, django-rosetta, gemma-zds-client, requests-mock, sphinx
sentry-sdk==0.14.4 # via -r requirements/ci.txt
six==1.15.0 # via -r requirements/ci.txt, cryptography, django-choices, django-compat, django-extensions, django-extra-views, django-rosetta, freezegun, html5lib, packaging, pip-tools, python-dateutil, requests-mock, webtest
snowballstemmer==2.0.0 # via sphinx
soupsieve==2.0.1 # via -r requirements/ci.txt, beautifulsoup4
sphinx-rtd-theme==0.4.3 # via -r requirements/dev.in
sphinx==3.0.4 # via -r requirements/dev.in, sphinx-rtd-theme
sphinxcontrib-applehelp==1.0.2 # via sphinx
sphinxcontrib-devhelp==1.0.2 # via sphinx
sphinxcontrib-htmlhelp==1.0.3 # via sphinx
sphinxcontrib-jsmath==1.0.1 # via sphinx
sphinxcontrib-qthelp==1.0.3 # via sphinx
sphinxcontrib-serializinghtml==1.1.4 # via sphinx
sqlparse==0.3.1 # via -r requirements/ci.txt, django, django-debug-toolbar
tblib==1.6.0 # via -r requirements/ci.txt
text-unidecode==1.3 # via -r requirements/ci.txt, faker
tinycss2==1.1.0 # via -r requirements/ci.txt, cairosvg, cssselect2, weasyprint
toml==0.10.1 # via black
tornado==6.0.4 # via -r requirements/ci.txt, flower
typed-ast==1.4.1 # via black
urllib3==1.25.9 # via -r requirements/ci.txt, elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/ci.txt
vine==1.3.0 # via -r requirements/ci.txt, amqp, celery
waitress==1.4.4 # via -r requirements/ci.txt, webtest
weasyprint==52.2 # via -r requirements/ci.txt
webencodings==0.5.1 # via -r requirements/ci.txt, cssselect2, html5lib, tinycss2
webob==1.8.6 # via -r requirements/ci.txt, webtest
webtest==2.0.35 # via -r requirements/ci.txt, django-webtest
zgw-consumers==0.10.2 # via -r requirements/ci.txt

# The following packages are considered to be unsafe in a requirements file:
# pip
Expand Down
2 changes: 2 additions & 0 deletions src/archiefvernietigingscomponent/conf/ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

ENVIRONMENT = "ci"

SENDFILE_BACKEND = config("SENDFILE_BACKEND", "django_sendfile.backends.simple")

#
# Django-axes
#
Expand Down
5 changes: 4 additions & 1 deletion src/archiefvernietigingscomponent/destruction/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ def fetch_zaken(startdatum, zaaktypen, bronorganisaties):
queries.append(
dict(
query,
**{"zaaktype": zaaktype, "bronorganisatie": bronorganisatie}
**{
"zaaktype": zaaktype,
"bronorganisatie": bronorganisatie,
},
)
)
elif zaaktypen:
Expand Down
12 changes: 10 additions & 2 deletions src/archiefvernietigingscomponent/destruction/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,11 +175,19 @@ def complete_and_notify(list_id):
assigned_archivaris = approval_review.author
email = EmailMessage(
subject=report.title,
body=report.content.read().decode("utf8"),
body=_(
"Destruction list '%(list)s' has been processed. "
"The report of destruction is attached to this email."
)
% {"list": destruction_list.name,},
from_email=settings.DEFAULT_FROM_EMAIL,
to=[assigned_archivaris.email],
)
email.content_subtype = "html"
email.attach(
filename=report.get_filename(),
content=report.content.read(),
mimetype="application/pdf",
)
email.send()

return notification.id
Expand Down
Loading

0 comments on commit 4f24dd9

Please sign in to comment.