--- /dev/null
+# -*- coding: utf-8 -*-
+
+"""Load a specific dataset into the database."""
+
+from django.core import management
+from django.db import transaction
+from django.utils import importlib
+
+
+class Command(management.BaseCommand):
+ args = '<dataset_name dataset_name ...>'
+ help = 'Load a specific dataset into the database.'
+
+ def handle(self, *dataset_names, **options):
+ if not dataset_names:
+ raise ValueError("At least one dataset name must be provided.")
+ for name in dataset_names:
+ self.load(name, **options)
+
+ def load(self, dataset_name, **options):
+ """Loads a dataset."""
+ verbosity = options.get('verbosity', 0)
+ indent = options.pop('indent', '')
+
+ if verbosity > 0:
+ self.stdout.write(u'%sImporting dataset %s...\n' % (indent, dataset_name))
+
+ dataset = importlib.import_module('xnet.datasets.%s' % dataset_name)
+ setup = dataset.Setup(verbosity=verbosity)
+
+ # Handle required datasets
+ for required in setup.requires:
+ self.load(required, indent=indent + ' ', **options)
+
+ # Load the data
+ with transaction.commit_on_success():
+ setup.run()
+
+ if verbosity > 0:
+ self.stdout.write(u'%sDone.\n' % indent)