From 36303e338d01e52f3ada9d2569d50106bfa6b921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonel=20C=C3=A2mara?= Date: Tue, 10 Dec 2013 23:01:06 +0000 Subject: [PATCH 1/3] convert session to dict before pickling Session was constantly being pickled without converting to dict as it should be. --- gluon/globals.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gluon/globals.py b/gluon/globals.py index 58b2c0de..1c8f4419 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -878,7 +878,7 @@ class Session(Storage): response.cookies[response.session_id_name]['expires'] = \ cookie_expires.strftime(FMT) - session_pickled = cPickle.dumps(self) + session_pickled = cPickle.dumps(dict(self)) response.session_hash = hashlib.md5(session_pickled).hexdigest() if self.flash: @@ -1038,7 +1038,7 @@ class Session(Storage): return True def _unchanged(self,response): - session_pickled = cPickle.dumps(self) + session_pickled = cPickle.dumps(dict(self)) response.session_pickled = session_pickled session_hash = hashlib.md5(session_pickled).hexdigest() return response.session_hash == session_hash @@ -1065,7 +1065,7 @@ class Session(Storage): else: unique_key = response.session_db_unique_key - session_pickled = response.session_pickled or cPickle.dumps(self) + session_pickled = response.session_pickled or cPickle.dumps(dict(self)) dd = dict(locked=False, client_ip=response.session_client, @@ -1105,7 +1105,7 @@ class Session(Storage): portalocker.lock(response.session_file, portalocker.LOCK_EX) response.session_locked = True if response.session_file: - session_pickled = response.session_pickled or cPickle.dumps(self) + session_pickled = response.session_pickled or cPickle.dumps(dict(self)) response.session_file.write(session_pickled) response.session_file.truncate() finally: From 752a1c7df6f58a82139b20cfd574d31f85decc8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonel=20C=C3=A2mara?= Date: Tue, 25 Feb 2014 12:29:51 +0000 Subject: [PATCH 2/3] Update tools.py Fixed email date header not respecting the RFC2822 defined format See: https://groups.google.com/forum/#!topic/web2py/0Mb99H9kJOw --- gluon/tools.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gluon/tools.py b/gluon/tools.py index f802d21f..11a8c018 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -23,6 +23,7 @@ import urllib2 import Cookie import cStringIO import ConfigParser +import email.utils from email import MIMEBase, MIMEMultipart, MIMEText, Encoders, Header, message_from_string, Charset from gluon.contenttype import contenttype @@ -666,8 +667,7 @@ class Mail(object): if bcc: to.extend(bcc) payload['Subject'] = encoded_or_raw(subject.decode(encoding)) - payload['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S +0000", - time.gmtime()) + payload['Date'] = email.utils.formatdate() for k, v in headers.iteritems(): payload[k] = encoded_or_raw(v.decode(encoding)) result = {} From d01add8f2b1c29a539d47752e5b504bac3d677b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonel=20C=C3=A2mara?= Date: Tue, 25 Feb 2014 12:54:31 +0000 Subject: [PATCH 3/3] Revert "convert session to dict before pickling" This reverts commit 36303e338d01e52f3ada9d2569d50106bfa6b921. --- gluon/globals.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gluon/globals.py b/gluon/globals.py index 1c8f4419..58b2c0de 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -878,7 +878,7 @@ class Session(Storage): response.cookies[response.session_id_name]['expires'] = \ cookie_expires.strftime(FMT) - session_pickled = cPickle.dumps(dict(self)) + session_pickled = cPickle.dumps(self) response.session_hash = hashlib.md5(session_pickled).hexdigest() if self.flash: @@ -1038,7 +1038,7 @@ class Session(Storage): return True def _unchanged(self,response): - session_pickled = cPickle.dumps(dict(self)) + session_pickled = cPickle.dumps(self) response.session_pickled = session_pickled session_hash = hashlib.md5(session_pickled).hexdigest() return response.session_hash == session_hash @@ -1065,7 +1065,7 @@ class Session(Storage): else: unique_key = response.session_db_unique_key - session_pickled = response.session_pickled or cPickle.dumps(dict(self)) + session_pickled = response.session_pickled or cPickle.dumps(self) dd = dict(locked=False, client_ip=response.session_client, @@ -1105,7 +1105,7 @@ class Session(Storage): portalocker.lock(response.session_file, portalocker.LOCK_EX) response.session_locked = True if response.session_file: - session_pickled = response.session_pickled or cPickle.dumps(dict(self)) + session_pickled = response.session_pickled or cPickle.dumps(self) response.session_file.write(session_pickled) response.session_file.truncate() finally: