Meze adds Sphinx flavor to Mezzanine. You can write your blog posts and pages in reStructuredText and get them converted into HTML via Sphinx.
See a number of usage examples at: http://ahmetbakan.com/blog/category/meze/
Sphinx is required to convert reStructuredText source.
You can use easy_install
or pip
:
easy_install -U mezzanine-meze pip install mezzanine-meze
or download package from https://pypi.python.org/pypi/mezzanine-meze
and install using setup.py
.
Make the following changes in your project settings.py
file:
Add "meze" to
INSTALLED_APPS
:INSTALLED_APPS = ( ... 'meze', )
Inject
source
andconvert
fields tomezzanine.blog.models.BlogPost
andmezzanine.pages.models.RichTextPage.source
models:help_text = ("Source in reStructuredText format will be converted to " "HTML and result will replace content field.") EXTRA_MODEL_FIELDS = ( # Enable Meze for blog posts ("mezzanine.blog.models.BlogPost.source", "TextField", (), {"blank": True, "help_text": help_text}), ("mezzanine.blog.models.BlogPost.convert", "BooleanField", ("Convert source",), {"default": True}), # Enable Meze for rich text pages ("mezzanine.pages.models.RichTextPage.source", "TextField", (), {"blank": True, "help_text": help_text}), ("mezzanine.pages.models.RichTextPage.convert", "BooleanField", ("Convert source",), {"default": True}), ) del help_text
If you have started using Meze after creating database, you may need to make a migration. See field injection caveats in Mezzanine documentation.
Update
settings.py
file.Add
MEZE_SETTINGS
:MEZE_SETTINGS = { 'workdir': os.path.join(PROJECT_ROOT, 'meze_workdir'), }
Default values are shown. You will need write access to
workdir
.Add configuration options for Sphinx:
SPHINX_CONF = """ project = u'' copyright = u'' version = '0' release = '0' master_doc = 'index' pygments_style = 'sphinx' html_theme = 'default' html_sidebars = {'**': []} html_domain_indices = False html_use_index = False html_show_sourcelink = False html_add_permalinks = None source_suffix = '.rst' intersphinx_mapping = {'python': ('http://docs.python.org/', None)} extlinks = {'wiki': ('http://en.wikipedia.org/wiki/%s', ''),} extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.extlinks'] """
This file is written to Meze
workdir
.Sphinx is using Pygments for syntax highlighting, so you will need to add
pygments.css
file to your template:{% compress css %} ... <link rel="stylesheet" href="{% static "meze/css/meze.css" %}"> <link rel="stylesheet" href="{% static "meze/css/pygments.css" %}"> ...
If you are writing Python snippets, you can also add
copybutton.js
file, to enable a copy friendly display option for code:{% compress js %} ... <script src="{% static "meze/js/copybutton.js" %}"></script> ...
Meze starts a Sphinx project in workdir
by creating a simple
configuration file (conf.py
).
reStructuredText files are written into workdir
, HTML files are built
using Sphinx, and content of HTML files are stored in the database.
https://github.com/abakan/mezzanine-meze
- Moved static files to meze folder.
- Added static files to setup.py.
- Searching images in both
STATIC_ROOT
andMEDIA_ROOT
folders.- Improved revising image sources in HTML to avoid exceptions when an image file is not found.
- Fixed a bug in Meze class that prevented changes in Sphinx configuration to take place.
- Improved handling of image files.
- First release.