mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-17 15:53:28 +00:00
Fix multi-upload in dir share link
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
{% if no_quota %}
|
{% if no_quota %}
|
||||||
<p class="error">{% trans "The owner of this library has run out of space." %}</p>
|
<p class="error">{% trans "The owner of this library has run out of space." %}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form id="upload-file-form" enctype="multipart/form-data" method="post" action="{{ajax_upload_url}}">{% csrf_token %}
|
<form id="upload-file-form" enctype="multipart/form-data" method="post" action="">{% csrf_token %}
|
||||||
<input type="hidden" name="parent_dir" value="{{ path }}" />
|
<input type="hidden" name="parent_dir" value="{{ path }}" />
|
||||||
<div class="row fileupload-buttonbar">
|
<div class="row fileupload-buttonbar">
|
||||||
<div>
|
<div>
|
||||||
@@ -90,6 +90,17 @@ form.fileupload({
|
|||||||
//singleFileUploads: false // using 1 request to upload all files of a selection
|
//singleFileUploads: false // using 1 request to upload all files of a selection
|
||||||
sequentialUploads: true
|
sequentialUploads: true
|
||||||
})
|
})
|
||||||
|
.bind('fileuploadadd', function(e, data) {
|
||||||
|
// get url(token) for every file
|
||||||
|
$.ajax({
|
||||||
|
url: '{% url 'get_file_upload_url_ul' uploadlink.token %}?&r={{uploadlink.repo_id }}',
|
||||||
|
cache: false,
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(ret) {
|
||||||
|
data.url = ret['url'];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
.bind('fileuploaddone', function(e, data) {
|
.bind('fileuploaddone', function(e, data) {
|
||||||
if (data.textStatus == 'success') {
|
if (data.textStatus == 'success') {
|
||||||
var filename = "";
|
var filename = "";
|
||||||
|
@@ -138,6 +138,7 @@ urlpatterns = patterns('',
|
|||||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/history/changes/$', repo_history_changes, name='repo_history_changes'),
|
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/history/changes/$', repo_history_changes, name='repo_history_changes'),
|
||||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/encrypted_file/(?P<file_id>[0-9a-f]{40})/download/$', download_enc_file, name='download_enc_file'),
|
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/encrypted_file/(?P<file_id>[0-9a-f]{40})/download/$', download_enc_file, name='download_enc_file'),
|
||||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/file_op_url/$', get_file_op_url, name='get_file_op_url'),
|
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/file_op_url/$', get_file_op_url, name='get_file_op_url'),
|
||||||
|
url(r'^ajax/u/d/(?P<token>[-0-9a-f]{10})/upload/$', get_file_upload_url_ul, name='get_file_upload_url_ul'),
|
||||||
url(r'^ajax/group/(?P<group_id>\d+)/repos/$', get_unenc_group_repos, name='get_group_repos'),
|
url(r'^ajax/group/(?P<group_id>\d+)/repos/$', get_unenc_group_repos, name='get_group_repos'),
|
||||||
url(r'^ajax/my-unenc-repos/$', get_my_unenc_repos, name='get_my_unenc_repos'),
|
url(r'^ajax/my-unenc-repos/$', get_my_unenc_repos, name='get_my_unenc_repos'),
|
||||||
url(r'^ajax/unenc-rw-repos/$', unenc_rw_repos, name='unenc_rw_repos'),
|
url(r'^ajax/unenc-rw-repos/$', unenc_rw_repos, name='unenc_rw_repos'),
|
||||||
|
@@ -1475,6 +1475,7 @@ def view_shared_upload_link(request, token):
|
|||||||
return render_to_response('view_shared_upload_link.html', {
|
return render_to_response('view_shared_upload_link.html', {
|
||||||
'repo': repo,
|
'repo': repo,
|
||||||
'token': token,
|
'token': token,
|
||||||
|
'uploadlink': uploadlink,
|
||||||
'path': path,
|
'path': path,
|
||||||
'username': username,
|
'username': username,
|
||||||
'dir_name': dir_name,
|
'dir_name': dir_name,
|
||||||
|
@@ -26,6 +26,7 @@ from seahub.options.models import UserOptions, CryptoOptionNotSetError
|
|||||||
from seahub.notifications.models import UserNotification
|
from seahub.notifications.models import UserNotification
|
||||||
from seahub.notifications.views import add_notice_from_info
|
from seahub.notifications.views import add_notice_from_info
|
||||||
from seahub.message.models import UserMessage
|
from seahub.message.models import UserMessage
|
||||||
|
from seahub.share.models import UploadLinkShare
|
||||||
from seahub.signals import upload_file_successful, repo_created, repo_deleted
|
from seahub.signals import upload_file_successful, repo_created, repo_deleted
|
||||||
from seahub.views import get_repo_dirents, validate_owner, \
|
from seahub.views import get_repo_dirents, validate_owner, \
|
||||||
check_repo_access_permission, get_unencry_rw_repos_by_user, \
|
check_repo_access_permission, get_unencry_rw_repos_by_user, \
|
||||||
@@ -1554,6 +1555,35 @@ def get_file_op_url(request, repo_id):
|
|||||||
|
|
||||||
return HttpResponse(json.dumps({"url": url}), content_type=content_type)
|
return HttpResponse(json.dumps({"url": url}), content_type=content_type)
|
||||||
|
|
||||||
|
def get_file_upload_url_ul(request, token):
|
||||||
|
"""Get file upload url in dir upload link.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
- `request`:
|
||||||
|
- `token`:
|
||||||
|
"""
|
||||||
|
if not request.is_ajax():
|
||||||
|
raise Http404
|
||||||
|
|
||||||
|
content_type = 'application/json; charset=utf-8'
|
||||||
|
|
||||||
|
uls = UploadLinkShare.objects.get_valid_upload_link_by_token(token)
|
||||||
|
if uls is None:
|
||||||
|
return HttpResponse(json.dumps({"error": _("Bad upload link token.")}),
|
||||||
|
status=400, content_type=content_type)
|
||||||
|
|
||||||
|
repo_id = uls.repo_id
|
||||||
|
r = request.GET.get('r', '')
|
||||||
|
if repo_id != r: # perm check
|
||||||
|
return HttpResponse(json.dumps({"error": _("Bad repo id in upload link.")}),
|
||||||
|
status=403, content_type=content_type)
|
||||||
|
|
||||||
|
acc_token = seafile_api.get_fileserver_access_token(repo_id, 'dummy',
|
||||||
|
'upload',
|
||||||
|
request.user.username)
|
||||||
|
url = gen_file_upload_url(acc_token, 'upload-aj')
|
||||||
|
return HttpResponse(json.dumps({"url": url}), content_type=content_type)
|
||||||
|
|
||||||
@login_required_ajax
|
@login_required_ajax
|
||||||
def repo_history_changes(request, repo_id):
|
def repo_history_changes(request, repo_id):
|
||||||
changes = {}
|
changes = {}
|
||||||
|
Reference in New Issue
Block a user