Django layer on top of the bureaucracy package
Project description
# Django-bureaucracy
Django-Bureaucracy is a small wrapper around the [bureacracy](https://bitbucket.org/maykinmedia/bureaucracy)
package that can be used to generate word and pdf documents from .docx-templates
using Mailmerge fields.
## Installation:
```
pip install --process-dependency-links -e git+https://bitbucket.org/maykinmedia/django-bureaucracy.git#egg=django_bureaucracy-0.1
```
(Note that setuptools is annoying and that this doesn't work without the
`--process-dependency-links` flag which is deprecated. Have fun figuring out
how to do this when it's removed.)
... and then add `django_bureaucracy` to `INSTALLED_APPS`.
## Usage
### Example
```python
from django_bureaucracy.models import Document
# The document model is used to store a template and render documents from a context:
doc = Document(
template_file=File(open('sample.docx')),
type='tps_report',
validate_fields=True,
)
doc.save()
context = {
'table': Table(data=[['this is the first cell of the first row', 'this is the second cell of the first row'],
['the second row', 'etc'],
['etc', 'etc']],
headers=['header 1', 'header 2']),
'image': Image('pigeon.jpg')
'html': HTML("<h1>This is a header from html. And the styling works! Right?</h1><p><strong>bold</strong>-notbold</p><ul><li>hop</li><li>la</li><li>kee</li></ul>")
'text': 'some text',
}
# return bytes of the document generated from the template file and the context
doc_bytes = doc.render(context)
# idem but for pdf bytes:
pdf_bytes = doc.render(context, format='pdf')
# save to a file:
doc.render_to_file(context, '/path/to/file') # docx
doc.render_to_file(context, '/path/to/file', format='pdf') # pdf
```
### Rendering to HTTPResponse with the correct mimetype.
```python
from django_bureaucracy.shortcuts import render_to_download
def view(request)
# (...)
resp = render_to_download(Document.objects.get(...), context, format='docx')
# or...
resp = render_to_download(DocxTemplate(...), context, format='pdf')
# or ...
resp = render_to_download(DocxTemplate('/path/to/file', context)
# or ...
resp = render_to_download(DocxTemplate(file_like_object, context)
return resp
```
### Admin Integration
When the package is installed, `Document`-objects can be created in the
admin. When the `validate_fields` box is checked, the model's `clean` method
will check the `DOCX_TEMPLATE_VARS` setting to see whether the fields in
the template file and the document type match the ones provided in the setting and
raise a `ValidationError` if this is not the case.
```python
# in settings.py
DOCX_TEMPLATE_VARS = {
'tps_report': ['image', 'table', 'html', 'text'],
'letter': ['graph']
}
```
Django-Bureaucracy is a small wrapper around the [bureacracy](https://bitbucket.org/maykinmedia/bureaucracy)
package that can be used to generate word and pdf documents from .docx-templates
using Mailmerge fields.
## Installation:
```
pip install --process-dependency-links -e git+https://bitbucket.org/maykinmedia/django-bureaucracy.git#egg=django_bureaucracy-0.1
```
(Note that setuptools is annoying and that this doesn't work without the
`--process-dependency-links` flag which is deprecated. Have fun figuring out
how to do this when it's removed.)
... and then add `django_bureaucracy` to `INSTALLED_APPS`.
## Usage
### Example
```python
from django_bureaucracy.models import Document
# The document model is used to store a template and render documents from a context:
doc = Document(
template_file=File(open('sample.docx')),
type='tps_report',
validate_fields=True,
)
doc.save()
context = {
'table': Table(data=[['this is the first cell of the first row', 'this is the second cell of the first row'],
['the second row', 'etc'],
['etc', 'etc']],
headers=['header 1', 'header 2']),
'image': Image('pigeon.jpg')
'html': HTML("<h1>This is a header from html. And the styling works! Right?</h1><p><strong>bold</strong>-notbold</p><ul><li>hop</li><li>la</li><li>kee</li></ul>")
'text': 'some text',
}
# return bytes of the document generated from the template file and the context
doc_bytes = doc.render(context)
# idem but for pdf bytes:
pdf_bytes = doc.render(context, format='pdf')
# save to a file:
doc.render_to_file(context, '/path/to/file') # docx
doc.render_to_file(context, '/path/to/file', format='pdf') # pdf
```
### Rendering to HTTPResponse with the correct mimetype.
```python
from django_bureaucracy.shortcuts import render_to_download
def view(request)
# (...)
resp = render_to_download(Document.objects.get(...), context, format='docx')
# or...
resp = render_to_download(DocxTemplate(...), context, format='pdf')
# or ...
resp = render_to_download(DocxTemplate('/path/to/file', context)
# or ...
resp = render_to_download(DocxTemplate(file_like_object, context)
return resp
```
### Admin Integration
When the package is installed, `Document`-objects can be created in the
admin. When the `validate_fields` box is checked, the model's `clean` method
will check the `DOCX_TEMPLATE_VARS` setting to see whether the fields in
the template file and the document type match the ones provided in the setting and
raise a `ValidationError` if this is not the case.
```python
# in settings.py
DOCX_TEMPLATE_VARS = {
'tps_report': ['image', 'table', 'html', 'text'],
'letter': ['graph']
}
```
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-bureaucracy-0.4.2.tar.gz
.
File metadata
- Download URL: django-bureaucracy-0.4.2.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d508e71d7821acb1b162291f24f1c3f9aac73b7af060d00f33159c7e1f979766 |
|
MD5 | 973b58a5e00ce6f2cd13e376f94b1fad |
|
BLAKE2b-256 | 4f528691c2834a734150fa928fd87c64fe7d498b419ad7f86c41b69c4a8bb837 |
File details
Details for the file django_bureaucracy-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: django_bureaucracy-0.4.2-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37b194b3c11c2a519f28401a5ce5fe12e3f612aea94655d635f3fdb2d3527ac0 |
|
MD5 | 9cabe868c76031baab78c59560422b97 |
|
BLAKE2b-256 | 0f13564b74c7f7437d1df316f4f94b28654a2d5589496eba7668446817c04654 |