Added release docs with upgrade consideration of alternative to django-medusa
pull/3413/merge
Rob Moorman 2017-03-22 21:55:37 +01:00 zatwierdzone przez Matt Westcott
rodzic cf815e8897
commit c7b778c4e9
9 zmienionych plików z 7 dodań i 159 usunięć

Wyświetl plik

@ -5,6 +5,7 @@ Changelog
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
* Dropped Django 1.9 and Python 3.3 support; note that Django 1.8.x is still supported * Dropped Django 1.9 and Python 3.3 support; note that Django 1.8.x is still supported
* Dropped support for generating static sites using django-medusa
* Use minified versions of jQuery and jQuery UI in the admin. Total savings without compression 371 KB (Tom Dyson) * Use minified versions of jQuery and jQuery UI in the admin. Total savings without compression 371 KB (Tom Dyson)
* Hooks can now specify the order in which they are run (Gagaro) * Hooks can now specify the order in which they are run (Gagaro)
* Added a `submit_buttons` block to login template (Gagaro) * Added a `submit_buttons` block to login template (Gagaro)

Wyświetl plik

@ -31,7 +31,6 @@ Features
* Workflow support * Workflow support
* An extensible `form builder <http://docs.wagtail.io/en/latest/reference/contrib/forms.html>`_ * An extensible `form builder <http://docs.wagtail.io/en/latest/reference/contrib/forms.html>`_
* Multi-site and multi-language support * Multi-site and multi-language support
* Optional `static site generation <http://docs.wagtail.io/en/latest/reference/contrib/staticsitegen.html>`_
* Excellent `test coverage <https://coveralls.io/r/torchbox/wagtail?branch=master>`_ * Excellent `test coverage <https://coveralls.io/r/torchbox/wagtail?branch=master>`_
Find out more at `wagtail.io <http://wagtail.io/>`_. Find out more at `wagtail.io <http://wagtail.io/>`_.

Wyświetl plik

@ -9,7 +9,6 @@ Wagtail ships with a variety of extra optional modules.
settings settings
forms/index forms/index
staticsitegen
sitemaps sitemaps
frontendcache frontendcache
routablepage routablepage
@ -31,12 +30,6 @@ Site-wide settings that are editable by administrators in the Wagtail admin.
Allows forms to be created by admins and provides an interface for browsing form submissions. Allows forms to be created by admins and provides an interface for browsing form submissions.
:doc:`staticsitegen`
--------------------
Provides a management command that turns a Wagtail site into a set of static HTML files.
:doc:`sitemaps` :doc:`sitemaps`
--------------- ---------------

Wyświetl plik

