@@ -88,37 +88,37 @@ _TEST() """ class mybuiltin(object): """ - NOTE could simple use a dict and populate it, + NOTE could simple use a dict and populate it, NOTE not sure if this changes things though if monkey patching import..... """ #__builtins__ def __getitem__(self, key): try: return getattr(__builtin__, key) except AttributeError: - raise KeyError, key + raise KeyError, key def __setitem__(self, key, value): setattr(self, key, value) class LoadFactory(object): """ Attention: this helper is new and experimental """ def __init__(self,environment): self.environment = environment - def __call__(self, c=None, f='index', args=[], vars={}, + def __call__(self, c=None, f='index', args=None, vars=None, extension=None, target=None,ajax=False,ajax_trap=False, url=None,user_signature=False, content='loading...',**attr): + if args is None: args = [] + vars = Storage(vars or {}) import globals target = target or 'c'+str(random.random())[2:] attr['_id']=target request = self.environment['request'] - if not isinstance(vars,Storage): - vars = Storage(vars) if '.' in f: f, extension = f.split('.',1) if url or ajax: url = url or html.URL(request.application, c, f, r=request, args=args, vars=vars, extension=extension, @@ -134,11 +134,11 @@ other_request = Storage() for key, value in request.items(): other_request[key] = value other_request['env'] = Storage() for key, value in request.env.items(): - other_request.env['key'] = value + other_request.env['key'] = value other_request.controller = c other_request.function = f other_request.extension = extension or request.extension other_request.args = List(args) other_request.vars = vars @@ -149,11 +149,11 @@ '/'.join([request.application,c,f] + \ map(str, other_request.args)) other_request.env.query_string = \ vars and html.URL(vars=vars).split('?')[1] or '' other_request.env.http_web2py_component_location = \ - request.env.path_info + request.env.path_info other_request.cid = target other_request.env.http_web2py_component_element = target other_response.view = '%s/%s.%s' % (c,f, other_request.extension) other_environment = copy.copy(self.environment) other_response._view_environment = other_environment @@ -264,11 +264,11 @@ global __builtins__ if is_jython: # jython hack __builtins__ = mybuiltin() else: - __builtins__['__import__'] = __builtin__.__import__ + __builtins__['__import__'] = __builtin__.__import__ ### WHY? environment['__builtins__'] = __builtins__ environment['HTTP'] = HTTP environment['redirect'] = redirect environment['request'] = request environment['response'] = response @@ -312,11 +312,11 @@ """ Compiles all the views in the application specified by `folder` """ path = os.path.join(folder, 'views') - for file in listdir(path, '^[\w/]+\.\w+$'): + for file in listdir(path, '^[\w/\-]+(\.\w+)+$'): data = parse_template(file, path) filename = ('views/%s.py' % file).replace('/', '_').replace('\\', '_') filename = os.path.join(folder, 'compiled', filename) write_file(filename, data) save_pyc(filename) @@ -566,6 +566,8 @@ if __name__ == '__main__': import doctest doctest.testmod() + +