@@ -673,3 +673,23 @@ def simple_detect(agent):
|
|||||||
if os_version:
|
if os_version:
|
||||||
os = " ".join((os, os_version))
|
os = " ".join((os, os_version))
|
||||||
return os, browser
|
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()
|
||||||
|
|||||||
+7
-2
@@ -331,11 +331,16 @@ class Request(Storage):
|
|||||||
user_agent = session._user_agent
|
user_agent = session._user_agent
|
||||||
if user_agent:
|
if user_agent:
|
||||||
return 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():
|
for key, value in user_agent.items():
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
user_agent[key] = Storage(value)
|
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
|
return user_agent
|
||||||
|
|
||||||
def requires_https(self):
|
def requires_https(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user