Skip to main content

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']
}
```

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

django-bureaucracy-0.3.1.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

django_bureaucracy-0.3.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file django-bureaucracy-0.3.1.tar.gz.

File metadata

File hashes

Hashes for django-bureaucracy-0.3.1.tar.gz
Algorithm Hash digest
SHA256 abf83cf991e2a0340b5b3ebb1934c183a57c6274f6a2d41940610a2985620e5e
MD5 7faaf0686099167c0a3fbba3a16729be
BLAKE2b-256 19ba7f6d4b4887535a6df1fa6a26b095057365cee5cda8ad98ddd020263d7e26

See more details on using hashes here.

File details

Details for the file django_bureaucracy-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_bureaucracy-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f2c529fc6a120376e8c06804cd9f4cd0d8467e4f6bcf0f77e5d73071e30ba004
MD5 8a5a6b58f90eecd64f18e6a8acb3c387
BLAKE2b-256 c44604c57d4f61e06b51331ffd01a37384aadb9bbd11a90aea1483d27f2823a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page