changeset 1971:7ad25fc92ee4 gae

Added web interface for index operations
author Tarashish Mishra <sunu0000@gmail.com>
date Sun, 10 Feb 2013 22:12:48 +0530
parents 5281fec759b1
children a53c04dd16b6
files MoinMoin/script/__init__.py MoinMoin/templates/cli_index.html app.yaml cli_index.py moin.py
diffstat 5 files changed, 135 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/MoinMoin/script/__init__.py	Sat Feb 09 19:38:31 2013 +0100
+++ b/MoinMoin/script/__init__.py	Sun Feb 10 22:12:48 2013 +0530
@@ -1,5 +1,6 @@
 # Copyright: 2000-2002 Juergen Hermann <jh@web.de>
 # Copyright: 2006,2011 MoinMoin:ThomasWaldmann
+# Copyright: 2013 MoinMoin:TarashishMishra
 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
 
 """
@@ -9,6 +10,71 @@
 import sys
 
 
+def add_index_commands(manager):
+    from MoinMoin.script.maint import index
+    manager.add_command("index-create", index.IndexCreate())
+    manager.add_command("index-build", index.IndexBuild())
+    manager.add_command("index-update", index.IndexUpdate())
+    manager.add_command("index-destroy", index.IndexDestroy())
+    manager.add_command("index-move", index.IndexMove())
+    manager.add_command("index-optimize", index.IndexOptimize())
+    manager.add_command("index-dump", index.IndexDump())
+
+    manager.add_option('-i', '--index-create', action='store_true', dest='create_index', required=False, default=False)
+    manager.add_option('-s', '--storage-create', action='store_true', dest='create_storage', required=False, default=False)
+
+
+def add_serialization_commands(manager):
+    from MoinMoin.script.maint import serialization
+    manager.add_command("save", serialization.Serialize())
+    manager.add_command("load", serialization.Deserialize())
+
+
+def add_create_user_commands(manager):
+    from MoinMoin.script.account.create import Create_User
+    manager.add_command("account_create", Create_User())
+
+
+def add_disable_user_commands(manager):
+    from MoinMoin.script.account.disable import Disable_User
+    manager.add_command("account_disable", Disable_User())
+
+
+def add_set_password_commands(manager):
+    from MoinMoin.script.account.resetpw import Set_Password
+    manager.add_command("account_password", Set_Password())
+
+
+def add_reduce_revisions_commands(manager):
+    from MoinMoin.script.maint.reduce_revisions import Reduce_Revisions
+    manager.add_command("maint_reduce_revisions", Reduce_Revisions())
+
+
+def add_set_meta_commands(manager):
+    from MoinMoin.script.maint.set_meta import Set_Meta
+    manager.add_command("maint_set_meta", Set_Meta())
+
+
+def add_modify_item_commands(manager):
+    from MoinMoin.script.maint import modify_item
+    manager.add_command("item-get", modify_item.GetItem())
+    manager.add_command("item-put", modify_item.PutItem())
+
+
+def add_modified_system_items_commands(manager):
+    from MoinMoin.script.maint.modified_systemitems import Modified_SystemItems
+    manager.add_command("maint_modified_systemitems", Modified_SystemItems())
+
+
+def add_import_moin19_commands(manager):
+    from MoinMoin.script.migration.moin19.import19 import ImportMoin19
+    manager.add_command("import19", ImportMoin19())
+
+
+def add_moin_shell_commands(manager):
+    from MoinMoin.script.maint.moinshell import MoinShell
+    manager.add_command("shell", MoinShell())
+
 def main(default_command='moin', wiki_config=None):
     """
     console_script entry point
@@ -18,41 +84,19 @@
 
     manager = Manager(create_app)
     manager.add_option('-c', '--config', dest='config', required=False, default=wiki_config)
-    manager.add_option('-i', '--index-create', action='store_true', dest='create_index', required=False, default=False)
-    manager.add_option('-s', '--storage-create', action='store_true', dest='create_storage', required=False, default=False)
     manager.add_command("moin", Server(host='127.0.0.1', port=8080))
 
