Hi Maritn, In trunk you can now do:
#only at the top of you controller from gluon.contrib import user_agent_parser @mobilize def index(): """ example action using the mobilizer decorator it is rendered by views/default/index.html or views/default/index.mobi depending if your browser is mobile or not """ return dict(message=response.view) With this decorator, the index page is rendered by index.html if you are on a desktop browser and index.mobi if you are on a mobile browser. So to implement a sort of responsive design simply using the @mobilize decorator and writing your mobile custom views. The decorator is totally optional, so you can implement only the mobile version of pages you care. Angelo 2011/8/29 Martin Weissenboeck <mweis...@gmail.com>: > Hi Angelo, it works now, thanks! > Any ideas about the second question? > There have been a lot of proposals how to change every view from .html to > .m.html if is_mobile is true. > Now I am a little bit confused: what would be the best code following if > ua.is_mobile...? > > 2011/8/29 Angelo Compagnucci <angelo.compagnu...@gmail.com> >> >> Hi Martin, >> >> In trunk the correct syntax should be: >> >> from gluon.contrib import user_agent_parser >> ua = user_agent_parser.detect(request.env.http_user_agent) >> if ua.is_mobile: ... >> >> Or better: >> >> ua = request.user_agent() >> if ua.is_mobile: ... >> >> The mothod user_agent() search in session if the user_agent was >> already parsed, so in the end it parses the user agent only first >> time. >> >> 2011/8/29 Martin Weissenboeck <mweis...@gmail.com>: >> > I tried: >> > >> > def mobile(): >> > from gluon.contrib import user_agent_parser >> > ua = user_agent_parser.detect(request.env.http_user_agent) >> > if ua.dist.is_mobile: .... >> > and i got: >> > AttributeError: 'NoneType' object has no attribute 'is_mobile' >> > Browsers: Opera 11.50, Safari 3.1.2 >> > (1) What is wrong? >> > (2) There have been a lot of proposals how to change every view from >> > .html >> > to .m.html if is_mobile is true. >> > Now I am a little bit confused: what would be the best code following >> > if >> > ua.dist.is_mobile...? >> > Regards, Martin >> > 2011/8/28 Massimo Di Pierro <massimo.dipie...@gmail.com> >> >> >> >> I have no objection.What do others think? >> >> >> >> On Aug 28, 10:53 am, Angelo Compagnucci <angelo.compagnu...@gmail.com> >> >> wrote: >> >> > HI Ross, Massimo, >> >> > >> >> > I wrote a small decorator to use the newly added is_mobile flag: >> >> > >> >> > class mobilize(object): >> >> > def __init__(self, func): >> >> > self.func = func >> >> > def __call__(self): >> >> > from gluon import current >> >> > if current.session._user_agent: >> >> > if current.session._user_agent.is_mobile: >> >> > current.response.view = \ >> >> > current.response.view.split(".")[0] + ".mobi" >> >> > return self.func() >> >> > >> >> > It should be included at the bottom of user_agent_parser.py. >> >> > >> >> > With this you can have automatically selected the view.html or the >> >> > view.mobi depending on your browser is mobile or not, an example >> >> > could >> >> > be: >> >> > >> >> > @mobilize >> >> > def index(): >> >> > """ >> >> > example action using the mobilizer decorator it is >> >> > rendered by views/default/index.html or >> >> > views/default/index.mobi depending if your browser >> >> > is mobile or not >> >> > """ >> >> > return dict(message=response.view) >> >> > >> >> > Could this be added in trunk? >> >> > >> >> > 2011/8/27 Massimo Di Pierro <massimo.dipie...@gmail.com>: >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > > This is in trunk as of last night. >> >> > >> >> > > On Aug 26, 12:13 pm, Ross Peoples <ross.peop...@gmail.com> wrote: >> >> > >> I submitted this to Massimo for inclusion. Now we wait :) >> > >> > > >