"""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
appServer._initCOM = pythoncom.COINIT_MULTITHREADED
appServer.initCOM = pythoncom.CoInitializeEx
appServer.closeCOM = pythoncom.CoUninitialize
appServer.originalInitThread = appServer.initThread
appServer.originalDelThread = appServer.delThread
def newInitThread(self):
self.initCOM(self._initCOM)
self.originalInitThread()
def newDelThread(self):
self.originalDelThread()
self.closeCOM()
import new
appServer.initThread = new.instancemethod(newInitThread, appServer, appServer.__class__)
appServer.delThread = new.instancemethod(newDelThread, appServer, appServer.__class__)
print 'COM has been enabled.'