-    from MoinMoin.script.maint import index
-    manager.add_command("index-create", index.IndexCreate())
-    manager.add_command("index-build", index.IndexBuild())
-    manager.add_command("index-update", index.IndexUpdate())
-    manager.add_command("index-destroy", index.IndexDestroy())
-    manager.add_command("index-move", index.IndexMove())
-    manager.add_command("index-optimize", index.IndexOptimize())
-    manager.add_command("index-dump", index.IndexDump())
-    from MoinMoin.script.maint import serialization
-    manager.add_command("save", serialization.Serialize())
-    manager.add_command("load", serialization.Deserialize())
-    from MoinMoin.script.account.create import Create_User
-    manager.add_command("account-create", Create_User())
-    from MoinMoin.script.account.disable import Disable_User
-    manager.add_command("account-disable", Disable_User())
-    from MoinMoin.script.account.resetpw import Set_Password
-    manager.add_command("account-password", Set_Password())
-    from MoinMoin.script.maint.reduce_revisions import Reduce_Revisions
-    manager.add_command("maint-reduce-revisions", Reduce_Revisions())
-    from MoinMoin.script.maint.set_meta import Set_Meta
-    manager.add_command("maint-set-meta", Set_Meta())
-    from MoinMoin.script.maint import modify_item
-    manager.add_command("item-get", modify_item.GetItem())
-    manager.add_command("item-put", modify_item.PutItem())
-    from MoinMoin.script.maint.modified_systemitems import Modified_SystemItems
-    manager.add_command("maint-modified-systemitems", Modified_SystemItems())
-    from MoinMoin.script.migration.moin19.import19 import ImportMoin19
-    manager.add_command("import19", ImportMoin19())
-
-    from MoinMoin.script.maint.moinshell import MoinShell
-    manager.add_command("shell", MoinShell())
+    add_index_commands(manager)
+    add_serialization_commands(manager)
+    add_create_user_commands(manager)
+    add_disable_user_commands(manager)
+    add_set_password_commands(manager)
+    add_reduce_revisions_commands(manager)
+    add_set_meta_commands(manager)
+    add_modify_item_commands(manager)
+    add_modified_system_items_commands(manager)
+    add_import_moin19_commands(manager)
+    add_moin_shell_commands(manager)
 
     return manager.run(default_command=default_command)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/templates/cli_index.html	Sun Feb 10 22:12:48 2013 +0530
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<h1>{{ _("Index Storage Operation Commandline") }}</h1>
+<div class="moin-form">
+{{ _("Please enter the commad below") }}
+<form method="post" action="/%2Bcli/index">
+	<input type="text" name="command">
+	<input type="submit">
+</form>
+</div>
+</html>
--- a/app.yaml	Sat Feb 09 19:38:31 2013 +0100
+++ b/app.yaml	Sun Feb 10 22:12:48 2013 +0530
@@ -46,6 +46,10 @@
 - url: /static
   static_dir: MoinMoin/static
 
+- url: /%2Bcli/index
+  script: cli_index.app
+  login: admin
+
 - url: /.*
   script: moin.application
 
@@ -58,4 +62,3 @@
   version: latest
 - name: PIL
   version: latest
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cli_index.py	Sun Feb 10 22:12:48 2013 +0530
@@ -0,0 +1,33 @@
+# Copyright: 2013 MoinMoin:TarashishMishra
+# License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
+
+"""
+MoinMoin - Provide a web interface for index operations
+
+"""
+
+
+from moin import add_support_to_path
+add_support_to_path()
+
+from flask import render_template, request, redirect
+from flask.ext.script import Manager
+
+# Create the WSGI application object.
+from MoinMoin.app import create_app
+app = create_app()
+
+
+@app.route('/+cli/index', methods=['POST', 'GET'])
+def admin():
+    if request.method == 'POST':
+        command_list = request.form['command'].split()
+        from MoinMoin.script import add_index_commands
+        manager = Manager(create_app)
+        add_index_commands(manager)
+        try:
+            manager.handle('moin', command_list[1], command_list[2:])
+        except SystemExit:
+            return "Invalid Command"
+        return redirect('/')
+    return render_template('cli_index.html')
--- a/moin.py	Sat Feb 09 19:38:31 2013 +0100
+++ b/moin.py	Sun Feb 10 22:12:48 2013 +0530
@@ -6,12 +6,19 @@
 called from this module.
 """
 
+
 import os
 import sys
 
-support_path = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'support'))
-if support_path not in sys.path:
-    sys.path.insert(0, support_path)
+
+def add_support_to_path():
+    support_path = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'support'))
+    if support_path not in sys.path:
+        sys.path.insert(0, support_path)
+
+
+add_support_to_path()
+
 server_sw = os.environ.get('SERVER_SOFTWARE', '')
 gae = server_sw.startswith('Development') or server_sw.startswith('Google')