@ -1,113 +0,0 @@
Static site generator
=====================
.. warning::
django-medusa is no longer maintained, and is incompatible with Django 1.8 and above; the information below is retained for historical reference only. An alternative module based on the `django-bakery`_ package is available as a third-party contribution: https://github.com/mhnbcu/wagtailbakery
This document describes how to render your Wagtail site into static HTML files on your local file system, Amazon S3 or Google App Engine, using `django medusa`_ and the ``wagtail.contrib.wagtailmedusa`` module.
Installing ``django-medusa``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, install ``django-medusa`` and ``django-sendfile`` from pip:
.. code-block:: console
$ pip install django-medusa django-sendfile
Then add ``django_medusa`` and ``wagtail.contrib.wagtailmedusa`` to ``INSTALLED_APPS``:
.. code-block:: python
INSTALLED_APPS = [
...
'django_medusa',
'wagtail.contrib.wagtailmedusa',
]
Define ``MEDUSA_RENDERER_CLASS``, ``MEDUSA_DEPLOY_DIR`` and ``SENDFILE_BACKEND`` in settings:
.. code-block:: python
MEDUSA_RENDERER_CLASS = 'django_medusa.renderers.DiskStaticSiteRenderer'
MEDUSA_DEPLOY_DIR = os.path.join(BASE_DIR, 'build')
SENDFILE_BACKEND = 'sendfile.backends.simple'
Rendering
~~~~~~~~~
To render a site, run ``./manage.py staticsitegen``. This will render the entire website and place the HTML in a folder called ``medusa_output``. The static and media folders need to be copied into this folder manually after the rendering is complete. This feature inherits ``django-medusa``'s ability to render your static site to Amazon S3 or Google App Engine; see the `medusa docs <https://github.com/mtigas/django-medusa/blob/master/README.markdown>`_ for configuration details.
To test, open the ``medusa_output`` folder in a terminal and run ``python -m SimpleHTTPServer`` or ``python3 -m http.server`` respectively.
Advanced topics
~~~~~~~~~~~~~~~
GET parameters
--------------
Pages which require GET parameters (e.g. for pagination) don't generate a suitable file name for the generated HTML files.
Wagtail provides a mixin (``wagtail.contrib.wagtailroutablepage.models.RoutablePageMixin``) which allows you to embed a Django URL configuration into a page. This allows you to give the subpages a URL like ``/page/1/`` which work well with static site generation.
Example:
.. code-block:: python
from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin, route
class BlogIndex(Page, RoutablePageMixin):
...
@route(r'^$', name='main')
@route(r'^page/(?P<page>\d+)/$', name='page')
def serve_page(self, request, page=1):
...
Then in the template, you can use the ``{% routablepageurl %}`` tag to link between the pages:
.. code-block:: html+django
{% load wagtailroutablepage_tags %}
{% if results.has_previous %}
<a href="{% routablepageurl page 'page' results.previous_page_number %}">Previous page</a>
{% else %}
{% if results.has_next %}
<a href="{% routablepageurl page 'page' results.next_page_number %}">Next page</a>
{% else %}
Next, you have to tell the ``wagtailmedusa`` module about your custom routing...
Rendering pages which use custom routing
----------------------------------------
For page types that override the ``route`` method, we need to let ``django-medusa`` know which URLs it responds on. This is done by overriding the ``get_static_site_paths`` method to make it yield one string per URL path.
For example, the BlogIndex above would need to yield one URL for each page of results:
.. code-block:: python
def get_static_site_paths(self):
# Get page count
page_count = ...
# Yield a path for each page
for page in range(page_count):
yield '/%d/' % (page + 1)
# Yield from superclass
for path in super(BlogIndex, self).get_static_site_paths():
yield path
.. _django medusa: https://github.com/mtigas/django-medusa
.. _django-bakery: https://github.com/datadesk/django-bakery

Wyświetl plik

@ -56,6 +56,12 @@ Django 1.9 and Python 3.3 support dropped
Support for Django 1.9 and Python 3.3 has been dropped in this release; please upgrade from these before upgrading Wagtail. Note that the Django 1.8 release series is still supported, as a Long Term Support release. Support for Django 1.9 and Python 3.3 has been dropped in this release; please upgrade from these before upgrading Wagtail. Note that the Django 1.8 release series is still supported, as a Long Term Support release.
Dropped support for generating static sites using ``django-medusa``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Django-medusa is no longer maintained, and is incompatible with Django 1.8 and above. An alternative module based on the `django-bakery`_ package is available as a third-party contribution: https://github.com/moorinteractive/wagtail-bakery.
Signals on custom ``Image`` and ``Rendition`` models connected automatically Signals on custom ``Image`` and ``Rendition`` models connected automatically
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wyświetl plik

@ -1 +0,0 @@
default_app_config = 'wagtail.contrib.wagtailmedusa.apps.WagtailMedusaAppConfig'

Wyświetl plik

@ -1,9 +0,0 @@
from __future__ import absolute_import, unicode_literals
from django.apps import AppConfig
class WagtailMedusaAppConfig(AppConfig):
name = 'wagtail.contrib.wagtailmedusa'
label = 'wagtailmedusa'
verbose_name = "Wagtail medusa"

Wyświetl plik

@ -1,28 +0,0 @@
from __future__ import absolute_import, unicode_literals
from django_medusa.renderers import StaticSiteRenderer
from wagtail.wagtailcore.models import Site
from wagtail.wagtaildocs.models import get_document_model
class PageRenderer(StaticSiteRenderer):
def get_paths(self):
# Get site
# TODO: Find way to get this to work with other sites
site = Site.objects.filter(is_default_site=True).first()
if site is None:
return []
# Return list of paths
return site.root_page.get_static_site_paths()
class DocumentRenderer(StaticSiteRenderer):
def get_paths(self):
Document = get_document_model()
# Return list of paths to documents
return (doc.url for doc in Document.objects.all())
renderers = [PageRenderer, DocumentRenderer]