Commits

Thomas Waldmann committed a342258

use env variable MOINCFG in app.yaml for point to wiki config

this simplifies appengine_main.py so it doesn't need editing by the admin

revert wikiconfig.py to the filesystem version, use wikiconfig_gae.py for
the gae version.

Comments (0)

Files changed (4)

 api_version: 1
 threadsafe: true
 
+env_variables:
+  MOINCFG: ../wikiconfig_gae.py
+
 handlers:
 - url: /.*
   script: appengine_main.application

appengine_main.py

 import os
 import sys
 
-# Configuration constants.
-wiki_config = 'wikiconfig.py'
-
 # Tweak sys.path.
 support_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'support'))
 if support_path not in sys.path:
 create_index = DatastoreFile.all().get() is None
 
 # Create the WSGI application object.
-application = create_app(os.path.abspath(wiki_config), create_index)
+application = create_app(create_index=create_index)
     # If that's not true, feel free to adjust the pathes.
     instance_dir = os.path.join(wikiconfig_dir, 'wiki')
     data_dir = os.path.join(instance_dir, 'data') # Note: this used to have a trailing / in the past
-    index_storage = 'DatastoreStorage', (), {}
+    index_storage = 'FileStorage', (os.path.join(instance_dir, "index"), ), {}
 
     # This provides a simple default setup for your backend configuration.
     # 'stores:fs:...' indicates that you want to use the filesystem backend.
     namespace_mapping, acl_mapping = create_simple_mapping(
-                            uri='stores:gae:/%(nsname)s/%(kind)s',
+                            uri='stores:fs:{0}/%(nsname)s/%(kind)s'.format(data_dir),
                             # XXX we use rather relaxed ACLs for the development wiki:
                             content_acl=dict(before=u'',
                                              default=u'All:read,write,create,destroy,admin',

wikiconfig_gae.py

+# -*- coding: utf-8 -*-
+"""
+MoinMoin Wiki - Configuration
+
+Developers can use this configuration to run moin right from their mercurial workdir.
+"""
+
+import os
+
+from MoinMoin.config.default import DefaultConfig
+from MoinMoin.storage import create_simple_mapping
+from MoinMoin.util.interwiki import InterWikiMap
+
+
+class Config(DefaultConfig):
+    # Directory containing THIS wikiconfig:
+    wikiconfig_dir = os.path.abspath(os.path.dirname(__file__))
+    # We assume this structure for a simple "unpack and run" scenario:
+    # wikiconfig.py
+    # wiki/
+    #      data/
+    #      index/
+    # contrib/
+    #      interwiki/
+    #          intermap.txt
+    # If that's not true, feel free to adjust the pathes.
+    instance_dir = os.path.join(wikiconfig_dir, 'wiki')
+    data_dir = os.path.join(instance_dir, 'data') # Note: this used to have a trailing / in the past
+    index_storage = 'DatastoreStorage', (), {}
+
+    # This provides a simple default setup for your backend configuration.
+    # 'stores:fs:...' indicates that you want to use the filesystem backend.
+    namespace_mapping, acl_mapping = create_simple_mapping(
+                            uri='stores:gae:/%(nsname)s/%(kind)s',
+                            # XXX we use rather relaxed ACLs for the development wiki:
+                            content_acl=dict(before=u'',
+                                             default=u'All:read,write,create,destroy,admin',
+                                             after=u'',
+                                             hierarchic=False, ),
+                            user_profile_acl=dict(before=u'',
+                                                  default=u'All:read,write,create,destroy,admin',
+                                                  after=u'',
+                                                  hierarchic=False, ),
+                            )
+
+    #item_root = u'Home' # front page
+
+    # for display purposes:
+    sitename = u'My MoinMoin'
+    # it is required that you set this to a unique, stable and non-empty name:
+    interwikiname = u'MyMoinMoin'
+    # Load the interwiki map from intermap.txt:
+    interwiki_map = InterWikiMap.from_file(os.path.join(wikiconfig_dir, 'contrib', 'interwiki', 'intermap.txt')).iwmap
+    # we must add entries for 'Self' and our interwikiname:
+    interwiki_map[interwikiname] = 'http://127.0.0.1:8080/'
+    interwiki_map['Self'] = 'http://127.0.0.1:8080/'
+
+    # setup static files' serving:
+    serve_files = dict(
+        docs=os.path.join(wikiconfig_dir, 'docs', '_build', 'html'),  # html docs made by sphinx
+    )
+    # see https://bitbucket.org/thomaswaldmann/xstatic for infos about xstatic:
+    from xstatic.main import XStatic
+    mod_names = ['jquery', 'jquery_file_upload',
+                 'ckeditor',
+                 'svgweb',
+                 'svgedit_moin', 'twikidraw_moin', 'anywikidraw',
+                ]
+    pkg = __import__('xstatic.pkg', fromlist=mod_names)
+    for mod_name in mod_names:
+        mod = getattr(pkg, mod_name)
+        xs = XStatic(mod, root_url='/static', provider='local', protocol='http')
+        serve_files.update([(xs.name, xs.base_dir)])
+
+
+MOINCFG = Config # Flask only likes uppercase stuff
+# Flask settings - see the flask documentation about their meaning
+SECRET_KEY = 'you need to change this so it is really secret'
+#DEBUG = False # use True for development only, not for public sites!
+#TESTING = False
+#SESSION_COOKIE_NAME = 'session'
+#PERMANENT_SESSION_LIFETIME = timedelta(days=31)
+#USE_X_SENDFILE = False
+#LOGGER_NAME = 'MoinMoin'
+#config for flask-cache:
+#CACHE_TYPE = 'filesystem'
+#CACHE_DIR = '/path/to/flask-cache-dir'
+
+# DEVELOPERS! Do not add your configuration items here - you could accidentally
+# commit them! Instead, create a wikiconfig_local.py file containing this:
+#
+#from wikiconfig_editme import *
+#
+# In wikiconfig_editme.py (the indirection is needed so that the auto reload
+# mechanism of the builtin server works) you do this:
+#
+#from wikiconfig import *
+#
+#class LocalConfig(Config):
+#    configuration_item_1 = 'value1'
+#
+#MOINCFG = LocalConfig
+#DEBUG = True
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.