commit | author | age
|
ee117e
|
1 |
from pyramid.interfaces import ( |
CM |
2 |
IRendererFactory, |
|
3 |
PHASE1_CONFIG, |
|
4 |
) |
5bf23f
|
5 |
|
229123
|
6 |
from pyramid import renderers |
52fde9
|
7 |
from pyramid.config.util import action_method |
ee117e
|
8 |
|
5bf23f
|
9 |
DEFAULT_RENDERERS = ( |
CM |
10 |
('json', renderers.json_renderer_factory), |
|
11 |
('string', renderers.string_renderer_factory), |
|
12 |
) |
|
13 |
|
|
14 |
class RenderingConfiguratorMixin(object): |
b7e92d
|
15 |
def add_default_renderers(self): |
CM |
16 |
for name, renderer in DEFAULT_RENDERERS: |
|
17 |
self.add_renderer(name, renderer) |
|
18 |
|
5bf23f
|
19 |
@action_method |
CM |
20 |
def add_renderer(self, name, factory): |
|
21 |
""" |
|
22 |
Add a :app:`Pyramid` :term:`renderer` factory to the |
|
23 |
current configuration state. |
|
24 |
|
|
25 |
The ``name`` argument is the renderer name. Use ``None`` to |
|
26 |
represent the default renderer (a renderer which will be used for all |
|
27 |
views unless they name another renderer specifically). |
|
28 |
|
|
29 |
The ``factory`` argument is Python reference to an |
|
30 |
implementation of a :term:`renderer` factory or a |
|
31 |
:term:`dotted Python name` to same. |
|
32 |
""" |
|
33 |
factory = self.maybe_dotted(factory) |
|
34 |
# if name is None or the empty string, we're trying to register |
|
35 |
# a default renderer, but registerUtility is too dumb to accept None |
|
36 |
# as a name |
012b97
|
37 |
if not name: |
5bf23f
|
38 |
name = '' |
eb2fee
|
39 |
def register(): |
CM |
40 |
self.registry.registerUtility(factory, IRendererFactory, name=name) |
522405
|
41 |
intr = self.introspectable('renderer factories', |
CM |
42 |
name, |
7f72f8
|
43 |
self.object_description(factory), |
CM |
44 |
'renderer factory') |
|
45 |
intr['factory'] = factory |
|
46 |
intr['name'] = name |
eb2fee
|
47 |
# we need to register renderers early (in phase 1) because they are |
CM |
48 |
# used during view configuration (which happens in phase 3) |
7f72f8
|
49 |
self.action((IRendererFactory, name), register, order=PHASE1_CONFIG, |
CM |
50 |
introspectables=(intr,)) |
5bf23f
|
51 |
|