blob: 613ea4b65d2ab78b81d64e051b89181ec682286c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import threading
from zope.component import getGlobalSiteManager
class ThreadLocalManager(threading.local):
def __init__(self, default):
self.stack = []
self.default = default
def push(self, info):
self.stack.append(info)
set = push # b/c
def pop(self):
if self.stack:
return self.stack.pop()
def get(self):
try:
return self.stack[-1]
except IndexError:
return self.default()
def clear(self):
self.stack[:] = []
def defaults():
defaults = {'request':None}
gsm = getGlobalSiteManager()
defaults['registry'] = gsm
return defaults
manager = ThreadLocalManager(defaults)
|