refactored pickle everywhere but Session, removed unused imports

This commit is contained in:
niphlod
2014-09-10 19:12:10 +02:00
parent c3cd32cc4f
commit 6403878f95
10 changed files with 42 additions and 33 deletions
-1
View File
@@ -20,7 +20,6 @@ caching will be provided by the GAE memcache
(see gluon.contrib.gae_memcache) (see gluon.contrib.gae_memcache)
""" """
import time import time
import shutil
import thread import thread
import os import os
import sys import sys
-4
View File
@@ -1,12 +1,8 @@
# fix response # fix response
import re
import os import os
import cPickle
import gluon.serializers
from gluon import current, HTTP from gluon import current, HTTP
from gluon.html import markmin_serializer, TAG, HTML, BODY, UL, XML, H1 from gluon.html import markmin_serializer, TAG, HTML, BODY, UL, XML, H1
from gluon.contenttype import contenttype
from gluon.contrib.fpdf import FPDF, HTMLMixin from gluon.contrib.fpdf import FPDF, HTMLMixin
from gluon.sanitizer import sanitize from gluon.sanitizer import sanitize
from gluon.contrib.markmin.markmin2latex import markmin2latex from gluon.contrib.markmin.markmin2latex import markmin2latex
+5 -2
View File
@@ -6,7 +6,10 @@ import redis
from redis.exceptions import ConnectionError from redis.exceptions import ConnectionError
from gluon import current from gluon import current
from gluon.cache import CacheAbstract from gluon.cache import CacheAbstract
import cPickle as pickle try:
import cPickle as pickle
except:
import pickle
import time import time
import re import re
import logging import logging
@@ -165,7 +168,7 @@ class RedisClient(object):
expireat = int(time.time() + time_expire) + 120 expireat = int(time.time() + time_expire) + 120
bucket_key = "%s:%s" % (cache_set_key, expireat / 60) bucket_key = "%s:%s" % (cache_set_key, expireat / 60)
value = f() value = f()
value_ = pickle.dumps(value) value_ = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
if time_expire == 0: if time_expire == 0:
time_expire = 1 time_expire = 1
self.r_server.setex(key, value_, time_expire) self.r_server.setex(key, value_, time_expire)
-3
View File
@@ -3,12 +3,9 @@ Developed by niphlod@gmail.com
""" """
import redis import redis
from redis.exceptions import ConnectionError
from gluon import current from gluon import current
from gluon.storage import Storage from gluon.storage import Storage
import cPickle as pickle
import time import time
import re
import logging import logging
import thread import thread
+8 -5
View File
@@ -21,7 +21,10 @@ import sanitizer
import itertools import itertools
import decoder import decoder
import copy_reg import copy_reg
import cPickle try:
import cPickle as pickle
except:
import pickle
import marshal import marshal
from HTMLParser import HTMLParser from HTMLParser import HTMLParser
@@ -1242,13 +1245,13 @@ class CAT(DIV):
def TAG_unpickler(data): def TAG_unpickler(data):
return cPickle.loads(data) return pickle.loads(data)
def TAG_pickler(data): def TAG_pickler(data):
d = DIV() d = DIV()
d.__dict__ = data.__dict__ d.__dict__ = data.__dict__
marshal_dump = cPickle.dumps(d) marshal_dump = pickle.dumps(d, pickle.HIGHEST_PROTOCOL)
return (TAG_unpickler, (marshal_dump,)) return (TAG_unpickler, (marshal_dump,))
@@ -2828,12 +2831,12 @@ class MARKMIN(XmlComponent):
return self.xml() return self.xml()
def ASSIGNJS(**kargs): def ASSIGNJS(**kargs):
from serializers import json from gluon.serializers import json
s = "" s = ""
for key, value in kargs.items(): for key, value in kargs.items():
s+='var %s = %s;\n' % (key, json(value)) s+='var %s = %s;\n' % (key, json(value))
return XML(s) return XML(s)
if __name__ == '__main__': if __name__ == '__main__':
import doctest import doctest
+8 -5
View File
@@ -21,7 +21,10 @@ import datetime
import platform import platform
import portalocker import portalocker
import fileutils import fileutils
import cPickle try:
import cPickle as pickle
except:
import pickle
from gluon.settings import global_settings from gluon.settings import global_settings
logger = logging.getLogger("web2py.cron") logger = logging.getLogger("web2py.cron")
@@ -139,7 +142,7 @@ class Token(object):
ret = None ret = None
portalocker.lock(self.master, portalocker.LOCK_EX) portalocker.lock(self.master, portalocker.LOCK_EX)
try: try:
(start, stop) = cPickle.load(self.master) (start, stop) = pickle.load(self.master)
except: except:
(start, stop) = (0, 1) (start, stop) = (0, 1)
if startup or self.now - start > locktime: if startup or self.now - start > locktime:
@@ -149,7 +152,7 @@ class Token(object):
logger.warning('WEB2PY CRON: Stale cron.master detected') logger.warning('WEB2PY CRON: Stale cron.master detected')
logger.debug('WEB2PY CRON: Acquiring lock') logger.debug('WEB2PY CRON: Acquiring lock')
self.master.seek(0) self.master.seek(0)
cPickle.dump((self.now, 0), self.master) pickle.dump((self.now, 0), self.master)
self.master.flush() self.master.flush()
finally: finally:
portalocker.unlock(self.master) portalocker.unlock(self.master)
@@ -166,10 +169,10 @@ class Token(object):
portalocker.lock(self.master, portalocker.LOCK_EX) portalocker.lock(self.master, portalocker.LOCK_EX)
logger.debug('WEB2PY CRON: Releasing cron lock') logger.debug('WEB2PY CRON: Releasing cron lock')
self.master.seek(0) self.master.seek(0)
(start, stop) = cPickle.load(self.master) (start, stop) = pickle.load(self.master)
if start == self.now: # if this is my lock if start == self.now: # if this is my lock
self.master.seek(0) self.master.seek(0)
cPickle.dump((self.now, time.time()), self.master) pickle.dump((self.now, time.time()), self.master)
portalocker.unlock(self.master) portalocker.unlock(self.master)
self.master.close() self.master.close()
+8 -5
View File
@@ -11,7 +11,10 @@ Restricted environment to execute application's code
""" """
import sys import sys
import cPickle try:
import cPickle as pickle
except:
import pickle
import traceback import traceback
import types import types
import os import os
@@ -55,7 +58,7 @@ class TicketStorage(Storage):
try: try:
table = self._get_table(self.db, self.tablename, request.application) table = self._get_table(self.db, self.tablename, request.application)
table.insert(ticket_id=ticket_id, table.insert(ticket_id=ticket_id,
ticket_data=cPickle.dumps(ticket_data), ticket_data=pickle.dumps(ticket_data, pickle.HIGHEST_PROTOCOL),
created_datetime=request.now) created_datetime=request.now)
self.db.commit() self.db.commit()
message = 'In FILE: %(layer)s\n\n%(traceback)s\n' message = 'In FILE: %(layer)s\n\n%(traceback)s\n'
@@ -68,7 +71,7 @@ class TicketStorage(Storage):
def _store_on_disk(self, request, ticket_id, ticket_data): def _store_on_disk(self, request, ticket_id, ticket_data):
ef = self._error_file(request, ticket_id, 'wb') ef = self._error_file(request, ticket_id, 'wb')
try: try:
cPickle.dump(ticket_data, ef) pickle.dump(ticket_data, ef)
finally: finally:
ef.close() ef.close()
@@ -103,13 +106,13 @@ class TicketStorage(Storage):
except IOError: except IOError:
return {} return {}
try: try:
return cPickle.load(ef) return pickle.load(ef)
finally: finally:
ef.close() ef.close()
else: else:
table = self._get_table(self.db, self.tablename, app) table = self._get_table(self.db, self.tablename, app)
rows = self.db(table.ticket_id == ticket_id).select() rows = self.db(table.ticket_id == ticket_id).select()
return cPickle.loads(rows[0].ticket_data) if rows else {} return pickle.loads(rows[0].ticket_data) if rows else {}
class RestrictedError(Exception): class RestrictedError(Exception):
+6 -3
View File
@@ -12,7 +12,10 @@ Provides:
- Storage; like dictionary allowing also for `obj.foo` for `obj['foo']` - Storage; like dictionary allowing also for `obj.foo` for `obj['foo']`
""" """
import cPickle try:
import cPickle as pickle
except:
import pickle
import copy_reg import copy_reg
import gluon.portalocker as portalocker import gluon.portalocker as portalocker
@@ -159,7 +162,7 @@ def load_storage(filename):
fp = None fp = None
try: try:
fp = portalocker.LockedFile(filename, 'rb') fp = portalocker.LockedFile(filename, 'rb')
storage = cPickle.load(fp) storage = pickle.load(fp)
finally: finally:
if fp: if fp:
fp.close() fp.close()
@@ -170,7 +173,7 @@ def save_storage(storage, filename):
fp = None fp = None
try: try:
fp = portalocker.LockedFile(filename, 'wb') fp = portalocker.LockedFile(filename, 'wb')
cPickle.dump(dict(storage), fp) pickle.dump(dict(storage), fp)
finally: finally:
if fp: if fp:
fp.close() fp.close()
+6 -3
View File
@@ -11,7 +11,10 @@ Auth, Mail, PluginManager and various utilities
""" """
import base64 import base64
import cPickle try:
import cPickle as pickle
except:
import pickle
import datetime import datetime
import thread import thread
import logging import logging
@@ -3327,7 +3330,7 @@ class Auth(object):
user = table_user(user_id) user = table_user(user_id)
if not user: if not user:
raise HTTP(401, "Not Authorized") raise HTTP(401, "Not Authorized")
auth.impersonator = cPickle.dumps(session) auth.impersonator = pickle.dumps(session, pickle.HIGHEST_PROTOCOL)
auth.user.update( auth.user.update(
table_user._filter_fields(user, True)) table_user._filter_fields(user, True))
self.user = auth.user self.user = auth.user
@@ -3338,7 +3341,7 @@ class Auth(object):
elif user_id in (0, '0'): elif user_id in (0, '0'):
if self.is_impersonating(): if self.is_impersonating():
session.clear() session.clear()
session.update(cPickle.loads(auth.impersonator)) session.update(pickle.loads(auth.impersonator))
self.user = session.auth.user self.user = session.auth.user
self.update_groups() self.update_groups()
self.run_login_onaccept() self.run_login_onaccept()
+1 -2
View File
@@ -23,7 +23,6 @@ import logging
import socket import socket
import base64 import base64
import zlib import zlib
import types
_struct_2_long_long = struct.Struct('=QQ') _struct_2_long_long = struct.Struct('=QQ')
@@ -160,7 +159,7 @@ def pad(s, n=32, padchar=' '):
def secure_dumps(data, encryption_key, hash_key=None, compression_level=None): def secure_dumps(data, encryption_key, hash_key=None, compression_level=None):
if not hash_key: if not hash_key:
hash_key = sha1(encryption_key).hexdigest() hash_key = sha1(encryption_key).hexdigest()
dump = pickle.dumps(data) dump = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
if compression_level: if compression_level:
dump = zlib.compress(dump, compression_level) dump = zlib.compress(dump, compression_level)
key = pad(encryption_key[:32]) key = pad(encryption_key[:32])