69 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								App Handler
							 | 
						||
| 
								 | 
							
								===========
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								There is one special "global" type of :term:`handler` which
							 | 
						||
| 
								 | 
							
								corresponds to the :term:`app` itself, whereas all other handlers
							 | 
						||
| 
								 | 
							
								correspond to some "portion" of the app.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The :term:`app handler` provides:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* various "global" utilities
							 | 
						||
| 
								 | 
							
								* primary interface for obtaining all other handlers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The base class and default app handler is
							 | 
						||
| 
								 | 
							
								:class:`wuttjamaican.app.AppHandler`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The :term:`config object` is responsible for creating the app handler
							 | 
						||
| 
								 | 
							
								via :meth:`~wuttjamaican.conf.WuttaConfig.get_app()`::
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   from wuttjamaican.conf import make_config
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   config = make_config()
							 | 
						||
| 
								 | 
							
								   app = config.get_app()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Overriding the App Handler
							 | 
						||
| 
								 | 
							
								--------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								It is expected that many apps will want a more customized app handler.
							 | 
						||
| 
								 | 
							
								To do this, first create your app handler class e.g. in
							 | 
						||
| 
								 | 
							
								``poser/app.py``::
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   from wuttjamaican.app import AppHandler
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   class PoserAppHandler(AppHandler):
							 | 
						||
| 
								 | 
							
								       """
							 | 
						||
| 
								 | 
							
								       Custom app handler for the Poser system.
							 | 
						||
| 
								 | 
							
								       """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       def make_session(self, **kwargs):
							 | 
						||
| 
								 | 
							
								           """
							 | 
						||
| 
								 | 
							
								           Override this method to specify extra/default params etc.
							 | 
						||
| 
								 | 
							
								           """
							 | 
						||
| 
								 | 
							
								           #kwargs.setdefault('foo', 'bar')
							 | 
						||
| 
								 | 
							
								           session = super().make_session(**kwargs)
							 | 
						||
| 
								 | 
							
								           return session
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       def hello(self):
							 | 
						||
| 
								 | 
							
								           """
							 | 
						||
| 
								 | 
							
								           Extra method to print a hello message.
							 | 
						||
| 
								 | 
							
								           """
							 | 
						||
| 
								 | 
							
								           print("hello from", self.appname)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Then in your config file, specify that your app handler should be used
							 | 
						||
| 
								 | 
							
								instead of the default.  Note that the config section will need to
							 | 
						||
| 
								 | 
							
								match whatever the :term:`app name` is.  (And note that the app name
							 | 
						||
| 
								 | 
							
								is not necessarily the same as your :term:`package` name!)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. code-block:: ini
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   # nb. this is the default
							 | 
						||
| 
								 | 
							
								   [wutta]
							 | 
						||
| 
								 | 
							
								   app.handler = poser.app:PoserAppHandler
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   # but if appname is 'foobar' then it should be this
							 | 
						||
| 
								 | 
							
								   [foobar]
							 | 
						||
| 
								 | 
							
								   app.handler = poser.app:PoserAppHandler
							 |