mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 15:09:14 +00:00
update create group owned library logic (#7403)
This commit is contained in:
@@ -86,68 +86,56 @@ class AdminGroupOwnedLibraries(APIView):
|
|||||||
error_msg = 'No group quota.'
|
error_msg = 'No group quota.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
|
group_id = int(group_id)
|
||||||
|
|
||||||
|
org_id = -1
|
||||||
if is_org_context(request):
|
if is_org_context(request):
|
||||||
# request called by org admin
|
# request called by org admin
|
||||||
org_id = request.user.org.org_id
|
org_id = request.user.org.org_id
|
||||||
else:
|
|
||||||
org_id = -1
|
|
||||||
|
|
||||||
# create group owned repo
|
# create group owned repo
|
||||||
group_id = int(group_id)
|
if org_id and org_id > 0:
|
||||||
if is_pro_version() and ENABLE_STORAGE_CLASSES:
|
|
||||||
|
|
||||||
if STORAGE_CLASS_MAPPING_POLICY in ('USER_SELECT', 'ROLE_BASED'):
|
repo_id = seafile_api.org_add_group_owned_repo(
|
||||||
|
org_id, group_id, repo_name, permission, password,
|
||||||
|
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
||||||
|
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
||||||
|
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
||||||
|
|
||||||
storages = get_library_storages(request)
|
elif is_pro_version() and ENABLE_STORAGE_CLASSES and \
|
||||||
storage_id = request.data.get("storage_id", None)
|
STORAGE_CLASS_MAPPING_POLICY in ('USER_SELECT', 'ROLE_BASED'):
|
||||||
if storage_id and storage_id not in [s['storage_id'] for s in storages]:
|
|
||||||
error_msg = 'storage_id invalid.'
|
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
|
||||||
|
|
||||||
repo_id = seafile_api.add_group_owned_repo(group_id, repo_name,
|
storages = get_library_storages(request)
|
||||||
permission, password, enc_version=ENCRYPTED_LIBRARY_VERSION,
|
storage_id = request.data.get("storage_id", None)
|
||||||
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
if storage_id and storage_id not in [s['storage_id'] for s in storages]:
|
||||||
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None,
|
error_msg = 'storage_id invalid.'
|
||||||
storage_id=storage_id)
|
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||||
else:
|
|
||||||
# STORAGE_CLASS_MAPPING_POLICY == 'REPO_ID_MAPPING'
|
repo_id = seafile_api.add_group_owned_repo(
|
||||||
if org_id and org_id > 0:
|
group_id, repo_name, permission, password,
|
||||||
repo_id = seafile_api.org_add_group_owned_repo(
|
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
||||||
org_id, group_id, repo_name, permission, password,
|
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
||||||
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None,
|
||||||
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
storage_id=storage_id)
|
||||||
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
|
||||||
else:
|
|
||||||
repo_id = seafile_api.add_group_owned_repo(
|
|
||||||
group_id, repo_name, permission, password,
|
|
||||||
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
|
||||||
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
|
||||||
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
|
||||||
else:
|
else:
|
||||||
if org_id and org_id > 0:
|
repo_id = seafile_api.add_group_owned_repo(
|
||||||
repo_id = seafile_api.org_add_group_owned_repo(
|
group_id, repo_name, permission, password,
|
||||||
org_id, group_id, repo_name, permission, password,
|
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
||||||
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
||||||
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
||||||
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
|
||||||
else:
|
|
||||||
repo_id = seafile_api.add_group_owned_repo(group_id, repo_name,
|
|
||||||
permission, password,
|
|
||||||
enc_version=ENCRYPTED_LIBRARY_VERSION,
|
|
||||||
pwd_hash_algo=ENCRYPTED_LIBRARY_PWD_HASH_ALGO or None,
|
|
||||||
pwd_hash_params=ENCRYPTED_LIBRARY_PWD_HASH_PARAMS or None)
|
|
||||||
|
|
||||||
# for activities
|
# for activities
|
||||||
username = request.user.username
|
username = request.user.username
|
||||||
library_template = request.data.get("library_template", '')
|
library_template = request.data.get("library_template", '')
|
||||||
repo_created.send(sender=None, org_id=org_id, creator=username,
|
repo_created.send(sender=None, org_id=org_id, creator=username,
|
||||||
repo_id=repo_id, repo_name=repo_name,
|
repo_id=repo_id, repo_name=repo_name,
|
||||||
library_template=library_template)
|
library_template=library_template)
|
||||||
|
|
||||||
# for notification
|
# for notification
|
||||||
repo = seafile_api.get_repo(repo_id)
|
repo = seafile_api.get_repo(repo_id)
|
||||||
share_repo_to_group_successful.send(sender=None, from_user=username,
|
share_repo_to_group_successful.send(sender=None, from_user=username,
|
||||||
group_id=group_id, repo=repo, path='/', org_id=org_id)
|
group_id=group_id, repo=repo,
|
||||||
|
path='/', org_id=org_id)
|
||||||
|
|
||||||
info = get_group_owned_repo_info(request, repo_id)
|
info = get_group_owned_repo_info(request, repo_id)
|
||||||
# TODO
|
# TODO
|
||||||
|
Reference in New Issue
Block a user