compileapp Module

This file is part of the web2py Web Framework
Copyrighted by Massimo Di Pierro <>

Functions required to execute app components



gluon.compileapp.LOAD(c=None, f='index', args=None, vars=None, extension=None, target=None, ajax=False, ajax_trap=False, url=None, user_signature=False, timeout=None, times=1, content='loading...', post_vars={}, **attr)[source]

LOADs a component into the action’s document

  • c (str) – controller
  • f (str) – function
  • args (tuple or list) – arguments
  • vars (dict) – vars
  • extension (str) – extension
  • target (str) – id of the target
  • ajax (bool) – True to enable AJAX bahaviour
  • ajax_trap (bool) – True if ajax is set to True, traps both links and forms “inside” the target
  • url (str) – overrides c,`f`,`args` and vars
  • user_signature (bool) – adds hmac signature to all links with a key that is different for every user
  • timeout (int) – in milliseconds, specifies the time to wait before starting the request or the frequency if times is greater than 1 or “infinity”
  • times (integer or str) – how many times the component will be requested “infinity” or “continuous” are accepted to reload indefinitely the component
class gluon.compileapp.LoadFactory(environment)[source]

Bases: object

Attention: this helper is new and experimental

gluon.compileapp.build_environment(request, response, session, store_current=True)[source]

Build the environment dictionary into which web2py files are executed.

gluon.compileapp.compile_application(folder, skip_failed_views=False)[source]

Compiles all models, views, controller for the application in folder.


Compiles all the controllers in the application specified by folder


Compiles all the models in the application specified by folder

gluon.compileapp.compile_views(folder, skip_failed_views=False)[source]

Compiles all the views in the application specified by folder

gluon.compileapp.local_import_aux(name, reload_force=False, app='welcome')[source]

In apps, instead of importing a local module (in applications/app/modules) with:

import a.b.c as d

you should do:

d = local_import('a.b.c')

or (to force a reload):

d = local_import(‘a.b.c’, reload=True)

This prevents conflict between applications and un-necessary execs. It can be used to import any module, including regular Python modules.

gluon.compileapp.model_cmp(a, b, sep='.')[source]
gluon.compileapp.model_cmp_sep(a, b, sep='/')[source]
class gluon.compileapp.mybuiltin[source]

Bases: object

NOTE could simple use a dict and populate it, NOTE not sure if this changes things though if monkey patching import…..


Read the code inside a bytecode compiled file if the MAGIC number is compatible

Returns:a code object

Deletes the folder compiled containing the compiled application.

gluon.compileapp.run_controller_in(controller, function, environment)[source]

Runs the controller.function() (for the app specified by the current folder). It tries pre-compiled controller_function.pyc first before compiling it.


Runs all models (in the app specified by the current folder) It tries pre-compiled models first before compiling them.


Executes the view for the requested action. The view is the one specified in response.view or determined by the url or view/generic.extension It tries the pre-compiled views_controller_function.pyc before compiling it.


Bytecode compiles the file filename



>>> import traceback, types
>>> environment={'x':1}
>>> open('', 'w').write('print 1/x')
>>> save_pyc('')
>>> os.unlink('')
>>> if type(read_pyc('a.pyc'))==types.CodeType: print 'code'
>>> exec read_pyc('a.pyc') in environment