diff --git a/gluon/contrib/user_agent_parser.py b/gluon/contrib/user_agent_parser.py index bba1e436..61fee028 100644 --- a/gluon/contrib/user_agent_parser.py +++ b/gluon/contrib/user_agent_parser.py @@ -673,3 +673,20 @@ def simple_detect(agent): if os_version: os = " ".join((os, os_version)) return os, browser + + +class mobilize(object): + """ + Decorator for controller functions so they use different views for mobile devices. + """ + def __init__(self, func): + self.func = func + + def __call__(self): + from gluon import current + user_agent = current.request.user_agent() + if user_agent.is_mobile: + items = current.response.view.split('.') + items.insert(-1, 'mobile') + current.response.view = '.'.join(items) + return self.func()