"""COMKit
This plug-in for WebKit for Python allows COM objects such as ADO to be
used in free-threading mode in a threaded app server. See Appendix D of
the fine book Python Programming on Win32 by Mark Hammond and Andy
Robinson for details.
To use COM, simply set EnableCOM to 1 in your AppServer.config file.
This causes the app server threads to be configured properly for
COM free-threading. Then go ahead and use win32com inside your servlets.
"""
__all__ = []
def InstallInWebKit(appServer):
if appServer.setting('EnableCOM', 0):
import sys
sys.coinit_flags = 0
import pythoncom
original_initThread = appServer.initThread
original_delThread = appServer.delThread
def new_initThread(self):
pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
original_initThread()
def new_delThread(self):
original_delThread()
pythoncom.CoUninitialize()
import new
appServer.initThread = new.instancemethod(new_initThread, appServer, appServer.__class__)
appServer.delThread = new.instancemethod(new_delThread, appServer, appServer.__class__)
print 'COM has been enabled.'