mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-07 01:41:39 +00:00
support login_id field when admin create user (#6021)
This commit is contained in:
@@ -313,14 +313,16 @@ def get_user_share_link_info(fileshare):
|
|||||||
if fileshare.s_type == 'f':
|
if fileshare.s_type == 'f':
|
||||||
obj_id = seafile_api.get_file_id_by_path(repo_id, path)
|
obj_id = seafile_api.get_file_id_by_path(repo_id, path)
|
||||||
data['size'] = seafile_api.get_file_size(repo.store_id,
|
data['size'] = seafile_api.get_file_size(repo.store_id,
|
||||||
repo.version, obj_id)
|
repo.version, obj_id)
|
||||||
else:
|
else:
|
||||||
data['size'] = ''
|
data['size'] = ''
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def create_user_info(request, email, role, nickname, contact_email, quota_total_mb):
|
def create_user_info(request, email, role, nickname,
|
||||||
|
contact_email, quota_total_mb,
|
||||||
|
login_id):
|
||||||
# update additional user info
|
# update additional user info
|
||||||
|
|
||||||
if is_pro_version() and role:
|
if is_pro_version() and role:
|
||||||
@@ -344,6 +346,9 @@ def create_user_info(request, email, role, nickname, contact_email, quota_total_
|
|||||||
else:
|
else:
|
||||||
seafile_api.set_user_quota(email, quota_total)
|
seafile_api.set_user_quota(email, quota_total)
|
||||||
|
|
||||||
|
if login_id is not None:
|
||||||
|
Profile.objects.add_or_update(email, login_id=login_id)
|
||||||
|
|
||||||
|
|
||||||
def update_user_info(request, user, password, is_active, is_staff, role,
|
def update_user_info(request, user, password, is_active, is_staff, role,
|
||||||
nickname, login_id, contact_email, reference_id,
|
nickname, login_id, contact_email, reference_id,
|
||||||
@@ -537,7 +542,7 @@ class AdminUsers(APIView):
|
|||||||
throttle_classes = (UserRateThrottle, )
|
throttle_classes = (UserRateThrottle, )
|
||||||
|
|
||||||
def get_info_of_users_order_by_quota_usage(self, source, direction,
|
def get_info_of_users_order_by_quota_usage(self, source, direction,
|
||||||
page, per_page):
|
page, per_page):
|
||||||
|
|
||||||
# get user's quota usage info
|
# get user's quota usage info
|
||||||
user_usage_dict = {}
|
user_usage_dict = {}
|
||||||
@@ -568,7 +573,7 @@ class AdminUsers(APIView):
|
|||||||
|
|
||||||
# sort
|
# sort
|
||||||
users.sort(key=lambda item: item.quota_usage,
|
users.sort(key=lambda item: item.quota_usage,
|
||||||
reverse = direction == 'desc')
|
reverse=direction == 'desc')
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
MULTI_INSTITUTION = getattr(settings, 'MULTI_INSTITUTION', False)
|
MULTI_INSTITUTION = getattr(settings, 'MULTI_INSTITUTION', False)
|
||||||
@@ -845,12 +850,21 @@ class AdminUsers(APIView):
|
|||||||
error_msg = 'password required.'
|
error_msg = 'password required.'
|
||||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||||
|
|
||||||
|
login_id = request.data.get("login_id", None)
|
||||||
|
if login_id is not None:
|
||||||
|
login_id = login_id.strip()
|
||||||
|
username_by_login_id = Profile.objects.get_username_by_login_id(login_id)
|
||||||
|
if username_by_login_id is not None:
|
||||||
|
return api_error(status.HTTP_400_BAD_REQUEST,
|
||||||
|
_("Login id %s already exists." % login_id))
|
||||||
|
|
||||||
# create user
|
# create user
|
||||||
try:
|
try:
|
||||||
user_obj = User.objects.create_user(email, password, is_staff, is_active)
|
user_obj = User.objects.create_user(email, password, is_staff, is_active)
|
||||||
create_user_info(request, email=user_obj.username, role=role,
|
create_user_info(request, email=user_obj.username, role=role,
|
||||||
nickname=name, contact_email=email,
|
nickname=name, contact_email=email,
|
||||||
quota_total_mb=quota_total_mb)
|
quota_total_mb=quota_total_mb,
|
||||||
|
login_id=login_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
error_msg = 'Internal Server Error'
|
error_msg = 'Internal Server Error'
|
||||||
@@ -862,9 +876,7 @@ class AdminUsers(APIView):
|
|||||||
try:
|
try:
|
||||||
send_html_email(_('You are invited to join %s') % get_site_name(),
|
send_html_email(_('You are invited to join %s') % get_site_name(),
|
||||||
'sysadmin/user_add_email.html',
|
'sysadmin/user_add_email.html',
|
||||||
c,
|
c, None, [email2contact_email(email)])
|
||||||
None,
|
|
||||||
[email2contact_email(email)])
|
|
||||||
|
|
||||||
add_user_tip = _('Successfully added user %(user)s. An email notification has been sent.') % {'user': email}
|
add_user_tip = _('Successfully added user %(user)s. An email notification has been sent.') % {'user': email}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -1018,7 +1030,7 @@ class AdminSearchUser(APIView):
|
|||||||
|
|
||||||
# search user from profile
|
# search user from profile
|
||||||
searched_profile = Profile.objects.filter((Q(nickname__icontains=query_str)) | \
|
searched_profile = Profile.objects.filter((Q(nickname__icontains=query_str)) | \
|
||||||
Q(contact_email__icontains=query_str))[:10]
|
Q(contact_email__icontains=query_str))[:10]
|
||||||
|
|
||||||
for profile in searched_profile:
|
for profile in searched_profile:
|
||||||
email = profile.user
|
email = profile.user
|
||||||
@@ -1073,7 +1085,6 @@ class AdminSearchUser(APIView):
|
|||||||
ccnet_users = ccnet_ldap_import_users[-per_page:]
|
ccnet_users = ccnet_ldap_import_users[-per_page:]
|
||||||
|
|
||||||
# search user from profile
|
# search user from profile
|
||||||
profile_users = []
|
|
||||||
all_ccnet_users = ccnet_db_users + ccnet_ldap_import_users
|
all_ccnet_users = ccnet_db_users + ccnet_ldap_import_users
|
||||||
all_profile_users = []
|
all_profile_users = []
|
||||||
|
|
||||||
@@ -1192,8 +1203,8 @@ class AdminUser(APIView):
|
|||||||
|
|
||||||
def get(self, request, email):
|
def get(self, request, email):
|
||||||
|
|
||||||
if not (request.user.admin_permissions.can_manage_user() or \
|
if not (request.user.admin_permissions.can_manage_user() or
|
||||||
request.user.admin_permissions.can_update_user()):
|
request.user.admin_permissions.can_update_user()):
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
|
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
|
||||||
|
|
||||||
avatar_size = request.data.get('avatar_size', 64)
|
avatar_size = request.data.get('avatar_size', 64)
|
||||||
@@ -1229,8 +1240,8 @@ class AdminUser(APIView):
|
|||||||
|
|
||||||
def put(self, request, email):
|
def put(self, request, email):
|
||||||
|
|
||||||
if not (request.user.admin_permissions.can_manage_user() or \
|
if not (request.user.admin_permissions.can_manage_user() or
|
||||||
request.user.admin_permissions.can_update_user()):
|
request.user.admin_permissions.can_update_user()):
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
|
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
|
||||||
|
|
||||||
# basic user info check
|
# basic user info check
|
||||||
|
Reference in New Issue
Block a user