Selaa lähdekoodia

HUE-3747 [doc2] Install Spark Notebook example to examples directory

Jenny Kim 9 vuotta sitten
vanhempi
commit
dba54bc

+ 19 - 4
desktop/libs/notebook/src/notebook/management/commands/notebook_setup.py

@@ -23,8 +23,8 @@ from django.contrib.auth.models import User
 from django.core import management
 from django.core.management.base import BaseCommand
 
-from desktop.models import Document, Document2, SAMPLE_USER_OWNERS
-from useradmin.models import install_sample_user
+from desktop.models import Directory, Document, Document2, Document2Permission, SAMPLE_USER_OWNERS
+from useradmin.models import get_default_user_group, install_sample_user
 
 
 LOG = logging.getLogger(__name__)
@@ -40,12 +40,27 @@ class Command(BaseCommand):
     else:
       user = options['user']
 
-    if not Document2.objects.filter(type='notebook', owner__username__in=SAMPLE_USER_OWNERS).exists():
-      install_sample_user()
+    # Install sample notebook from fixture if notebook with sample UUID doesn't exist
+    if not Document2.objects.filter(uuid="7f2ea775-e067-4fde-8f5f-4d704ab9b002").exists():
+      sample_user = install_sample_user()
 
       management.call_command('loaddata', 'initial_notebook_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='notebook', 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 notebook')
+
     from beeswax.management.commands.beeswax_install_examples import Command
     app_name = 'beeswax'
     Command().handle(app_name=app_name, user=user, tables='tables.json')