Skip to main content

Breve template engine renderer for Pyramid Web Framework

Project description

Breve template engine renderer for Pyramid framework that uses asset specification to locate and load templates. Please use GitHub repository to access latest sources, report bugs and make feature requests

Installation

If you prefer pip:

$ pip install pyramid-breve

Otherwise:

$ easy_install pyramid-breve

Usage

Call config.include('pyramid_breve') in your WSGI applicatication factory function as following:

def main(global_config, **settings):
    config = Configurator(settings=settings)

    config.include('pyramid_breve')

    config.add_static_view('static', 'static', cache_max_age=3600)
    config.scan()

    return config.make_wsgi_app()

Another way is to add it to pyramid.includes in your INI-file:

[app:main]
pyramid.includes = pyramid_breve

Now use it to render templates:

# using absolute asset specification
@view_config(route_name='home', renderer='my.lovely.app:templates/home.b')
def home_view(request):
    return {real: 'content'}

# using relative asset specification
@view_config(route_name='login', renderer='templates/login.b')
def login_view(request):

Configuration parameters

There are few configuration parameters that control rendering. They can be set in INI-file as following:

[app:main]
breve.tags = my_package.breve.tags
breve.doctype = html
# optionally, enforce default package name if pyramid-breve fails to detect it
breve.default_package = myapp

Breve renderer accepts following parameters:

breve.default_package

Package name to use for resolving relative asset specifications, i.e. assets without explicit package name. Pyramid-breve tries to detect your application name and use it as default package name but it’s a tricky business and this parameter allowes to enforce default package name.

breve.tags

This parameter will be resolved from dotted name string into Python object. Default is breve.tags.html.tags.

breve.doctype

“<!DOCTYPE html>” or just “html”. Default is content of breve.tags.html.doctype.

breve.xmlns

Will be sent as-is to the constructor. Default is content of breve.tags.html.xmlns.

breve.fragment

This boolean variable will be used as fragment parameter to breve.Template.render call. This parameter can also be controlled by setting breve_fragment template variable as following:

@view_config(renderer='templates/home.b')
def home_view(request):
    return {
        # other variables used in template
        'breve_fragment': True,
        }

Template variable breve_fragment overrides global breve.fragment setting. If none is set default is False.

Template file modification monitoring

Starting from version 0.6dev there is pyramid_breve.monitor.IFileMonitor interface. Implementations of that interface can be used to help pyramid_breve.renderer.TemplateLoader to get template file status without calling os.stat each time template is about to be rendered.

There is pyramid_breve.monitor.IntervalMonitor implementation of that interface which is used by BreveRendererFactory by default. That class simply caches os.stat value for fixed amount of time. Its constructor accepts single parameter interval that should be interval in seconds between invalidating cached values. This parameter can be configure via INI-file variable breve.monitor_interval like following:

[app:main]
# cache os.stat calls for 15 seconds
breve.monitor_interval = 15

It is possible to implement custom IFileMonitor using more advanced techiques, like inotify or File Alteration Monitor features.

Lets create simple IFileMonitor implementation and configure pyramid_breve to use it.

First, we need to implement IFileMonitor interface:

# myapp/utils.py

from zope.interface import implements
from pyramid_breve.monitor import IFileMonitor

class DummyMonitor(object):

    implements(IFileMonitor)

    def last_modified(self, name):
        # Never even look at real modification time and
        # make it look like templates never change
        return 0

monitor = DummyMonitor()

Use breve.monitor variable in INI-file:

[app:main]
breve.monitor = myapp.utils.monitor

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

pyramid-breve-0.7.0.zip (10.3 kB view details)

Uploaded Source

pyramid-breve-0.7.0.tar.gz (4.6 kB view details)

Uploaded Source

pyramid-breve-0.7.0.tar.bz2 (5.0 kB view details)

Uploaded Source

File details

Details for the file pyramid-breve-0.7.0.zip.

File metadata

  • Download URL: pyramid-breve-0.7.0.zip
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyramid-breve-0.7.0.zip
Algorithm Hash digest
SHA256 28304a3826aadb5a00f70707e6917174fb6de6cf25d80650c138b88a7ac74a1f
MD5 5ab005fd0e0a42984cc5b11aef0f5a9b
BLAKE2b-256 6d79b900f19246483705820b2edf9536a82f7426a2d9d1b4caf70eaa467cea60

See more details on using hashes here.

File details

Details for the file pyramid-breve-0.7.0.tar.gz.

File metadata

  • Download URL: pyramid-breve-0.7.0.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyramid-breve-0.7.0.tar.gz
Algorithm Hash digest
SHA256 937e2067194e36caa109902eeb5e127c1767f1a22e9178cf4f1005686f7a5464
MD5 a5066ef6bf20e6a2a17a418f5814d3de
BLAKE2b-256 5373a894353297023ab7c8f75a7f57af43d29ee5f13c4fa26bc4c6d5697a7023

See more details on using hashes here.

File details

Details for the file pyramid-breve-0.7.0.tar.bz2.

File metadata

File hashes

Hashes for pyramid-breve-0.7.0.tar.bz2
Algorithm Hash digest
SHA256 15bc83a501b1ef67d79ea8be20b2b1459808953ce6420dcdda374939cafa1526
MD5 05d4dd911a4bf90e417dd7927d476158
BLAKE2b-256 ee9e753c597154886a917699c3acaf1a9eb5f5049ff3a505b6b583fa1ae3af35

See more details on using hashes here.

Supported by

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