Coverage for /home/martinb/.local/share/virtualenvs/camcops/lib/python3.6/site-packages/pyramid/config/rendering.py : 94%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from pyramid.interfaces import IRendererFactory, PHASE1_CONFIG
3from pyramid import renderers
4from pyramid.config.actions import action_method
6DEFAULT_RENDERERS = (
7 ('json', renderers.json_renderer_factory),
8 ('string', renderers.string_renderer_factory),
9)
12class RenderingConfiguratorMixin(object):
13 def add_default_renderers(self):
14 for name, renderer in DEFAULT_RENDERERS:
15 self.add_renderer(name, renderer)
17 @action_method
18 def add_renderer(self, name, factory):
19 """
20 Add a :app:`Pyramid` :term:`renderer` factory to the
21 current configuration state.
23 The ``name`` argument is the renderer name. Use ``None`` to
24 represent the default renderer (a renderer which will be used for all
25 views unless they name another renderer specifically).
27 The ``factory`` argument is Python reference to an
28 implementation of a :term:`renderer` factory or a
29 :term:`dotted Python name` to same.
30 """
31 factory = self.maybe_dotted(factory)
32 # if name is None or the empty string, we're trying to register
33 # a default renderer, but registerUtility is too dumb to accept None
34 # as a name
35 if not name:
36 name = ''
38 def register():
39 self.registry.registerUtility(factory, IRendererFactory, name=name)
41 intr = self.introspectable(
42 'renderer factories',
43 name,
44 self.object_description(factory),
45 'renderer factory',
46 )
47 intr['factory'] = factory
48 intr['name'] = name
49 # we need to register renderers early (in phase 1) because they are
50 # used during view configuration (which happens in phase 3)
51 self.action(
52 (IRendererFactory, name),
53 register,
54 order=PHASE1_CONFIG,
55 introspectables=(intr,),
56 )