Просмотр исходного кода

HUE-5219 [core] Deleted examples can not be re-installed

Jenny Kim 9 лет назад
Родитель
Сommit
d18fec94d9

+ 15 - 13
apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py

@@ -312,9 +312,21 @@ class SampleQuery(object):
       LOG.info('Successfully installed sample design: %s' % (self.name,))
 
     if USE_NEW_EDITOR.get():
+      # Get or create sample user directories
+      home_dir = Directory.objects.get_home_directory(django_user)
+      examples_dir, created = Directory.objects.get_or_create(
+        parent_directory=home_dir,
+        owner=django_user,
+        name=Document2.EXAMPLES_DIR
+      )
+
       try:
         # Don't overwrite
         doc2 = Document2.objects.get(owner=django_user, name=self.name, type=self._document_type(self.type))
+        # If document exists but has been trashed, recover from Trash
+        if doc2.parent_directory != examples_dir:
+          doc2.parent_directory = examples_dir
+          doc2.save()
       except Document2.DoesNotExist:
         # Create document from saved query
         notebook = import_saved_beeswax_query(query)
@@ -323,14 +335,6 @@ class SampleQuery(object):
         uuid = data.get('uuid')
         data = json.dumps(data)
 
-        # Get or create sample user directories
-        home_dir = Directory.objects.get_home_directory(django_user)
-        examples_dir, created = Directory.objects.get_or_create(
-          parent_directory=home_dir,
-          owner=django_user,
-          name=Document2.EXAMPLES_DIR
-        )
-
         doc2 = Document2.objects.create(
           uuid=uuid,
           owner=django_user,
@@ -341,11 +345,9 @@ class SampleQuery(object):
           data=data
         )
 
-        # Share with default group
-        examples_dir.share(django_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
-        doc2.save()
-
-        LOG.info('Successfully installed sample query: %s' % (self.name,))
+      # Share with default group
+      examples_dir.share(django_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
+      LOG.info('Successfully installed sample query: %s' % (self.name,))
 
 
   def _document_type(self, type):

+ 14 - 14
apps/pig/src/pig/management/commands/pig_setup.py

@@ -63,10 +63,21 @@ class Command(NoArgsCommand):
     Document.objects.sync()
 
     if USE_NEW_EDITOR.get():
+      # Get or create sample user directories
+      home_dir = Directory.objects.get_home_directory(sample_user)
+      examples_dir, created = Directory.objects.get_or_create(
+        parent_directory=home_dir,
+        owner=sample_user,
+        name=Document2.EXAMPLES_DIR)
+
       try:
         # Don't overwrite
         doc = Document.objects.get(object_id=1100713)
         doc2 = Document2.objects.get(owner=sample_user, name=doc.name, type='link-pigscript')
+        # If document exists but has been trashed, recover from Trash
+        if doc2.parent_directory != examples_dir:
+          doc2.parent_directory = examples_dir
+          doc2.save()
       except Document.DoesNotExist:
         LOG.warn('Sample pig script document not found.')
       except Document2.DoesNotExist:
@@ -75,13 +86,6 @@ class Command(NoArgsCommand):
           data.update({'content_type': doc.content_type.model, 'object_id': doc.object_id})
           data = json.dumps(data)
 
-          # Get or create sample user directories
-          home_dir = Directory.objects.get_home_directory(sample_user)
-          examples_dir, created = Directory.objects.get_or_create(
-            parent_directory=home_dir,
-            owner=sample_user,
-            name=Document2.EXAMPLES_DIR)
-
           doc2 = Document2.objects.create(
             owner=sample_user,
             parent_directory=examples_dir,
@@ -90,10 +94,6 @@ class Command(NoArgsCommand):
             description=doc.description,
             data=data)
 
-          # Share with default group
-          examples_dir.share(sample_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
-          doc2.save()
-
-        LOG.info('Successfully installed sample link to pig script: %s' % (doc2.name,))
-
-
+      # Share with default group
+      examples_dir.share(sample_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
+      LOG.info('Successfully installed sample link to pig script: %s' % (doc2.name,))

+ 20 - 14
apps/search/src/search/management/commands/search_setup.py

@@ -30,22 +30,28 @@ LOG = logging.getLogger(__name__)
 class Command(NoArgsCommand):
   def handle_noargs(self, **options):
 
-    if not Document2.objects.filter(type='search-dashboard', owner__username__in=SAMPLE_USER_OWNERS).exists():
-      sample_user = install_sample_user()
+    sample_user = install_sample_user()
+
+    # Get or create sample user directories
+    home_dir = Directory.objects.get_home_directory(sample_user)
+    examples_dir, created = Directory.objects.get_or_create(
+      parent_directory=home_dir,
+      owner=sample_user,
+      name=Document2.EXAMPLES_DIR
+    )
 
+    if not Document2.objects.filter(type='search-dashboard', owner__username__in=SAMPLE_USER_OWNERS).exists():
       management.call_command('loaddata', 'initial_search_examples.json', verbosity=2)
       Document.objects.sync()
 
-      # Get or create sample user directories
-      home_dir = Directory.objects.get_home_directory(sample_user)
-      examples_dir, created = Directory.objects.get_or_create(
-        parent_directory=home_dir,
-        owner=sample_user,
-        name=Document2.EXAMPLES_DIR
-      )
-
       Document2.objects.filter(type='search-dashboard', owner__username__in=SAMPLE_USER_OWNERS).update(parent_directory=examples_dir)
-
-      # Share with default group
-      examples_dir.share(sample_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
-      LOG.info('Successfully installed sample search dashboard')
+    else:
+      # Check if sample documents are in Trash, and if so, restore them
+      for doc in Document2.objects.filter(type='search-dashboard', owner__username__in=SAMPLE_USER_OWNERS):
+        if doc.parent_directory != examples_dir:
+          doc.parent_directory = examples_dir
+          doc.save()
+
+    # Share with default group
+    examples_dir.share(sample_user, Document2Permission.READ_PERM, groups=[get_default_user_group()])
+    LOG.info('Successfully installed sample search dashboard')