# KidKit # Webware for Python def InstallInWebKit(appServer): app = appServer.application() from WebKit.PlugIn import PlugInError try: try: from KidKit.Properties import requiredSoftware except ImportError: raise PlugInError, 'Cannot determine required software.' for soft in requiredSoftware: if soft['name'] == 'kid': requiredKidVersion = soft['version'] break else: raise PlugInError, 'Cannot determine required Kid version.' try: import kid except ImportError: raise PlugInError, \ 'Cannot import Kid. This needs to be installed to use KidKit.' try: kidVersion = tuple(map(lambda s: int('0' + ''.join(filter(lambda c: c.isdigit(), s))), kid.__version__.split('.', 3)[:3])) except ImportError: raise PlugInError, 'Cannot determine Kid version.' if kidVersion < requiredKidVersion: raise PlugInError, \ 'KidKit needs at least Kid version %s (installed is %s).' \ % ('.'.join(map(str, requiredKidVersion)), '.'.join(map(str, kidVersion))) try: from KidServletFactory import KidServletFactory app.addServletFactory(KidServletFactory(app)) except: from traceback import print_exc print_exc() raise PlugInError, 'Cannot install Kid servlet factory.' except PlugInError, e: print e print "KidKit will not be loaded, '.kid' extension will be ignored." # We need to disable the '.kid' extension because otherwise the kid # templates would be delivered as ordinary files (security problem). e = app.setting('ExtensionsToIgnore', []) if '.kid' not in e: e.append('.kid') app.setSetting('ExtensionsToIgnore', e) e = app.setting('FilesToHide', []) if '*.kid' not in e: e.append('*.kid') app.setSetting('FilesToHide', e) from WebKit.URLParser import initParser initParser(app)