Leonel, very interesting this possibility, it is possible to avoid rewriting enough thing, thanks for sharing!
Em terça-feira, 9 de julho de 2019 18:56:35 UTC-3, Leonel Câmara escreveu: > > This looks good, if you want to take it a step further and have something > like sub-controller-functions in your apps that will have their own views > folder inside the app views folder you can use this decorator I made: > > def parent_controller(views_folder=None, pop_args_zero=True): > """ > Decorator to turn a controller function into a parent of other > controller > functions. > > This allows you to have many controller functions in a single > controller > function each having their own view inside a folder. > > :views_folder: Folder where it gets the views for the children > controllers > by default uses the parent controller name. > :pop_args_zero: whether to remove or not the name of the children > controller > from request.args. By default True. > """ > if views_folder is None: > views_folder = os.path.join(request.controller, request.function) > def wrapper(action): > def f(_action=action, *a, **b): > command = None > try: > if pop_args_zero: > parseme = request.args.pop(0) > else: > parseme = request.args(0) > if '.' in parseme: > try: > command, extension = parseme.split('.') > except ValueError: > raise HTTP(400, "invalid arguments") > else: > command, extension = parseme, 'html' > except (IndexError, TypeError): # pop from empty list > command, extension = 'index', 'html' > > > response.view = os.path.join(views_folder, command + '.' + > extension) > > requested_controller = _action().get(command, None) > if requested_controller: > return requested_controller() > else: > raise HTTP(404) > f.__doc__ = action.__doc__ > f.__name__ = action.__name__ > return f > return wrapper > > > Then in the app1.py controller you could do something like: > > @auth.requires_login() > @parent_controller() > def pages(): > def index(): > ... > return {} > > def insert(): > ... > return something > > def delete(): > ... > return something > > return locals() > > And in the views you would have > > app1/ > pages/ > index.html > insert.html > delete.html > > > @villas note that in your case it's probably better to have a single > application do the log in and then use CAS. > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/849111d4-5600-49f5-815c-2f03130e0832%40googlegroups.com.