@@ -673,3 +673,23 @@ 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.
|
||||
|
||||
WARNING: If you update httpagentparser make sure to leave mobilize for
|
||||
backwards compatibility.
|
||||
"""
|
||||
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()
|
||||
|
||||
@@ -331,11 +331,16 @@ class Request(Storage):
|
||||
user_agent = session._user_agent
|
||||
if user_agent:
|
||||
return user_agent
|
||||
user_agent = user_agent_parser.detect(self.env.http_user_agent)
|
||||
http_user_agent = self.env.http_user_agent
|
||||
user_agent = user_agent_parser.detect(http_user_agent)
|
||||
for key, value in user_agent.items():
|
||||
if isinstance(value, dict):
|
||||
user_agent[key] = Storage(value)
|
||||
user_agent = session._user_agent = Storage(user_agent)
|
||||
user_agent = Storage(user_agent)
|
||||
user_agent.is_mobile = 'Mobile' in http_user_agent
|
||||
user_agent.is_tablet = 'Tablet' in http_user_agent
|
||||
session._user_agent = user_agent
|
||||
|
||||
return user_agent
|
||||
|
||||
def requires_https(self):
|
||||
|
||||
Reference in New Issue
Block a user