mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 15:19:06 +00:00
use get_repo_owner func when check if is department admin
This commit is contained in:
@@ -13,10 +13,8 @@ from rest_framework import status
|
|||||||
from seahub.api2.throttling import UserRateThrottle
|
from seahub.api2.throttling import UserRateThrottle
|
||||||
from seahub.api2.authentication import TokenAuthentication
|
from seahub.api2.authentication import TokenAuthentication
|
||||||
from seahub.api2.utils import api_error
|
from seahub.api2.utils import api_error
|
||||||
from seahub.views import check_folder_permission
|
|
||||||
from seaserv import seafile_api
|
from seaserv import seafile_api
|
||||||
from seahub.utils.repo import is_repo_owner
|
from seahub.utils.repo import is_repo_owner, get_repo_owner
|
||||||
from seahub.constants import PERMISSION_READ_WRITE
|
|
||||||
from seahub.group.utils import is_group_admin
|
from seahub.group.utils import is_group_admin
|
||||||
from seahub.api2.endpoints.group_owned_libraries import get_group_id_by_repo_owner
|
from seahub.api2.endpoints.group_owned_libraries import get_group_id_by_repo_owner
|
||||||
|
|
||||||
@@ -50,7 +48,7 @@ class RepoCommitRevertView(APIView):
|
|||||||
# permission check
|
# permission check
|
||||||
has_perm = is_repo_owner(request, repo.id, username)
|
has_perm = is_repo_owner(request, repo.id, username)
|
||||||
if not has_perm:
|
if not has_perm:
|
||||||
repo_owner = seafile_api.get_repo_owner(repo_id)
|
repo_owner = get_repo_owner(request, repo_id)
|
||||||
# department admin
|
# department admin
|
||||||
if '@seafile_group' in repo_owner:
|
if '@seafile_group' in repo_owner:
|
||||||
group_id = get_group_id_by_repo_owner(repo_owner)
|
group_id = get_group_id_by_repo_owner(repo_owner)
|
||||||
|
@@ -22,10 +22,10 @@ from seahub.share.models import FileShare, UploadLinkShare, \
|
|||||||
from seahub.views import gen_path_link, get_repo_dirents, \
|
from seahub.views import gen_path_link, get_repo_dirents, \
|
||||||
check_folder_permission
|
check_folder_permission
|
||||||
|
|
||||||
from seahub.utils import gen_dir_share_link, \
|
from seahub.utils import gen_dir_share_link, \
|
||||||
gen_shared_upload_link, user_traffic_over_limit, render_error, \
|
gen_shared_upload_link, user_traffic_over_limit, render_error, \
|
||||||
get_file_type_and_ext, get_service_url
|
get_file_type_and_ext, get_service_url
|
||||||
from seahub.utils.repo import is_repo_owner
|
from seahub.utils.repo import is_repo_owner, get_repo_owner
|
||||||
from seahub.settings import ENABLE_UPLOAD_FOLDER, \
|
from seahub.settings import ENABLE_UPLOAD_FOLDER, \
|
||||||
ENABLE_RESUMABLE_FILEUPLOAD, ENABLE_THUMBNAIL, \
|
ENABLE_RESUMABLE_FILEUPLOAD, ENABLE_THUMBNAIL, \
|
||||||
THUMBNAIL_ROOT, THUMBNAIL_DEFAULT_SIZE, THUMBNAIL_SIZE_FOR_GRID, \
|
THUMBNAIL_ROOT, THUMBNAIL_DEFAULT_SIZE, THUMBNAIL_SIZE_FOR_GRID, \
|
||||||
@@ -34,47 +34,56 @@ from seahub.settings import ENABLE_UPLOAD_FOLDER, \
|
|||||||
ENABLE_SHARE_LINK_REPORT_ABUSE
|
ENABLE_SHARE_LINK_REPORT_ABUSE
|
||||||
from seahub.utils.file_types import IMAGE, VIDEO
|
from seahub.utils.file_types import IMAGE, VIDEO
|
||||||
from seahub.thumbnail.utils import get_share_link_thumbnail_src
|
from seahub.thumbnail.utils import get_share_link_thumbnail_src
|
||||||
from seahub.constants import HASH_URLS
|
|
||||||
from seahub.group.utils import is_group_admin
|
from seahub.group.utils import is_group_admin
|
||||||
from seahub.api2.endpoints.group_owned_libraries import get_group_id_by_repo_owner
|
from seahub.api2.endpoints.group_owned_libraries import get_group_id_by_repo_owner
|
||||||
|
|
||||||
# Get an instance of a logger
|
# Get an instance of a logger
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_repo(repo_id):
|
def get_repo(repo_id):
|
||||||
return seafile_api.get_repo(repo_id)
|
return seafile_api.get_repo(repo_id)
|
||||||
|
|
||||||
|
|
||||||
def get_commit(repo_id, repo_version, commit_id):
|
def get_commit(repo_id, repo_version, commit_id):
|
||||||
return seaserv.get_commit(repo_id, repo_version, commit_id)
|
return seaserv.get_commit(repo_id, repo_version, commit_id)
|
||||||
|
|
||||||
|
|
||||||
def get_repo_size(repo_id):
|
def get_repo_size(repo_id):
|
||||||
return seafile_api.get_repo_size(repo_id)
|
return seafile_api.get_repo_size(repo_id)
|
||||||
|
|
||||||
|
|
||||||
def is_password_set(repo_id, username):
|
def is_password_set(repo_id, username):
|
||||||
return seafile_api.is_password_set(repo_id, username)
|
return seafile_api.is_password_set(repo_id, username)
|
||||||
|
|
||||||
|
|
||||||
def get_path_from_request(request):
|
def get_path_from_request(request):
|
||||||
path = request.GET.get('p', '/')
|
path = request.GET.get('p', '/')
|
||||||
if path[-1] != '/':
|
if path[-1] != '/':
|
||||||
path = path + '/'
|
path = path + '/'
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
def get_next_url_from_request(request):
|
def get_next_url_from_request(request):
|
||||||
return request.GET.get('next', None)
|
return request.GET.get('next', None)
|
||||||
|
|
||||||
|
|
||||||
def get_nav_path(path, repo_name):
|
def get_nav_path(path, repo_name):
|
||||||
return gen_path_link(path, repo_name)
|
return gen_path_link(path, repo_name)
|
||||||
|
|
||||||
|
|
||||||
def is_no_quota(repo_id):
|
def is_no_quota(repo_id):
|
||||||
return True if seaserv.check_quota(repo_id) < 0 else False
|
return True if seaserv.check_quota(repo_id) < 0 else False
|
||||||
|
|
||||||
|
|
||||||
def get_fileshare(repo_id, username, path):
|
def get_fileshare(repo_id, username, path):
|
||||||
if path == '/': # no shared link for root dir
|
if path == '/': # no shared link for root dir
|
||||||
return None
|
return None
|
||||||
|
|
||||||
l = FileShare.objects.filter(repo_id=repo_id).filter(
|
share_list = FileShare.objects.filter(repo_id=repo_id).filter(
|
||||||
username=username).filter(path=path)
|
username=username).filter(path=path)
|
||||||
return l[0] if len(l) > 0 else None
|
return share_list[0] if len(share_list) > 0 else None
|
||||||
|
|
||||||
|
|
||||||
def get_dir_share_link(fileshare):
|
def get_dir_share_link(fileshare):
|
||||||
# dir shared link
|
# dir shared link
|
||||||
@@ -84,13 +93,15 @@ def get_dir_share_link(fileshare):
|
|||||||
dir_shared_link = ''
|
dir_shared_link = ''
|
||||||
return dir_shared_link
|
return dir_shared_link
|
||||||
|
|
||||||
|
|
||||||
def get_uploadlink(repo_id, username, path):
|
def get_uploadlink(repo_id, username, path):
|
||||||
if path == '/': # no shared upload link for root dir
|
if path == '/': # no shared upload link for root dir
|
||||||
return None
|
return None
|
||||||
|
|
||||||
l = UploadLinkShare.objects.filter(repo_id=repo_id).filter(
|
share_list = UploadLinkShare.objects.filter(repo_id=repo_id).filter(
|
||||||
username=username).filter(path=path)
|
username=username).filter(path=path)
|
||||||
return l[0] if len(l) > 0 else None
|
return share_list[0] if len(share_list) > 0 else None
|
||||||
|
|
||||||
|
|
||||||
def get_dir_shared_upload_link(uploadlink):
|
def get_dir_shared_upload_link(uploadlink):
|
||||||
# dir shared upload link
|
# dir shared upload link
|
||||||
@@ -100,6 +111,7 @@ def get_dir_shared_upload_link(uploadlink):
|
|||||||
dir_shared_upload_link = ''
|
dir_shared_upload_link = ''
|
||||||
return dir_shared_upload_link
|
return dir_shared_upload_link
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def repo_history_view(request, repo_id):
|
def repo_history_view(request, repo_id):
|
||||||
"""View repo in history.
|
"""View repo in history.
|
||||||
@@ -123,7 +135,7 @@ def repo_history_view(request, repo_id):
|
|||||||
reverse_url = reverse('lib_view', args=[repo_id, repo.name, ''])
|
reverse_url = reverse('lib_view', args=[repo_id, repo.name, ''])
|
||||||
if repo.encrypted and \
|
if repo.encrypted and \
|
||||||
(repo.enc_version == 1 or (repo.enc_version == 2 and server_crypto)) \
|
(repo.enc_version == 1 or (repo.enc_version == 2 and server_crypto)) \
|
||||||
and not is_password_set(repo.id, username):
|
and not is_password_set(repo.id, username):
|
||||||
return render(request, 'decrypt_repo_form.html', {
|
return render(request, 'decrypt_repo_form.html', {
|
||||||
'repo': repo,
|
'repo': repo,
|
||||||
'next': get_next_url_from_request(request) or reverse_url,
|
'next': get_next_url_from_request(request) or reverse_url,
|
||||||
@@ -157,6 +169,7 @@ def repo_history_view(request, repo_id):
|
|||||||
'referer': referer,
|
'referer': referer,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def repo_snapshot(request, repo_id):
|
def repo_snapshot(request, repo_id):
|
||||||
"""View repo in history.
|
"""View repo in history.
|
||||||
@@ -179,7 +192,7 @@ def repo_snapshot(request, repo_id):
|
|||||||
reverse_url = reverse('lib_view', args=[repo_id, repo.name, ''])
|
reverse_url = reverse('lib_view', args=[repo_id, repo.name, ''])
|
||||||
if repo.encrypted and \
|
if repo.encrypted and \
|
||||||
(repo.enc_version == 1 or (repo.enc_version == 2 and server_crypto)) \
|
(repo.enc_version == 1 or (repo.enc_version == 2 and server_crypto)) \
|
||||||
and not is_password_set(repo.id, username):
|
and not is_password_set(repo.id, username):
|
||||||
return render(request, 'decrypt_repo_form.html', {
|
return render(request, 'decrypt_repo_form.html', {
|
||||||
'repo': repo,
|
'repo': repo,
|
||||||
'next': get_next_url_from_request(request) or reverse_url,
|
'next': get_next_url_from_request(request) or reverse_url,
|
||||||
@@ -195,7 +208,7 @@ def repo_snapshot(request, repo_id):
|
|||||||
has_perm = is_repo_owner(request, repo.id, username)
|
has_perm = is_repo_owner(request, repo.id, username)
|
||||||
# department admin
|
# department admin
|
||||||
if not has_perm:
|
if not has_perm:
|
||||||
repo_owner = seafile_api.get_repo_owner(repo_id)
|
repo_owner = get_repo_owner(request, repo_id)
|
||||||
if '@seafile_group' in repo_owner:
|
if '@seafile_group' in repo_owner:
|
||||||
group_id = get_group_id_by_repo_owner(repo_owner)
|
group_id = get_group_id_by_repo_owner(repo_owner)
|
||||||
has_perm = is_group_admin(group_id, username)
|
has_perm = is_group_admin(group_id, username)
|
||||||
@@ -206,6 +219,7 @@ def repo_snapshot(request, repo_id):
|
|||||||
'current_commit': current_commit,
|
'current_commit': current_commit,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def view_lib_as_wiki(request, repo_id, path):
|
def view_lib_as_wiki(request, repo_id, path):
|
||||||
|
|
||||||
@@ -244,7 +258,8 @@ def view_lib_as_wiki(request, repo_id, path):
|
|||||||
'share_link_expire_days_max': SHARE_LINK_EXPIRE_DAYS_MAX,
|
'share_link_expire_days_max': SHARE_LINK_EXPIRE_DAYS_MAX,
|
||||||
})
|
})
|
||||||
|
|
||||||
########## shared dir/uploadlink
|
|
||||||
|
# shared dir/uploadlink
|
||||||
@share_link_audit
|
@share_link_audit
|
||||||
@share_link_login_required
|
@share_link_login_required
|
||||||
def view_shared_dir(request, fileshare):
|
def view_shared_dir(request, fileshare):
|
||||||
@@ -328,8 +343,7 @@ def view_shared_dir(request, fileshare):
|
|||||||
req_image_path = posixpath.join(req_path, f.obj_name)
|
req_image_path = posixpath.join(req_path, f.obj_name)
|
||||||
src = get_share_link_thumbnail_src(token, thumbnail_size, req_image_path)
|
src = get_share_link_thumbnail_src(token, thumbnail_size, req_image_path)
|
||||||
f.encoded_thumbnail_src = urlquote(src)
|
f.encoded_thumbnail_src = urlquote(src)
|
||||||
|
|
||||||
#template = 'view_shared_dir.html'
|
|
||||||
template = 'view_shared_dir_react.html'
|
template = 'view_shared_dir_react.html'
|
||||||
|
|
||||||
dir_share_link = request.path
|
dir_share_link = request.path
|
||||||
@@ -354,6 +368,7 @@ def view_shared_dir(request, fileshare):
|
|||||||
'enable_share_link_report_abuse': ENABLE_SHARE_LINK_REPORT_ABUSE,
|
'enable_share_link_report_abuse': ENABLE_SHARE_LINK_REPORT_ABUSE,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@share_link_audit
|
@share_link_audit
|
||||||
def view_shared_upload_link(request, uploadlink):
|
def view_shared_upload_link(request, uploadlink):
|
||||||
token = uploadlink.token
|
token = uploadlink.token
|
||||||
|
Reference in New Issue
Block a user