Package web2py :: Package gluon :: Module main
[hide private]
[frames] | no frames]

Module main

source code


This file is part of web2py Web Framework (Copyrighted, 2007-2010).
Developed by Massimo Di Pierro <mdipierro@cs.depaul.edu>.
License: GPL v2

Contains:

- wsgibase: the gluon wsgi application

Classes [hide private]
  HttpServer
the web2py web server (wsgiserver)
Functions [hide private]
 
get_client(env)
guess the client address from the environment variables
source code
 
copystream_progress(request, chunk_size=100000)
copies request.env.wsgi_input into request.body and stores progress upload status in cache.ram X-Progress-ID:length and X-Progress-ID:uploaded
source code
 
serve_controller(request, response, session)
this function is used to generate a dynamic page.
source code
 
start_response_aux(status, headers, exc_info, response=None)
in controller you can use::
source code
 
middleware_aux(request, response, *middleware_apps)
In you controller use:
source code
 
environ_aux(environ, request) source code
 
parse_get_post_vars(request, environ) source code
 
wsgibase(environ, responder)
this is the gluon wsgi application.
source code
 
save_password(password, port)
used by main() to save the password in the parameters.py file.
source code
 
appfactory(wsgiapp=<function wsgibase at 0x24e2c30>, logfilename='httpserver.log', profilerfilename='profiler.log', web2py_path='/Users/mdipierro/web2py')
generates a wsgi application that does logging and profiling and calls wsgibase
source code
Variables [hide private]
  regex_space = re.compile(r'(\+|\s|%20)+')
  regex_url = re.compile(r'(?x)(^/(?P<b>\w+)/static/(?P<x>(\w[-=...
  regex_client = re.compile(r'[\w-:]+(\.[\w-]+)*\.?')
  web2py_path = '/Users/mdipierro/web2py'
  version_info = open(os.path.join(web2py_path, 'VERSION'), 'r')
  web2py_version = 'Version 1.74.10 (2010-02-03 10:12:31)\n'
Function Details [hide private]

get_client(env)

source code 

guess the client address from the environment variables

first tries 'http_x_forwarded_for', secondly 'remote_addr' if all fails assume '127.0.0.1' (running locally)

serve_controller(request, response, session)

source code 

this function is used to generate a dynamic page. It first runs all models, then runs the function in the controller, and then tries to render the output using a view/template. this function must run from the [application] folder. A typical examples would be the call to the url /[application]/[controller]/[function] that would result in a call to [function]() in applications/[application]/[controller].py rendered by applications/[application]/[controller]/[view].html

start_response_aux(status, headers, exc_info, response=None)

source code 

in controller you can use::

- request.wsgi.environ
- request.wsgi.start_response

to call third party WSGI applicaitons

middleware_aux(request, response, *middleware_apps)

source code 

In you controller use:

   @request.wsgi.middleware(middleware1, middleware2, ...)

to decorate actions with WSGI middleware. actions must return strings. uses a simulated environment so it may have weird behavior in some cases

wsgibase(environ, responder)

source code 

this is the gluon wsgi application. the first function called when a page
is requested (static or dynamic). it can be called by paste.httpserver
or by apache mod_wsgi.

  - fills request with info
  - the environment variables, replacing '.' with '_'
  - adds web2py path and version info
  - compensates for fcgi missing path_info and query_string
  - validates the path in url

The url path must be either:

1. for static pages:

  - /<application>/static/<file>

2. for dynamic pages:

  - /<application>[/<controller>[/<function>[/<sub>]]][.<extension>]
  - (sub may go several levels deep, currently 3 levels are supported:
     sub1/sub2/sub3)

The naming conventions are:

  - application, controller, function and extension may only contain
    [a-zA-Z0-9_]
  - file and sub may also contain '-', '=', '.' and '/'

appfactory(wsgiapp=<function wsgibase at 0x24e2c30>, logfilename='httpserver.log', profilerfilename='profiler.log', web2py_path='/Users/mdipierro/web2py')

source code 

generates a wsgi application that does logging and profiling and calls
wsgibase

.. function:: gluon.main.appfactory(
        [wsgiapp=wsgibase
        [, logfilename='httpserver.log'
        [, profilerfilename='profiler.log'
        [, web2py_path=web2py_path]]]])


Variables Details [hide private]

regex_url

Value:
re.compile(r'(?x)(^/(?P<b>\w+)/static/(?P<x>(\w[-=\./]?)*)$)|(^(/(?P<a\
>\w+)(/(?P<c>\w+)(/(?P<f>\w+)(\.(?P<e>\w+))?(/(?P<s>([\w-@][=\./]?)+))\
?)?)?)?/?$)')