From acc80c8700eb8d3a7c28fa7cf15db704cc1ff4b8 Mon Sep 17 00:00:00 2001 From: imwhatiam Date: Tue, 29 Apr 2014 11:05:36 +0800 Subject: [PATCH] [useradmin] add "shared links" tab --- seahub/templates/sysadmin/userinfo.html | 56 ++++++++++++++++++++-- seahub/views/sysadmin.py | 63 ++++++++++++++++++++++++- 2 files changed, 114 insertions(+), 5 deletions(-) diff --git a/seahub/templates/sysadmin/userinfo.html b/seahub/templates/sysadmin/userinfo.html index d104c8cd92..492555386b 100644 --- a/seahub/templates/sysadmin/userinfo.html +++ b/seahub/templates/sysadmin/userinfo.html @@ -1,5 +1,5 @@ {% extends "admin_base.html" %} -{% load i18n avatar_tags %} +{% load i18n avatar_tags seahub_tags %} {% load url from future %} {% block extra_style %} @@ -63,8 +63,9 @@
@@ -117,6 +118,55 @@

{% trans "None" %}

{% endif %}
+ + {% include 'snippets/repo_del_popup.html' %} diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 53b7741ad2..5b65668dae 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -28,13 +28,14 @@ from seahub.utils import IS_EMAIL_CONFIGURED, string2list, is_valid_username from seahub.views import get_system_default_repo_id from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm from seahub.profile.models import Profile, DetailedProfile -from seahub.share.models import FileShare +from seahub.share.models import FileShare, UploadLinkShare import seahub.settings as settings from seahub.settings import INIT_PASSWD, SITE_NAME, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ ENABLE_GUEST -from seahub.utils import send_html_email, get_user_traffic_list, get_server_id +from seahub.utils import send_html_email, get_user_traffic_list, get_server_id, \ + gen_file_share_link, gen_dir_share_link, gen_shared_upload_link from seahub.utils.sysinfo import get_platform_name logger = logging.getLogger(__name__) @@ -361,6 +362,63 @@ def user_info(request, email): profile = Profile.objects.get_profile_by_user(email) d_profile = DetailedProfile.objects.get_detailed_profile_by_user(email) + user_shared_links = [] + # download links + fileshares = FileShare.objects.filter(username=email) + + for fs in fileshares: + r = seafile_api.get_repo(fs.repo_id) + if not r: + fs.delete() + continue + + if fs.s_type == 'f': + if seafile_api.get_file_id_by_path(r.id, fs.path) is None: + fs.delete() + continue + fs.filename = os.path.basename(fs.path) + fs.shared_link = gen_file_share_link(fs.token) + + path = fs.path.rstrip('/') # Normalize file path + obj_id = seafile_api.get_file_id_by_path(r.id, path) + file_size = seafile_api.get_file_size(r.store_id, r.version, obj_id) + fs.file_size = file_size + else: + if seafile_api.get_dir_id_by_path(r.id, fs.path) is None: + fs.delete() + continue + fs.filename = os.path.basename(fs.path.rstrip('/')) + fs.shared_link = gen_dir_share_link(fs.token) + + path = fs.path + if path[-1] != '/': # Normalize dir path + path += '/' + #get dir size + dir_id = seafserv_threaded_rpc.get_dirid_by_path (r.id, + r.head_cmmt_id, + path.encode('utf-8')) + dir_size = seafserv_threaded_rpc.get_dir_size(r.store_id, r.version, + dir_id) + fs.dir_size = dir_size + + fs.repo = r + user_shared_links.append(fs) + + # upload links + uploadlinks = UploadLinkShare.objects.filter(username=email) + for link in uploadlinks: + r = seafile_api.get_repo(link.repo_id) + if not r: + link.delete() + continue + if seafile_api.get_dir_id_by_path(r.id, link.path) is None: + link.delete() + continue + link.dir_name = os.path.basename(link.path.rstrip('/')) + link.shared_link = gen_shared_upload_link(link.token) + link.repo = r + user_shared_links.append(link) + return render_to_response( 'sysadmin/userinfo.html', { 'owned_repos': owned_repos, @@ -374,6 +432,7 @@ def user_info(request, email): 'profile': profile, 'd_profile': d_profile, 'org_name': org_name, + "user_shared_links": user_shared_links, }, context_instance=RequestContext(request)) @login_required_ajax