Hi Anthony,

I read the relevant part of the book: 
http://www.web2py.com/books/default/chapter/29/4?search=url+rewrite#Parameter-based-system
 
and had a look at router.example.py file, I am not sure I completely 
understand the solution you provided me with.

If you use the parameter-based rewrite system to set a default app, 
> controller, and function and specify the list of available functions in the 
> default router


By default router you mean this:

#  The built-in default router supplies default values (undefined members 
are None):
#
#     default_router = dict(
#         default_application = 'init',
#             applications = 'ALL',
#         default_controller = 'default',
#             controllers = 'DEFAULT',
#         default_function = 'index',
#             functions = None,
#         default_language = None,
#             languages = None,
#         root_static = ['favicon.ico', 'robots.txt'],
#         domains = None,
#         map_hyphen = False,
#         acfe_match = r'\w+$',              # legal app/ctlr/fcn/ext
#         file_match = r'(\w+[-=./]?)+$',    # legal file (path) name
#         args_match = r'([\w@ -]+[=.]?)+$', # legal arg in args
#     )

... in router.example.py? In my case default_application = 'init', 
default_controller = 'default' and default_function = 'index'  What do you 
mean by 'and specify the list of available functions in the default router' 
. My application contains 15 controllers and almost 100 functions, do I 
have to list them all in functions = '' or do I have to just list the 
functions in default_controller = 'default', controllers = 'DEFAULT',

 

> then in http://yourdomain.com/code/shortname, code and shortname will be 
> interpreted as request.args[1:2], with the request being routed to the 
> default app, controller, and function.


In my case init/default/index which implies that in the index function I 
have to do something like:


def index():
    if request.args(0)==code:
        
row=db(db.auth_user.shortname==request.args(1)).select(db.auth_user.nodeID).first()
        
account=db(db.NodeAccount.nodeID==row.nodeID).select(db.NodeAccount.accountID).first()
        if account.accountID==BASICACCOUNTID:
            redirect(URL('vcard',args=row.nodeID))
        elif account.accountID==ADVANCEDACCOUNTID:
            redirect(URL('site','index',args=row.nodeID))
        elif account.accountID==HUBACCOUNTID:
            redirect(URL('hub','index',args=row.nodeID))
    else:
        return dict()


Kind regards,

Annet
    

Reply via email to