Package gluon :: Module compileapp
[hide private]
[frames] | no frames]

Module compileapp

source code


| This file is part of the web2py Web Framework
| Copyrighted by Massimo Di Pierro <mdipierro@cs.depaul.edu>
| License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)

Functions required to execute app components
---------------------------------------------

Note:
    FOR INTERNAL USE ONLY

Classes [hide private]
  mybuiltin
NOTE could simple use a dict and populate it, NOTE not sure if this changes things though if monkey patching import.....
  LoadFactory
Attention: this helper is new and experimental
Functions [hide private]
 
re_compile(regex) source code
 
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...', **attr)
LOADs a component into the action's document
source code
 
local_import_aux(name, reload_force=False, app='welcome')
In apps, instead of importing a local module (in applications/app/modules) with::
source code
 
build_environment(request, response, session, store_current=True)
Build the environment dictionary into which web2py files are executed.
source code
 
save_pyc(filename)
Bytecode compiles the file `filename`
source code
 
read_pyc(filename)
Read the code inside a bytecode compiled file if the MAGIC number is compatible
source code
 
compile_views(folder)
Compiles all the views in the application specified by `folder`
source code
 
compile_models(folder)
Compiles all the models in the application specified by `folder`
source code
 
find_exposed_functions(data) source code
 
compile_controllers(folder)
Compiles all the controllers in the application specified by `folder`
source code
 
model_cmp(a, b, sep='.') source code
 
model_cmp_sep(a, b, sep='/') source code
 
run_models_in(environment)
Runs all models (in the app specified by the current folder) It tries pre-compiled models first before compiling them.
source code
 
run_controller_in(controller, function, environment)
Runs the controller.function() (for the app specified by the current folder).
source code
 
run_view_in(environment)
Executes the view for the requested action.
source code
 
remove_compiled_application(folder)
Deletes the folder `compiled` containing the compiled application.
source code
 
compile_application(folder)
Compiles all models, views, controller for the application in `folder`.
source code
 
test()
Example:
source code
Variables [hide private]
  logger = logging.getLogger("web2py")
  is_pypy = False
  is_gae = None
hash(x)
  is_jython = False
  TEST_CODE = '\ndef _TEST():\n import doctest, sys, cStringI...
  CACHED_REGEXES = {}
  CACHED_REGEXES_MAX_SIZE = 1000
  _base_environment_ = {'A': <class 'gluon.html.A'>, 'ANY_OF': <...
  __package__ = 'gluon'
Function Details [hide private]

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...', **attr)

source code 
LOADs a component into the action's document

Args:
    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

local_import_aux(name, reload_force=False, app='welcome')

source code 

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.

read_pyc(filename)

source code 

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

Returns:
    a code object

run_controller_in(controller, function, environment)

source code 

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

run_view_in(environment)

source code 

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.

test()

source code 

Example:

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

Variables Details [hide private]

TEST_CODE

Value:
'''
def _TEST():
    import doctest, sys, cStringIO, types, cgi, gluon.fileutils
    if not gluon.fileutils.check_credentials(request):
        raise HTTP(401, web2py_error=\'invalid credentials\')
    stdout = sys.stdout
    html = \'<h2>Testing controller "%s.py" ... done.</h2><br/>\\n\' \\
\
...

_base_environment_

Value:
{'A': <class 'gluon.html.A'>,
 'ANY_OF': <class 'gluon.validators.ANY_OF'>,
 'B': <class 'gluon.html.B'>,
 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>,
 'BODY': <class 'gluon.html.BODY'>,
 'BR': <class 'gluon.html.BR'>,
 'BUTTON': <class 'gluon.html.BUTTON'>,
 'CAT': <class 'gluon.html.CAT'>,
...