diff --git a/seahub/api2/views.py b/seahub/api2/views.py index d7bd7b2428..642e31c5b4 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -619,11 +619,13 @@ class Repos(APIView): return api_error(HTTP_520_OPERATION_FAILED, 'Failed to create library.') else: + library_template = request.data.get("library_template", None) repo_created.send(sender=None, org_id=org_id, creator=username, repo_id=repo_id, - repo_name=repo_name) + repo_name=repo_name, + library_template=library_template) resp = repo_download_info(request, repo_id, gen_sync_token=gen_sync_token) diff --git a/seahub/handlers.py b/seahub/handlers.py index 7ece0288d7..54e46cf2c6 100644 --- a/seahub/handlers.py +++ b/seahub/handlers.py @@ -1,5 +1,10 @@ # Copyright (c) 2012-2016 Seafile Ltd. + +import logging import settings +from seaserv import seafile_api +from seahub.utils import is_pro_version +logger = logging.getLogger(__name__) if not hasattr(settings, 'EVENTS_CONFIG_FILE'): def repo_created_cb(sender, **kwargs): @@ -7,7 +12,7 @@ if not hasattr(settings, 'EVENTS_CONFIG_FILE'): def repo_deleted_cb(sender, **kwargs): pass -else: +else: import seafevents from utils import SeafEventsSession @@ -34,6 +39,22 @@ else: seafevents.save_user_events (session, etype, detail, users, None) session.close() + if is_pro_version(): + LIBRARY_TEMPLATES = getattr(settings, 'LIBRARY_TEMPLATES', {}) + library_template = kwargs['library_template'] + + dir_path_list = [] + if isinstance(LIBRARY_TEMPLATES, dict) and \ + LIBRARY_TEMPLATES.has_key(library_template): + dir_path_list = LIBRARY_TEMPLATES[library_template] + + try: + for dir_path in dir_path_list: + seafile_api.mkdir_with_parents(repo_id, '/', + dir_path.strip('/'), creator) + except Exception as e: + logger.error(e) + def repo_deleted_cb(sender, **kwargs): """When a repo is deleted, an event would be added to every user in all groups to which this repo is shared. diff --git a/seahub/signals.py b/seahub/signals.py index 08afee8382..bd01dff56a 100644 --- a/seahub/signals.py +++ b/seahub/signals.py @@ -2,7 +2,7 @@ import django.dispatch # Use org_id = -1 if it's not an org repo -repo_created = django.dispatch.Signal(providing_args=["org_id", "creator", "repo_id", "repo_name"]) +repo_created = django.dispatch.Signal(providing_args=["org_id", "creator", "repo_id", "repo_name", "library_template"]) repo_deleted = django.dispatch.Signal(providing_args=["org_id", "usernames", "repo_owner", "repo_id", "repo_name"]) upload_file_successful = django.dispatch.Signal(providing_args=["repo_id", "file_path", "owner"]) comment_file_successful = django.dispatch.Signal(providing_args=["repo", "file_path", "comment", "author", "notify_users"]) diff --git a/seahub/templates/js/templates.html b/seahub/templates/js/templates.html index 98a51459f8..5b0dae6430 100644 --- a/seahub/templates/js/templates.html +++ b/seahub/templates/js/templates.html @@ -4,6 +4,15 @@

{% trans "New Library"%}



+ <% if (library_templates.length > 0) { %> +
+ + <% } %> <% if (showSharePerm) { %>