From 1ea379180a755ed556d5e5f12fa82d75518cf557 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Wed, 17 Oct 2012 14:30:02 -0500 Subject: [PATCH] fixed appadmin bug and excessive session saving --- VERSION | 2 +- applications/admin/controllers/appadmin.py | 3 ++- applications/examples/controllers/appadmin.py | 3 ++- applications/welcome/controllers/appadmin.py | 3 ++- gluon/globals.py | 7 +++++-- gluon/storage.py | 1 - 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index bd8fb753..98b824e6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.1.1 (2012-10-17 12:04:15) dev +Version 2.1.1 (2012-10-17 14:29:55) dev diff --git a/applications/admin/controllers/appadmin.py b/applications/admin/controllers/appadmin.py index c25fed29..bc8ae060 100644 --- a/applications/admin/controllers/appadmin.py +++ b/applications/admin/controllers/appadmin.py @@ -200,13 +200,14 @@ def select(): _class='delete', _type='checkbox', value=False), ''), TR('', '', INPUT(_type='submit', _value=T('submit')))), _action=URL(r=request,args=request.args)) + + tb = None if form.accepts(request.vars, formname=None): regex = re.compile(request.args[0] + '\.(?P\w+)\..+') match = regex.match(form.vars.query.strip()) if match: table = match.group('table') try: - tb = None nrows = db(query).count() if form.vars.update_check and form.vars.update_fields: db(query).update(**eval_in_global_env('dict(%s)' diff --git a/applications/examples/controllers/appadmin.py b/applications/examples/controllers/appadmin.py index c25fed29..bc8ae060 100644 --- a/applications/examples/controllers/appadmin.py +++ b/applications/examples/controllers/appadmin.py @@ -200,13 +200,14 @@ def select(): _class='delete', _type='checkbox', value=False), ''), TR('', '', INPUT(_type='submit', _value=T('submit')))), _action=URL(r=request,args=request.args)) + + tb = None if form.accepts(request.vars, formname=None): regex = re.compile(request.args[0] + '\.(?P
\w+)\..+') match = regex.match(form.vars.query.strip()) if match: table = match.group('table') try: - tb = None nrows = db(query).count() if form.vars.update_check and form.vars.update_fields: db(query).update(**eval_in_global_env('dict(%s)' diff --git a/applications/welcome/controllers/appadmin.py b/applications/welcome/controllers/appadmin.py index c25fed29..bc8ae060 100644 --- a/applications/welcome/controllers/appadmin.py +++ b/applications/welcome/controllers/appadmin.py @@ -200,13 +200,14 @@ def select(): _class='delete', _type='checkbox', value=False), ''), TR('', '', INPUT(_type='submit', _value=T('submit')))), _action=URL(r=request,args=request.args)) + + tb = None if form.accepts(request.vars, formname=None): regex = re.compile(request.args[0] + '\.(?P
\w+)\..+') match = regex.match(form.vars.query.strip()) if match: table = match.group('table') try: - tb = None nrows = db(query).count() if form.vars.update_check and form.vars.update_fields: db(query).update(**eval_in_global_env('dict(%s)' diff --git a/gluon/globals.py b/gluon/globals.py index d601b65e..7092f330 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -111,8 +111,10 @@ class Request(Storage): def user_agent(self): from gluon.contrib import user_agent_parser session = current.session - user_agent = session._user_agent = session._user_agent or \ + user_agent = session._user_agent or \ user_agent_parser.detect(self.env.http_user_agent) + if session: + session._user_agent = user_agent user_agent = Storage(user_agent) for key,value in user_agent.items(): if isinstance(value,dict): @@ -666,7 +668,8 @@ class Session(Storage): def _unchanged(self): previous_session_hash = self.pop('_session_hash',None) - if not previous_session_hash and not self: + if not previous_session_hash and not \ + any(value is not None for value in self.itervalues()): return True session_pickled = cPickle.dumps(dict(self)) session_hash = hashlib.md5(session_pickled).hexdigest() diff --git a/gluon/storage.py b/gluon/storage.py index 4a1900d5..92851139 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -48,7 +48,6 @@ class Storage(dict): __getstate__ = lambda self: None __copy__ = lambda self: Storage(self) - def getlist(self,key): """ Return a Storage value as a list.