blob: 7df4f34f4a05a0c2fff9291279de328e559ece87 (
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
34
35
36
37
38
39
|
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)
def setManager(new_manager): # for unit tests
global manager
old_manager = manager
manager = new_manager
return old_manager
|