skip to navigation
skip to content

mother-webapps-framework 0.1.0

Mother - Web Applications Framework

Downloads ↓

Mother is a framework written in python and based on twisted. It is designed to make developpement of web applications easy and fast.

It provides following functionalities among others:
  • simple url mapping to code,
  • handle multi content-types (html, JSON, ...),
  • integration with Tentacles ORM,
  • allow use of templating tools (currently, only Mako is supported)

Example:

UUID = '7c772000-8f12-4594-9730-9e4de53d55d1'

from mother          import routing
from mother.callable import callback, Callable
from mother.template import Static, Template

@callback(url=routing.ROOT)
def root(**kwargs):
       return """
               <html>
                       <head>
                               <title>Welcome to Mother Sample Application</title>
                       </head>
                       <body>
                               This is the homepage of <b>Mother Sample Application</b>.<br/>
                               <br>
                               <em>You are welcome to watch my source code to see how to build your first
                               <strong>Mother</strong> application</em>.
                       </body>
               </html>
       """

@callback(url='/foo', content_type='text/plain')
def foo(**kwargs):
       return 'foo:: plain text'

@callback(url='/foo', content_type='application/json')
def foo(**kwargs):
       return ['foo', 'json tree']

@callback(url='/foo', content_type='text/html')
def foo(**kwargs):
       return '<html><body><b>foo</b>:: html content</body></html>'

@callback
def bar(age, **args):
       try:
               age = int(age)
       except:
               return routing.HTTP_404('age MUST be integer')

       return 'the captain is %d years old' % age

class Captain(Callable):
       def __init__(self, **kwargs):
               super(Captain, self).__init__(**kwargs)
               self._age = 54

       # special methods GET, POST, PUT, DELETE are directly mapped to '/sample/captain' url
       def GET(self, **kwargs):
               return 'Captain::GET'

       # You can also expose non-special class/instance methods with the callback modified
       # Here we learn a new @callback option, named 'method'
       #
       @callback
       def age(self, **kwargs):
               return self._age

       # Here we discover a new @callback argument, named 'method'
       # taking either a string among 'GET', 'POST','PUT','DELETE' or a list of these
       #
       # This argument set HTTP method(s) callback is accessible through (default is GET)
       @callback(url='/setage', method='POST')
       def age_post(self, age, **kwargs):
               try:
                       self._age = int(age)
               except:
                       return routing.HTTP_404('age MUST be integer')

               return routing.HTTP_200('')

@callback
def hello(**kwargs):
       return 'hello'

URLS = {
       # expose function
       '/hel-lo'                                                       : hello,
       # expose static content (directory)
       '/static'             : Static('static-content/'),
       # expose template file
       # NOTES
       #   . template files MUST be stored in a templates/ sub-directory
       #   . Mako is the only available template engine at present
       '/template'                                             : Template('sample.html', title='template sample title',
                                      content="""You\'re viewing a template sample page, rendered with <em>Mako</em>""")
}
 
File Type Py Version Uploaded on Size # downloads
mother-webapps-framework-0.1.0.tar.gz (md5) Source 2011-06-20 41KB 268