mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-02 15:38:15 +00:00
Merge branch 'download'
This commit is contained in:
@@ -108,14 +108,17 @@
|
|||||||
|
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
{% if user_perm == 'rw' %}
|
{% if user_perm %}
|
||||||
<div class="repo-file-op vh">
|
<div class="repo-file-op vh">
|
||||||
<img src="{{ MEDIA_URL }}img/dropdown-arrow.png" title="{% trans 'More operations'%}" alt="{% trans 'More operations'%}" class="more-op-icon" data="no-popup" />
|
<img src="{{ MEDIA_URL }}img/dropdown-arrow.png" title="{% trans 'More operations'%}" alt="{% trans 'More operations'%}" class="more-op-icon" data="no-popup" />
|
||||||
<ul class="hidden-op hide">
|
<ul class="hidden-op hide">
|
||||||
|
<li><a class="op" href="{{ SITE_ROOT }}repo/download_dir/{{ repo.id }}/?parent={{ path|urlencode }}&dirname={{ dirent.obj_name|urlencode }}">{% trans 'Download' %}</a></li>
|
||||||
|
{% if user_perm == 'rw' %}
|
||||||
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">{% trans "Delete"%}</a></li>
|
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">{% trans "Delete"%}</a></li>
|
||||||
<li><a class="op dir-rename" href="#" data="{{ dirent.obj_name }}">{% trans "Rename"%}</a></li>
|
<li><a class="op dir-rename" href="#" data="{{ dirent.obj_name }}">{% trans "Rename"%}</a></li>
|
||||||
<li><a class="op dir-mv" href="#" data="{{ dirent.obj_name }}">{% trans "Move"%}</a></li>
|
<li><a class="op dir-mv" href="#" data="{{ dirent.obj_name }}">{% trans "Move"%}</a></li>
|
||||||
<li><a class="op dir-cp" href="#" data="{{ dirent.obj_name }}">{% trans "Copy"%}</a></li>
|
<li><a class="op dir-cp" href="#" data="{{ dirent.obj_name }}">{% trans "Copy"%}</a></li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
1
urls.py
1
urls.py
@@ -40,6 +40,7 @@ urlpatterns = patterns('',
|
|||||||
url(r'^repo/revert_file/(?P<repo_id>[^/]+)/$', repo_revert_file, name='repo_revert_file'),
|
url(r'^repo/revert_file/(?P<repo_id>[^/]+)/$', repo_revert_file, name='repo_revert_file'),
|
||||||
url(r'^repo/revert_dir/(?P<repo_id>[^/]+)/$', repo_revert_dir, name='repo_revert_dir'),
|
url(r'^repo/revert_dir/(?P<repo_id>[^/]+)/$', repo_revert_dir, name='repo_revert_dir'),
|
||||||
url(r'^repo/star_file/(?P<repo_id>[^/]+)/$', repo_star_file, name='repo_star_file'),
|
url(r'^repo/star_file/(?P<repo_id>[^/]+)/$', repo_star_file, name='repo_star_file'),
|
||||||
|
url(r'^repo/download_dir/(?P<repo_id>[^/]+)/$', repo_download_dir, name='repo_download_dir'),
|
||||||
(r'^repo/upload_error/(?P<repo_id>[^/]+)/$', upload_file_error),
|
(r'^repo/upload_error/(?P<repo_id>[^/]+)/$', upload_file_error),
|
||||||
(r'^repo/update_error/(?P<repo_id>[^/]+)/$', update_file_error),
|
(r'^repo/update_error/(?P<repo_id>[^/]+)/$', update_file_error),
|
||||||
url(r'^repo/file_revisions/(?P<repo_id>[^/]+)/$', file_revisions, name='file_revisions'),
|
url(r'^repo/file_revisions/(?P<repo_id>[^/]+)/$', file_revisions, name='file_revisions'),
|
||||||
|
33
views.py
33
views.py
@@ -2628,3 +2628,36 @@ def repo_star_file(request, repo_id):
|
|||||||
else:
|
else:
|
||||||
unstar_file(request.user.username, repo_id, path)
|
unstar_file(request.user.username, repo_id, path)
|
||||||
return HttpResponse(json.dumps({'success':True}), content_type=content_type)
|
return HttpResponse(json.dumps({'success':True}), content_type=content_type)
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def repo_download_dir(request, repo_id):
|
||||||
|
repo = get_repo(repo_id)
|
||||||
|
if not repo:
|
||||||
|
return render_error(request, _(u'Library not exists'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
parent_dir = request.GET['parent']
|
||||||
|
dirname = request.GET['dirname']
|
||||||
|
except KeyError:
|
||||||
|
return render_error(request, _(u'Invalid arguments'))
|
||||||
|
|
||||||
|
path = os.path.join(parent_dir, dirname.rstrip('/'))
|
||||||
|
|
||||||
|
permission = get_user_permission(request, repo_id)
|
||||||
|
if permission:
|
||||||
|
dir_id = seafserv_threaded_rpc.get_dirid_by_path (repo.head_cmmt_id,
|
||||||
|
path.encode('utf-8'))
|
||||||
|
token = seafserv_rpc.web_get_access_token(repo_id,
|
||||||
|
dir_id,
|
||||||
|
'download-dir',
|
||||||
|
request.user.username)
|
||||||
|
else:
|
||||||
|
return render_permission_error(request, _(u'Unable to access file'))
|
||||||
|
|
||||||
|
if len(path) > 1:
|
||||||
|
filename = os.path.basename(path)
|
||||||
|
else:
|
||||||
|
filename = repo.name
|
||||||
|
url = gen_file_get_url(token, filename)
|
||||||
|
|
||||||
|
return redirect(url)
|
||||||
|
Reference in New Issue
Block a user