Package gavo :: Package web :: Module customrender :: Class CustomRenderer
[frames] | no frames]

Class CustomRenderer

source code

                   object --+                        
                            |                        
       nevow.rend.DataFactory --+                    
                                |                    
                   object --+   |                    
                            |   |                    
     nevow.rend.RenderFactory --+                    
                                |                    
                   object --+   |                    
                            |   |                    
      nevow.rend.MacroFactory --+                    
                                |                    
                   object --+   |                    
                            |   |                    
 nevow.rend.ConfigurableMixin --+                    
                                |                    
              nevow.rend.Fragment --+                
                                    |                
   nevow.rend.ConfigurableFactory --+                
                                    |                
nevow.rend.FreeformChildMixin --+   |                
                                |   |                
      nevow.rend.ChildLookupMixin --+                
                                    |                
                      nevow.rend.Page --+            
                                        |            
                       object --+       |            
                                |       |            
           common.CommonRenderers --+   |            
                                    |   |            
                grend.GavoRenderMixin --+            
                                        |            
                           grend.GavoPage --+        
                                            |        
                      grend.ResourceBasedPage --+    
                                                |    
                           grend.ServiceBasedPage --+
                                                    |
                                                   CustomRenderer

A renderer defined in a python module.

To define a custom renderer write a python module and define a class MainPage inheriting from gavo.web.ServiceBasedPage.

This class basically is a nevow resource, i.e., you can define docFactory, locateChild, renderHTTP, and so on.

To use it, you have to define a service with the resdir-relative path to the module in the customPage attribute and probably a nullCore. You also have to allow the custom renderer (but you may have other renderers, e.g., static).

If the custom page is for display in web browsers, define a class method isBrowseable(cls, service) returning true. This is for the generation of links like "use this service from your browser" only; it does not change the service's behaviour with your renderer.

There should really be a bit more docs on this, but alas, there's none as yet.

Instance Methods
 
__init__(self, ctx, service)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
renderHTTP(self, ctx) source code
 
locateChild(self, ctx, segments)
Locate a child page of this one.
source code

Inherited from grend.ServiceBasedPage: __provides__, child, data_serviceURL, processData, renderer, runService, runServiceWithFormalData

Inherited from grend.ResourceBasedPage: data_rdId

Inherited from nevow.rend.Page: child_, flattenFactory, onPostFailure, onPostSuccess, rememberStuff, renderString, renderSynchronously, webFormPost

Inherited from nevow.rend.Fragment: get, remember, rend

Inherited from nevow.rend.DataFactory: __providedBy__

Inherited from nevow.rend.RenderFactory: render_data, render_mapping, render_sequence, render_string, render_xml

Inherited from nevow.rend.MacroFactory: macro

Inherited from nevow.rend.ConfigurableMixin: getBinding, getBindingNames, getDefault, postForm

Inherited from grend.GavoRenderMixin: data_meta, data_rd, render_authinfo, render_datameta, render_explodableMeta, render_ifadmin, render_ifdata, render_ifmeta, render_ifnodata, render_ifnoslot, render_ifownmeta, render_ifslot, render_intro, render_meta, render_metahtml, render_prependsite, render_withsidebar

Inherited from common.CommonRenderers: render_commonhead, render_getconfig, render_rootlink, render_unicode, render_urlescape

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Inherited from nevow.rend.ConfigurableFactory: configurable_, configurable_original, locateConfigurable

Inherited from nevow.rend.ChildLookupMixin: childFactory, putChild

Inherited from nevow.rend.FreeformChildMixin: child_freeform_hand

Class Methods
 
isBrowseable(self, service)
returns True if this renderer applied to service is usable using a plain web browser.
source code

Inherited from grend.ResourceBasedPage: isCacheable, makeAccessURL

Class Variables
  name = 'custom'
hash(x)

Inherited from grend.ServiceBasedPage: __implemented__, checkedRenderer, openRenderer

Inherited from grend.ResourceBasedPage: parameterStyle, preferredMethod, resultType, urlUse

Inherited from nevow.rend.Page: addSlash, afterRender, beforeRender, buffered

Inherited from nevow.rend.Fragment: docFactory, original

Inherited from grend.GavoRenderMixin: macroPackage

Inherited from nevow.rend.ChildLookupMixin: children

Properties

Inherited from object: __class__

Method Details

__init__(self, ctx, service)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)

isBrowseable(self, service)
Class Method

source code 
returns True if this renderer applied to service is usable using a plain web browser.
Overrides: grend.ResourceBasedPage.isBrowseable
(inherited documentation)

renderHTTP(self, ctx)

source code 
Overrides: nevow.rend.Page.renderHTTP

locateChild(self, ctx, segments)

source code 

Locate a child page of this one. ctx is a nevow.context.PageContext representing the parent Page, and segments is a tuple of each element in the URI. An tuple (page, segments) should be returned, where page is an instance of nevow.rend.Page and segments a tuple representing the remaining segments of the URI. If the child is not found, return NotFound instead.

locateChild is designed to be easily overridden to perform fancy lookup tricks. However, the default locateChild is useful, and looks for children in three places, in this order:

  • in a dictionary, self.children
  • a member of self named child_<childname>. This can be either an attribute or a method. If an attribute, it should be an object which can be adapted to IResource. If a method, it should take the context and return an object which can be adapted to IResource.
  • by calling self.childFactory(ctx, name). Name is a single string instead of a tuple of strings. This should return an object that can be adapted to IResource.
Overrides: nevow.rend.FreeformChildMixin.locateChild