refactored pickle everywhere but Session, removed unused imports
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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])
|
||||||
|
|||||||
Reference in New Issue
Block a user