wagtail-filepreviews
Extend Wagtail's Documents with image previews and metadata from FilePreviews.io
Installing
Install with pip:
$ pip install wagtaildocs_previews
Settings
In your settings file, add wagtaildocs_previews
to INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
'wagtaildocs_previews',
# ...
]
You'll also need to set WAGTAILDOCS_DOCUMENT_MODEL
.
WAGTAILDOCS_DOCUMENT_MODEL = 'wagtaildocs_previews.PreviewableDocument'
URL configuration
from wagtaildocs_previews import urls as wagtaildocs_urls
urlpatterns = [
# ...
url(r'^documents/', include(wagtaildocs_urls)),
# ...
]
FilePreviews.io API Keys
For previews to be generated for your documents, you'll need to have a
FilePreviews.io account and an application's credentials. Once you have
the credentials, add them under the FilePreviews
settings in your
Wagtail admin.
Usage
Since we're extending via WAGTAILDOCS_DOCUMENT_MODEL
you should be using
get_document_model()
to reference the correct Document model.
from wagtail.wagtailcore.models import Page
from wagtail.wagtaildocs.models import get_document_model
from wagtail.wagtaildocs.edit_handlers import DocumentChooserPanel
class BookPage(Page):
book_file = models.ForeignKey(
get_document_model(),
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
content_panels = Page.content_panels + [
DocumentChooserPanel('book_file'),
]
In your template now you'll be able to access the preview_data
field.
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block body_class %}resource-page{% endblock %}
{% block content %}
<h1>Book</h>
<h2>{{ page.book_file.title }}</h2>
<img src="{{ page.book_file.preview_data.preview.url|default:'http://placehold.it/300x300' }}" alt="">
{% endblock %}