1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 19:08:21 +00:00

[useradmin] add "shared links" tab

This commit is contained in:
imwhatiam
2014-04-29 11:05:36 +08:00
committed by llj
parent aac31c1e2d
commit acc80c8700
2 changed files with 114 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
{% extends "admin_base.html" %} {% extends "admin_base.html" %}
{% load i18n avatar_tags %} {% load i18n avatar_tags seahub_tags %}
{% load url from future %} {% load url from future %}
{% block extra_style %} {% block extra_style %}
@@ -63,8 +63,9 @@
<div id="tabs" class="tab-tabs"> <div id="tabs" class="tab-tabs">
<div class="hd ovhd"> <div class="hd ovhd">
<ul class="tab-tabs-nav fleft"> <ul class="tab-tabs-nav fleft">
<li class="tab"><a href="#owned" class="a">{% trans "Owned" %}</a></li> <li class="tab"><a href="#owned" class="a">{% trans "Owned Repos" %}</a></li>
<li class="tab"><a href="#shared" class="a">{% trans "Shared" %}</a></li> <li class="tab"><a href="#shared" class="a">{% trans "Shared Repos" %}</a></li>
<li class="tab"><a href="#shared-links" class="a">{% trans "Shared Links" %}</a></li>
</ul> </ul>
</div> </div>
@@ -117,6 +118,55 @@
<p>{% trans "None" %}</p> <p>{% trans "None" %}</p>
{% endif %} {% endif %}
</div> </div>
<div id="shared-links">
{% if user_shared_links%}
<table class="sharelink-list">
<tr>
<th width="5%"><!--icon--></th>
<th width="30%">{% trans "Name"%}</th>
<th width="20%">{% trans "Size"%}</th>
<th width="20%">{% trans "Type"%}</th>
<th width="10%">{% trans "Visits"%}</th>
<th width="15%">{% trans "Operations"%}</th>
</tr>
{% for link in user_shared_links %}
<tr>
{% if link.s_type%}
{% if link.s_type == 'f' %}
<td class="alc"><img src="{{ MEDIA_URL }}img/file/{{ link.filename|file_icon_filter }}" alt="{% trans "File"%}" /></td>
<td><a href="{% url 'repo_view_file' link.repo.id %}?p={{ link.path|urlencode }}">{{ link.filename }}</a></td>
<td>{{ link.file_size|filesizeformat}}</td>
{% else %}
<td class="alc"><img src="{{ MEDIA_URL }}img/folder-icon-24.png" alt="{% trans "Directory icon"%}" /></td>
<td><a href="{% url 'repo' link.repo.id %}?p={{ link.path|urlencode }}">{{ link.filename }}</a></td>
<td>{{ link.dir_size|filesizeformat}}</td>
{% endif %}
<td>DownLoad</td>
<td>{{ link.view_cnt }}</td>
<td>
<a class="op vh" href="{% url 'remove_shared_link' %}?t={{ link.token }}">{% trans "Remove"%}</a>
</td>
{% else %}
<td class="alc"><img src="{{ MEDIA_URL }}img/folder-icon-24.png" alt="{% trans "Directory icon"%}" /></td>
<td><a href="{% url 'repo' link.repo.id %}?p={{ link.path|urlencode }}">{{ link.dir_name }}</a></td>
<td>//</td>
<td>Upload</td>
<td>{{ link.view_cnt }}</td>
<td>
<a class="op vh" href="{% url 'remove_shared_upload_link' %}?t={{ link.token }}">{% trans "Remove"%}</a>
</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% else %}
<div class="empty-tips">
<h2 class="alc">{% trans "You don't have any shared link"%}</h2>
<p>{% trans "You can generate an share link from any dir/file. People receive this link can download/upload zipped dir or files." %}</p>
</div>
{% endif %}
</div>
</div> </div>
{% include 'snippets/repo_del_popup.html' %} {% include 'snippets/repo_del_popup.html' %}

View File

@@ -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.views import get_system_default_repo_id
from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm
from seahub.profile.models import Profile, DetailedProfile 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 import seahub.settings as settings
from seahub.settings import INIT_PASSWD, SITE_NAME, \ from seahub.settings import INIT_PASSWD, SITE_NAME, \
SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \
ENABLE_GUEST 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 from seahub.utils.sysinfo import get_platform_name
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -361,6 +362,63 @@ def user_info(request, email):
profile = Profile.objects.get_profile_by_user(email) profile = Profile.objects.get_profile_by_user(email)
d_profile = DetailedProfile.objects.get_detailed_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( return render_to_response(
'sysadmin/userinfo.html', { 'sysadmin/userinfo.html', {
'owned_repos': owned_repos, 'owned_repos': owned_repos,
@@ -374,6 +432,7 @@ def user_info(request, email):
'profile': profile, 'profile': profile,
'd_profile': d_profile, 'd_profile': d_profile,
'org_name': org_name, 'org_name': org_name,
"user_shared_links": user_shared_links,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
@login_required_ajax @login_required_ajax