Added rudimentary route "mounting" w/ werkzeug routes; fixed auth routes
[mediagoblin.git] / mediagoblin / gmg_commands / import_export.py
index 5d39304aa6f52ca1807f86a9bcac81da71e67cb7..72ebd8a8b5b44b3338734dfaf83ad20d95f4644b 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
 
 from mediagoblin import mg_globals
 from mediagoblin.db.open import setup_connection_and_db_from_config
-from mediagoblin.init.config import read_mediagoblin_config
 from mediagoblin.storage.filestorage import BasicFileStorage
 from mediagoblin.init import setup_storage, setup_global_and_app_config
-from mediagoblin.gmg_commands.util import option_add_conffile
 
 import shutil
 import tarfile
@@ -40,7 +38,6 @@ def import_export_parse_setup(subparser):
     # TODO: Add default
     subparser.add_argument(
         'tar_file')
-    option_add_conffile(subparser)
     subparser.add_argument(
         '--mongodump_path', default='mongodump',
         help='mongodump binary')
@@ -64,13 +61,12 @@ def _import_media(db, args):
         args._cache_path['media'])
 
     # TODO: Add import of queue files
-    queue_cache = BasicFileStorage(
-        args._cache_path['queue'])
+    queue_cache = BasicFileStorage(args._cache_path['queue'])
 
-    for entry in db.media_entries.find():
-        for name, path in entry['media_files'].items():
+    for entry in db.MediaEntry.find():
+        for name, path in entry.media_files.items():
             _log.info('Importing: {0} - {1}'.format(
-                    entry['title'],
+                    entry.title.encode('ascii', 'replace'),
                     name))
 
             media_file = mg_globals.public_store.get_file(path, mode='wb')
@@ -90,7 +86,7 @@ def _import_database(db, args):
             args.mongorestore_path,
             '-d', db.name,
             os.path.join(args._cache_path['database'], db.name)])
-    
+
     p.wait()
 
     _log.info('...Database imported')
@@ -110,7 +106,7 @@ def env_import(args):
 
     global_config, app_config = setup_global_and_app_config(args.conf_file)
     connection, db = setup_connection_and_db_from_config(
-        app_config, use_pymongo=True)
+        app_config)
 
     tf = tarfile.open(
         args.tar_file,
@@ -206,18 +202,19 @@ def _export_media(db, args):
         args._cache_path['media'])
 
     # TODO: Add export of queue files
-    queue_cache = BasicFileStorage(
-        args._cache_path['queue'])
+    queue_cache = BasicFileStorage(args._cache_path['queue'])
 
-    for entry in db.media_entries.find():
-        for name, path in entry['media_files'].items():
-            _log.info('Exporting {0} - {1}'.format(
-                    entry['title'],
+    for entry in db.MediaEntry.find():
+        for name, path in entry.media_files.items():
+            _log.info(u'Exporting {0} - {1}'.format(
+                    entry.title,
                     name))
-
-            mc_file = media_cache.get_file(path, mode='wb')
-            mc_file.write(
-                mg_globals.public_store.get_file(path, mode='rb').read())
+            try:
+                mc_file = media_cache.get_file(path, mode='wb')
+                mc_file.write(
+                    mg_globals.public_store.get_file(path, mode='rb').read())
+            except Exception as e:
+                _log.error('Failed: {0}'.format(e))
 
     _log.info('...Media exported')
 
@@ -228,7 +225,8 @@ def env_export(args):
     '''
     if args.cache_path:
         if os.path.exists(args.cache_path):
-            _log.error('The cache directory must not exist before you run this script')
+            _log.error('The cache directory must not exist '
+                       'before you run this script')
             _log.error('Cache directory: {0}'.format(args.cache_path))
 
             return False
@@ -244,9 +242,9 @@ def env_export(args):
     globa_config, app_config = setup_global_and_app_config(args.conf_file)
 
     setup_storage()
-    
+
     connection, db = setup_connection_and_db_from_config(
-        app_config, use_pymongo=True)
+        app_config)
 
     _export_database(db, args)