From 8533fa0d00106f621c865f9db04a6044c84bf484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonel=20C=C3=A2mara?= Date: Tue, 8 Aug 2017 00:50:55 +0100 Subject: [PATCH] put is_mobile and is_tablet in the result of user_agent() --- gluon/contrib/user_agent_parser.py | 3 +++ gluon/globals.py | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gluon/contrib/user_agent_parser.py b/gluon/contrib/user_agent_parser.py index 61fee028..f966b616 100644 --- a/gluon/contrib/user_agent_parser.py +++ b/gluon/contrib/user_agent_parser.py @@ -678,6 +678,9 @@ def simple_detect(agent): 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 diff --git a/gluon/globals.py b/gluon/globals.py index 267ea661..e2ec33f1 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -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):