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 %}
|
||||
<p class="error">{% trans "The owner of this library has run out of space." %}</p>
|
||||
{% 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 }}" />
|
||||
<div class="row fileupload-buttonbar">
|
||||
<div>
|
||||
@@ -90,6 +90,17 @@ form.fileupload({
|
||||
//singleFileUploads: false // using 1 request to upload all files of a selection
|
||||
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) {
|
||||
if (data.textStatus == 'success') {
|
||||
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})/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/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/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'),
|
||||
|
@@ -1475,6 +1475,7 @@ def view_shared_upload_link(request, token):
|
||||
return render_to_response('view_shared_upload_link.html', {
|
||||
'repo': repo,
|
||||
'token': token,
|
||||
'uploadlink': uploadlink,
|
||||
'path': path,
|
||||
'username': username,
|
||||
'dir_name': dir_name,
|
||||
|
@@ -26,6 +26,7 @@ from seahub.options.models import UserOptions, CryptoOptionNotSetError
|
||||
from seahub.notifications.models import UserNotification
|
||||
from seahub.notifications.views import add_notice_from_info
|
||||
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.views import get_repo_dirents, validate_owner, \
|
||||
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)
|
||||
|
||||
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
|
||||
def repo_history_changes(request, repo_id):
|
||||
changes = {}
|
||||
|
Reference in New Issue
Block a user