Hide keyboard shortcuts

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 

2 

3from pyramid import renderers 

4from pyramid.config.actions import action_method 

5 

6DEFAULT_RENDERERS = ( 

7 ('json', renderers.json_renderer_factory), 

8 ('string', renderers.string_renderer_factory), 

9) 

10 

11 

12class RenderingConfiguratorMixin(object): 

13 def add_default_renderers(self): 

14 for name, renderer in DEFAULT_RENDERERS: 

15 self.add_renderer(name, renderer) 

16 

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. 

22 

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). 

26 

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 = '' 

37 

38 def register(): 

39 self.registry.registerUtility(factory, IRendererFactory, name=name) 

40 

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 )