--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/pyramid/config.py Thu Mar 09 16:36:33 2017 +0100
@@ -0,0 +1,64 @@
+# copyright 2017 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.
+"""Configuration for CubicWeb instances on top of a Pyramid application"""
+
+from os import path
+import random
+import string
+
+from logilab.common.configuration import merge_options
+
+from cubicweb.cwconfig import CONFIGURATIONS
+from cubicweb.server.serverconfig import ServerConfiguration
+from cubicweb.toolsutils import fill_templated_file
+from cubicweb.web.webconfig import BaseWebConfiguration
+
+
+def get_random_secret_key():
+ """Return 50-character secret string"""
+ chars = string.ascii_letters + string.digits
+ return "".join([random.choice(chars) for i in range(50)])
+
+
+class CubicWebPyramidConfiguration(BaseWebConfiguration, ServerConfiguration):
+ """Pyramid application with a CubicWeb repository"""
+ name = 'pyramid'
+
+ cubicweb_appobject_path = (BaseWebConfiguration.cubicweb_appobject_path
+ | ServerConfiguration.cubicweb_appobject_path)
+ cube_appobject_path = (BaseWebConfiguration.cube_appobject_path
+ | ServerConfiguration.cube_appobject_path)
+
+ options = merge_options(ServerConfiguration.options +
+ BaseWebConfiguration.options)
+
+ def write_development_ini(self, cubes):
+ """Write a 'development.ini' file into apphome."""
+ template_fpath = path.join(path.dirname(__file__), 'development.ini.tmpl')
+ target_fpath = path.join(self.apphome, 'development.ini')
+ context = {
+ 'instance': self.appid,
+ 'cubename': cubes[0],
+ 'session-secret': get_random_secret_key(),
+ 'auth-authtkt-persistent-secret': get_random_secret_key(),
+ 'auth-authtkt-session-secret': get_random_secret_key(),
+ }
+ fill_templated_file(template_fpath, target_fpath, context)
+
+
+CONFIGURATIONS.append(CubicWebPyramidConfiguration)