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)
"""
import time
import shutil
import thread
import os
import sys
-4
View File
@@ -1,12 +1,8 @@
# fix response
import re
import os
import cPickle
import gluon.serializers
from gluon import current, HTTP
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.sanitizer import sanitize
from gluon.contrib.markmin.markmin2latex import markmin2latex
+5 -2
View File
@@ -6,7 +6,10 @@ import redis
from redis.exceptions import ConnectionError
from gluon import current
from gluon.cache import CacheAbstract
import cPickle as pickle
try:
import cPickle as pickle
except:
import pickle
import time
import re
import logging
@@ -165,7 +168,7 @@ class RedisClient(object):
expireat = int(time.time() + time_expire) + 120
bucket_key = "%s:%s" % (cache_set_key, expireat / 60)
value = f()
value_ = pickle.dumps(value)
value_ = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
if time_expire == 0:
time_expire = 1
self.r_server.setex(key, value_, time_expire)
-3
View File
@@ -3,12 +3,9 @@ Developed by niphlod@gmail.com
"""
import redis
from redis.exceptions import ConnectionError
from gluon import current
from gluon.storage import Storage
import cPickle as pickle
import time
import re
import logging
import thread
+8 -5
View File
@@ -21,7 +21,10 @@ import sanitizer
import itertools
import decoder
import copy_reg
import cPickle
try:
import cPickle as pickle
except:
import pickle
import marshal
from HTMLParser import HTMLParser
@@ -1242,13 +1245,13 @@ class CAT(DIV):
def TAG_unpickler(data):
return cPickle.loads(data)
return pickle.loads(data)
def TAG_pickler(data):
d = DIV()
d.__dict__ = data.__dict__
marshal_dump = cPickle.dumps(d)
marshal_dump = pickle.dumps(d, pickle.HIGHEST_PROTOCOL)
return (TAG_unpickler, (marshal_dump,))
@@ -2828,12 +2831,12 @@ class MARKMIN(XmlComponent):
return self.xml()
def ASSIGNJS(**kargs):
from serializers import json
from gluon.serializers import json
s = ""
for key, value in kargs.items():
s+='var %s = %s;\n' % (key, json(value))
return XML(s)
if __name__ == '__main__':
import doctest
+8 -5
View File
@@ -21,7 +21,10 @@ import datetime
import platform
import portalocker
import fileutils
import cPickle
try:
import cPickle as pickle
except:
import pickle
from gluon.settings import global_settings
logger = logging.getLogger("web2py.cron")
@@ -139,7 +142,7 @@ class Token(object):
ret = None
portalocker.lock(self.master, portalocker.LOCK_EX)
try:
(start, stop) = cPickle.load(self.master)
(start, stop) = pickle.load(self.master)
except:
(start, stop) = (0, 1)
if startup or self.now - start > locktime:
@@ -149,7 +152,7 @@ class Token(object):
logger.warning('WEB2PY CRON: Stale cron.master detected')
logger.debug('WEB2PY CRON: Acquiring lock')
self.master.seek(0)
cPickle.dump((self.now, 0), self.master)
pickle.dump((self.now, 0), self.master)
self.master.flush()
finally:
portalocker.unlock(self.master)
@@ -166,10 +169,10 @@ class Token(object):
portalocker.lock(self.master, portalocker.LOCK_EX)
logger.debug('WEB2PY CRON: Releasing cron lock')
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
self.master.seek(0)
cPickle.dump((self.now, time.time()), self.master)
pickle.dump((self.now, time.time()), self.master)
portalocker.unlock(self.master)
self.master.close()
+8 -5
View File
@@ -11,7 +11,10 @@ Restricted environment to execute application's code
"""
import sys
import cPickle
try:
import cPickle as pickle
except:
import pickle
import traceback
import types
import os
@@ -55,7 +58,7 @@ class TicketStorage(Storage):
try:
table = self._get_table(self.db, self.tablename, request.application)
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)
self.db.commit()
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):
ef = self._error_file(request, ticket_id, 'wb')
try:
cPickle.dump(ticket_data, ef)
pickle.dump(ticket_data, ef)
finally:
ef.close()
@@ -103,13 +106,13 @@ class TicketStorage(Storage):
except IOError:
return {}
try:
return cPickle.load(ef)
return pickle.load(ef)
finally:
ef.close()
else:
table = self._get_table(self.db, self.tablename, app)
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):
+6 -3
View File
@@ -12,7 +12,10 @@ Provides:
- 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 gluon.portalocker as portalocker
@@ -159,7 +162,7 @@ def load_storage(filename):
fp = None
try:
fp = portalocker.LockedFile(filename, 'rb')
storage = cPickle.load(fp)
storage = pickle.load(fp)
finally:
if fp:
fp.close()
@@ -170,7 +173,7 @@ def save_storage(storage, filename):
fp = None
try:
fp = portalocker.LockedFile(filename, 'wb')
cPickle.dump(dict(storage), fp)
pickle.dump(dict(storage), fp)
finally:
if fp:
fp.close()
+6 -3
View File
@@ -11,7 +11,10 @@ Auth, Mail, PluginManager and various utilities
"""
import base64
import cPickle
try:
import cPickle as pickle
except:
import pickle
import datetime
import thread
import logging
@@ -3327,7 +3330,7 @@ class Auth(object):
user = table_user(user_id)
if not user:
raise HTTP(401, "Not Authorized")
auth.impersonator = cPickle.dumps(session)
auth.impersonator = pickle.dumps(session, pickle.HIGHEST_PROTOCOL)
auth.user.update(
table_user._filter_fields(user, True))
self.user = auth.user
@@ -3338,7 +3341,7 @@ class Auth(object):
elif user_id in (0, '0'):
if self.is_impersonating():
session.clear()
session.update(cPickle.loads(auth.impersonator))
session.update(pickle.loads(auth.impersonator))
self.user = session.auth.user
self.update_groups()
self.run_login_onaccept()
+1 -2
View File
@@ -23,7 +23,6 @@ import logging
import socket
import base64
import zlib
import types
_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):
if not hash_key:
hash_key = sha1(encryption_key).hexdigest()
dump = pickle.dumps(data)
dump = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
if compression_level:
dump = zlib.compress(dump, compression_level)
key = pad(encryption_key[:32])