|
|
@@ -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')
|