adm-ntuh-net/ntuh/dojango/util/dojo_collector.py
2024-12-12 10:19:16 +08:00

51 lines
1.2 KiB
Python
Executable file

from threading import local
__all__ = ['activate', 'deactivate', 'get_collector', 'add_module']
_active = local()
def activate():
"""
Activates a global accessible object, where we can save information about
required dojo modules.
"""
class Collector:
used_dojo_modules = []
def add(self, module):
# just add a module once!
if not module in self.used_dojo_modules:
self.used_dojo_modules.append(module)
_active.value = Collector()
def deactivate():
"""
Resets the currently active global object
"""
if hasattr(_active, "value"):
del _active.value
def get_collector():
"""Returns the currently active collector object."""
t = getattr(_active, "value", None)
if t is not None:
try:
return t
except AttributeError:
return None
return None
def get_modules():
collector = get_collector()
if collector is not None:
return collector.used_dojo_modules
return []
def add_module(module):
collector = get_collector()
if collector is not None:
collector.add(module)
# otherwise do nothing
pass