Feature #298
[mediagoblin.git] / mediagoblin / gmg_commands / __init__.py
index 04e2ab6c593dc9ca44b8806de15275fef3603dd1..8226fd0e6f2e54ec7a356cc635dd7235c32540a6 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import code
 import argparse
-import os
 
-from paste.deploy.loadwsgi import NicerConfigParser
-
-from mediagoblin.celery_setup import setup_celery_from_config
-from mediagoblin import app, util
-from mediagoblin import globals as mgoblin_globals
+from mediagoblin import util as mg_util
 
 
 SUBCOMMAND_MAP = {
     'shell': {
-        'setup': 'mediagoblin.gmg_commands:shell_parser_setup',
-        'func': 'mediagoblin.gmg_commands:shell',
+        'setup': 'mediagoblin.gmg_commands.shell:shell_parser_setup',
+        'func': 'mediagoblin.gmg_commands.shell:shell',
         'help': 'Run a shell with some tools pre-setup'},
+    'migrate': {
+        'setup': 'mediagoblin.gmg_commands.migrate:migrate_parser_setup',
+        'func': 'mediagoblin.gmg_commands.migrate:migrate',
+        'help': 'Apply all unapplied bulk migrations to the database'},
+    'adduser':{
+        'setup': 'mediagoblin.gmg_commands.users:adduser_parser_setup',
+        'func': 'mediagoblin.gmg_commands.users:adduser',
+        'help': 'Creates an user'},
+    'makeadmin': {
+        'setup': 'mediagoblin.gmg_commands.users:makeadmin_parser_setup',
+        'func': 'mediagoblin.gmg_commands.users:makeadmin',
+        'help': 'Changes a user\'s password'},
+    'changepw': {
+        'setup': 'mediagoblin.gmg_commands.users:changepw_parser_setup',
+        'func': 'mediagoblin.gmg_commands.users:changepw',
+        'help': 'Makes admin an user'},
+    'wipealldata': {
+        'setup': 'mediagoblin.gmg_commands.wipealldata:wipe_parser_setup',
+        'func': 'mediagoblin.gmg_commands.wipealldata:wipe',
+        'help': 'Wipes **all** the data for this MediaGoblin instance'},
+    'env_export': {
+        'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
+        'func': 'mediagoblin.gmg_commands.import_export:env_export',
+        'help': 'Exports the data for this MediaGoblin instance'},
+    'env_import': {
+        'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
+        'func': 'mediagoblin.gmg_commands.import_export:env_import',
+        'help': 'Exports the data for this MediaGoblin instance'},
     }
 
 
-def shell_parser_setup(subparser):
-    subparser.add_argument(
-        '-cf', '--conf_file', default='mediagoblin.ini',
-        help="Config file used to set up environment")
-    subparser.add_argument(
-        '-cs', '--app_section', default='app:mediagoblin',
-        help="Section of the config file where the app config is stored.")
-
-
-SHELL_BANNER = """\
-GNU MediaGoblin shell!
-----------------------
-Available vars:
- - mgoblin_app: instantiated mediagoblin application
- - mgoblin_globals: mediagoblin.globals
- - db: database instance
-"""
-
-
-def shell(args):
-    """
-    """
-    # Duplicated from from_celery.py, remove when we have the generic util
-    parser = NicerConfigParser(args.conf_file)
-    parser.read(args.conf_file)
-    parser._defaults.setdefault(
-        'here', os.path.dirname(os.path.abspath(args.conf_file)))
-    parser._defaults.setdefault(
-        '__file__', os.path.abspath(args.conf_file))
-
-    mgoblin_section = dict(parser.items(args.app_section))
-    mgoblin_conf = dict(
-        [(section_name, dict(parser.items(section_name)))
-         for section_name in parser.sections()])
-
-    mgoblin_app = app.paste_app_factory(
-        mgoblin_conf, **mgoblin_section)
-
-    code.interact(
-        banner=SHELL_BANNER,
-        local={
-            'mgoblin_app': mgoblin_app,
-            'mgoblin_globals': mgoblin_globals,
-            'db': mgoblin_globals.database})
-    
-
 def main_cli():
     parser = argparse.ArgumentParser(
         description='GNU MediaGoblin utilities.')
@@ -91,8 +67,8 @@ def main_cli():
         else:
             subparser = subparsers.add_parser(command_name)
 
-        setup_func = util.import_component(command_struct['setup'])
-        exec_func = util.import_component(command_struct['func'])
+        setup_func = mg_util.import_component(command_struct['setup'])
+        exec_func = mg_util.import_component(command_struct['func'])
 
         setup_func(subparser)
 
@@ -104,3 +80,4 @@ def main_cli():
 
 if __name__ == '__main__':
     main_cli()
+