--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_media/include.py Wed Sep 02 15:31:55 2015 +0200
@@ -0,0 +1,78 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+import atexit
+import logging
+logger = logging.getLogger('PyAMS (media)')
+
+import sys
+
+# import interfaces
+from pyams_media.interfaces import CONVERTER_HANDLER_KEY, CONVERTER_NAME
+from pyams_utils.interfaces import PYAMS_APPLICATION_SETTINGS_KEY, PYAMS_APPLICATION_DEFAULT_NAME
+
+# import packages
+from pyams_media.process import MediaConversionProcess, MediaConversionMessageHandler
+from pyams_utils.registry import set_local_registry
+from pyams_utils.zodb import get_connection_from_settings
+from pyams_zmq.process import process_exit_func
+
+
+def include_package(config):
+ """Pyramid include"""
+
+ # add translations
+ config.add_translation_dirs('pyams_media:locales')
+
+ # load registry components
+ try:
+ import pyams_zmi
+ except ImportError:
+ config.scan(ignore='pyams_media.zmi')
+ else:
+ config.scan()
+
+ # check for upgrade mode
+ if sys.argv[0].endswith('pyams_upgrade'):
+ return
+
+ settings = config.registry.settings
+ start_handler = settings.get(CONVERTER_HANDLER_KEY, False)
+ if start_handler:
+ # get database connection
+ connection = get_connection_from_settings(settings)
+ root = connection.root()
+ # get application
+ application_name = settings.get(PYAMS_APPLICATION_SETTINGS_KEY, PYAMS_APPLICATION_DEFAULT_NAME)
+ application = root.get(application_name)
+ process = None
+ if application is not None:
+ sm = application.getSiteManager()
+ set_local_registry(sm)
+ try:
+ conversion_util = sm.get(CONVERTER_NAME)
+ if conversion_util is not None:
+ # create medias converter process
+ process = MediaConversionProcess(start_handler, MediaConversionMessageHandler, config.registry)
+ logger.debug('Starting medias conversion process {0!r}...'.format(process))
+ process.start()
+ if process.is_alive():
+ atexit.register(process_exit_func, process=process)
+ finally:
+ if process and not process.is_alive():
+ process.terminate()
+ process.join()
+ set_local_registry(None)