Browse Source

[beeswax] Install samples should not fail silently

Romain Rigaux 12 years ago
parent
commit
f473411

+ 14 - 12
apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py

@@ -46,16 +46,23 @@ class Command(NoArgsCommand):
   Install examples but do not overwrite them.
   Install examples but do not overwrite them.
   """
   """
   def handle_noargs(self, **options):
   def handle_noargs(self, **options):
-    """Main entry point to install or re-install examples. May raise InstallException"""
+    exception = None
+
     try:
     try:
       user = install_sample_user()
       user = install_sample_user()
       self._install_tables(user, options['app_name'])
       self._install_tables(user, options['app_name'])
+    except Exception, ex:
+      exception = ex
+
+    try:
       self._install_queries(user, options['app_name'])
       self._install_queries(user, options['app_name'])
     except Exception, ex:
     except Exception, ex:
-      LOG.exception(ex)
-      raise InstallException(ex)
-    finally:
-      Document.objects.sync()
+      exception = ex
+
+    Document.objects.sync()
+
+    if exception is not None:
+      raise exception
 
 
   def _install_tables(self, django_user, app_name):
   def _install_tables(self, django_user, app_name):
     data_dir = beeswax.conf.LOCAL_EXAMPLES_DATA_DIR.get()
     data_dir = beeswax.conf.LOCAL_EXAMPLES_DATA_DIR.get()
@@ -68,8 +75,7 @@ class Command(NoArgsCommand):
       try:
       try:
         table.install(django_user)
         table.install(django_user)
       except Exception, ex:
       except Exception, ex:
-        LOG.exception(ex)
-        LOG.error('Could not install table: %s' % (ex,))
+        raise InstallException(_('Could not install table: %s') % ex)
 
 
   def _install_queries(self, django_user, app_name):
   def _install_queries(self, django_user, app_name):
     design_file = file(os.path.join(beeswax.conf.LOCAL_EXAMPLES_DATA_DIR.get(), 'designs.json'))
     design_file = file(os.path.join(beeswax.conf.LOCAL_EXAMPLES_DATA_DIR.get(), 'designs.json'))
@@ -83,8 +89,7 @@ class Command(NoArgsCommand):
       try:
       try:
         design.install(django_user)
         design.install(django_user)
       except Exception, ex:
       except Exception, ex:
-        LOG.exception(ex)
-        LOG.error('Could not install query: %s' % (ex,))
+        raise InstallException(_('Could not install query: %s') % ex)
 
 
 
 
 class SampleTable(object):
 class SampleTable(object):
@@ -175,9 +180,6 @@ class SampleDesign(object):
     try:
     try:
       # Don't overwrite
       # Don't overwrite
       model = SavedQuery.objects.get(owner=django_user, name=self.name, type=self.type)
       model = SavedQuery.objects.get(owner=django_user, name=self.name, type=self.type)
-      msg = _('Sample design %(name)s already exists.') % {'name': self.name}
-      LOG.error(msg)
-      raise InstallException(msg)
     except SavedQuery.DoesNotExist:
     except SavedQuery.DoesNotExist:
       model = SavedQuery(owner=django_user, name=self.name)
       model = SavedQuery(owner=django_user, name=self.name)
       model.type = self.type
       model.type = self.type

+ 1 - 1
apps/beeswax/src/beeswax/views.py

@@ -823,7 +823,7 @@ def install_examples(request):
     try:
     try:
       app_name = get_app_name(request)
       app_name = get_app_name(request)
       beeswax.management.commands.beeswax_install_examples.Command().handle_noargs(app_name=app_name)
       beeswax.management.commands.beeswax_install_examples.Command().handle_noargs(app_name=app_name)
-      response['status'] = 0 # Always return 0 currently
+      response['status'] = 0
     except Exception, err:
     except Exception, err:
       LOG.exception(err)
       LOG.exception(err)
       response['message'] = str(err)
       response['message'] = str(err)