mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 17:33:18 +00:00
[repo] fixed bug and improved code for setting, new file/dir, rename
This commit is contained in:
@@ -398,16 +398,14 @@ $('#repo-setting-form').submit(function() {
|
|||||||
success: function(data) {
|
success: function(data) {
|
||||||
if (data['success']) {
|
if (data['success']) {
|
||||||
location.reload(true);
|
location.reload(true);
|
||||||
} else {
|
|
||||||
apply_form_error('repo-setting-form', data['error']);
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(data, textStatus, jqXHR) {
|
error: function(jqXHR, textStatus, errorThrown) {
|
||||||
var errors = $.parseJSON(data.responseText);
|
if (jqXHR.responseText) {
|
||||||
$.each(errors, function(index, value) {
|
apply_form_error('repo-setting-form', $.parseJSON(jqXHR.responseText).error);
|
||||||
apply_form_error('repo-setting-form', value[0]);
|
} else {
|
||||||
});
|
apply_form_error('repo-setting-form', '{% trans "Failed. Please check the network." %}');
|
||||||
|
}
|
||||||
enable(submit_btn);
|
enable(submit_btn);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -764,76 +762,63 @@ function trimFilename(name, n) {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#add-new-file-form').submit(function() {
|
$('#add-new-file-form, #add-new-dir-form, #rename-form').submit(function() {
|
||||||
var new_file = $(this).find('input[name="new_file_name"]').val();
|
var form = $(this);
|
||||||
if (!$.trim(new_file)) {
|
var form_id = form.attr('id');
|
||||||
apply_form_error('add-new-file-form', "{% trans "File name can't be empty" %}");
|
var post_url = '';
|
||||||
return false;
|
var post_data = {
|
||||||
}
|
'repo_id': form.find('input[name="repo_id"]').val(),
|
||||||
|
'parent_dir': form.find('input[name="parent_dir"]').val(),
|
||||||
|
};
|
||||||
|
|
||||||
var submit_btn = $(this).children('input[type="submit"]');
|
if (form_id == 'add-new-file-form') {
|
||||||
disable(submit_btn);
|
var new_file =$.trim(form.find('input[name="new_file_name"]').val());
|
||||||
$.ajax({
|
if (!new_file) {
|
||||||
url: '{% url 'views.repo_new_file' %}',
|
apply_form_error(form_id, "{% trans "It can't be blank." %}");
|
||||||
type: 'POST',
|
return false;
|
||||||
dataType: 'json',
|
|
||||||
beforeSend: prepareCSRFToken,
|
|
||||||
data: {
|
|
||||||
'repo_id': $('#add-new-file-form input[name="repo_id"]').val(),
|
|
||||||
'parent_dir': $('#add-new-file-form input[name="parent_dir"]').val(),
|
|
||||||
'new_file_name': new_file
|
|
||||||
},
|
|
||||||
success: function(data) {
|
|
||||||
if (data['success']) {
|
|
||||||
location.reload(true);
|
|
||||||
} else {
|
|
||||||
apply_form_error('add-new-file-form', data['error']);
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(data, textStatus, jqXHR) {
|
|
||||||
var errors = $.parseJSON(data.responseText);
|
|
||||||
$.each(errors, function(index, value) {
|
|
||||||
apply_form_error('add-new-file-form', value[0]);
|
|
||||||
});
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
}
|
||||||
});
|
post_url = '{% url 'views.repo_new_file' %}';
|
||||||
return false;
|
post_data['new_file_name'] = new_file;
|
||||||
});
|
} else if (form_id == 'add-new-dir-form') {
|
||||||
|
var new_dir = $.trim(form.find('input[name="new_dir_name"]').val());
|
||||||
$('#add-new-dir-form').submit(function() {
|
if (!new_dir) {
|
||||||
var new_dir = $(this).find('input[name="new_dir_name"]').val();
|
apply_form_error(form_id, "{% trans "It can't be blank." %}");
|
||||||
if (!$.trim(new_dir)) {
|
return false;
|
||||||
apply_form_error('add-new-dir-form', "{% trans "Directory name can not be empty" %}");
|
}
|
||||||
return false;
|
post_url = '{% url 'views.repo_new_dir' %}';
|
||||||
|
post_data['new_dir_name'] = new_dir;
|
||||||
|
} else {
|
||||||
|
var new_name = $.trim(form.find('input[name="newname"]').val());
|
||||||
|
if (!new_name) {
|
||||||
|
apply_form_error(form_id, "{% trans "It can't be blank." %}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
post_url = '{% url 'views.repo_rename_file' %}';
|
||||||
|
post_data['oldname'] = form.find('input[name="oldname"]').val();
|
||||||
|
post_data['newname'] = new_name
|
||||||
}
|
}
|
||||||
|
|
||||||
var submit_btn = $(this).children('input[type="submit"]');
|
var submit_btn = form.children('input[type="submit"]');
|
||||||
disable(submit_btn);
|
disable(submit_btn);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '{% url 'views.repo_new_dir' %}',
|
url: post_url,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
beforeSend: prepareCSRFToken,
|
beforeSend: prepareCSRFToken,
|
||||||
data: {
|
data: post_data,
|
||||||
'repo_id': $('#add-new-dir-form input[name="repo_id"]').val(),
|
|
||||||
'parent_dir': $('#add-new-dir-form input[name="parent_dir"]').val(),
|
|
||||||
'new_dir_name': new_dir
|
|
||||||
},
|
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
if (data['success']) {
|
if (data['success']) {
|
||||||
location.reload(true);
|
location.reload(true);
|
||||||
} else {
|
|
||||||
apply_form_error('add-new-dir-form', data['error']);
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(data, textStatus, jqXHR) {
|
error: function(xhr, textStatus, errorThrown) {
|
||||||
var errors = $.parseJSON(data.responseText);
|
var err;
|
||||||
$.each(errors, function(index, value) {
|
if (xhr.responseText) {
|
||||||
apply_form_error('add-new-dir-form', value[0]);
|
err = $.parseJSON(xhr.responseText).error;
|
||||||
});
|
} else {
|
||||||
|
err = '{% trans "Failed. Please check the network." %}';
|
||||||
|
}
|
||||||
|
apply_form_error(form_id, err);
|
||||||
enable(submit_btn);
|
enable(submit_btn);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -912,47 +897,6 @@ $('#mv-dir-list h5').click(function() {
|
|||||||
next.addClass('hide');
|
next.addClass('hide');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#rename-form').submit(function() {
|
|
||||||
var new_name = $(this).find('input[name="newname"]').val();
|
|
||||||
if (!$.trim(new_name)) {
|
|
||||||
apply_form_error('rename-form', "{% trans "File name can't be empty" %}");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var submit_btn = $(this).children('input[type="submit"]');
|
|
||||||
disable(submit_btn);
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: '{% url 'views.repo_rename_file' %}',
|
|
||||||
type: 'POST',
|
|
||||||
dataType: 'json',
|
|
||||||
cache: false,
|
|
||||||
beforeSend: prepareCSRFToken,
|
|
||||||
data: {
|
|
||||||
'repo_id': $('#rename-form input[name="repo_id"]').val(),
|
|
||||||
'parent_dir': $('#rename-form input[name="parent_dir"]').val(),
|
|
||||||
'oldname': $('#rename-form input[name="oldname"]').val(),
|
|
||||||
'newname': new_name
|
|
||||||
},
|
|
||||||
success: function(data) {
|
|
||||||
if (data['success']) {
|
|
||||||
location.reload(true);
|
|
||||||
} else {
|
|
||||||
apply_form_error('rename-form', data['error']);
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(data, textStatus, jqXHR) {
|
|
||||||
var errors = $.parseJSON(data.responseText);
|
|
||||||
$.each(errors, function(index, value) {
|
|
||||||
apply_form_error('rename-form', value[0]);
|
|
||||||
});
|
|
||||||
enable(submit_btn);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
{% if path == '/' %}
|
{% if path == '/' %}
|
||||||
{% include "snippets/list_commit_detail.html" %}
|
{% include "snippets/list_commit_detail.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
50
views.py
50
views.py
@@ -535,7 +535,6 @@ def repo_recycle_view(request, repo_id):
|
|||||||
@ctx_switch_required
|
@ctx_switch_required
|
||||||
def repo_save_settings(request):
|
def repo_save_settings(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
ret = {}
|
|
||||||
content_type = 'application/json; charset=utf-8'
|
content_type = 'application/json; charset=utf-8'
|
||||||
|
|
||||||
form = RepoSettingForm(request.POST)
|
form = RepoSettingForm(request.POST)
|
||||||
@@ -545,16 +544,14 @@ def repo_save_settings(request):
|
|||||||
|
|
||||||
res = set_repo_history_limit(repo_id, days)
|
res = set_repo_history_limit(repo_id, days)
|
||||||
if res == 0:
|
if res == 0:
|
||||||
ret['success'] = True
|
messages.success(request, _(u'Settings saved.'))
|
||||||
|
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
|
||||||
else:
|
else:
|
||||||
ret['success'] = False
|
return HttpResponse(json.dumps({'error': _(u'Failed to save settings on server')}),
|
||||||
ret['error'] = _(u'Failed to save settings on server')
|
status=400, content_type=content_type)
|
||||||
else:
|
else:
|
||||||
ret['success'] = False
|
return HttpResponse(json.dumps({'error': str(form.errors.values()[0])}),
|
||||||
ret['error'] = str(form.errors.values()[0])
|
status=400, content_type=content_type)
|
||||||
|
|
||||||
return HttpResponse(json.dumps(ret),
|
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
def upload_error_msg (code):
|
def upload_error_msg (code):
|
||||||
err_msg = _(u'Internal Server Error')
|
err_msg = _(u'Internal Server Error')
|
||||||
@@ -2172,11 +2169,11 @@ def repo_new_dir(request):
|
|||||||
user = request.user.username
|
user = request.user.username
|
||||||
else:
|
else:
|
||||||
result['error'] = str(form.errors.values()[0])
|
result['error'] = str(form.errors.values()[0])
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
if get_user_permission(request, repo_id) != 'rw':
|
if get_user_permission(request, repo_id) != 'rw':
|
||||||
result['error'] = 'Permission denied'
|
result['error'] = _('Permission denied')
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name)
|
new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name)
|
||||||
|
|
||||||
@@ -2184,12 +2181,11 @@ def repo_new_dir(request):
|
|||||||
seafserv_threaded_rpc.post_dir(repo_id, parent_dir, new_dir_name, user)
|
seafserv_threaded_rpc.post_dir(repo_id, parent_dir, new_dir_name, user)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
result['error'] = str(e)
|
result['error'] = str(e)
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
url = reverse('repo', args=[repo_id]) + \
|
url = reverse('repo', args=[repo_id]) + \
|
||||||
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||||
return HttpResponse(json.dumps({'success': True}),
|
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def repo_new_file(request):
|
def repo_new_file(request):
|
||||||
@@ -2204,11 +2200,11 @@ def repo_new_file(request):
|
|||||||
user = request.user.username
|
user = request.user.username
|
||||||
else:
|
else:
|
||||||
result['error'] = str(form.errors.values()[0])
|
result['error'] = str(form.errors.values()[0])
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
if get_user_permission(request, repo_id) != 'rw':
|
if get_user_permission(request, repo_id) != 'rw':
|
||||||
result['error'] = 'Permission denied'
|
result['error'] = _('Permission denied')
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
new_file_name = check_filename_with_rename(repo_id, parent_dir,
|
new_file_name = check_filename_with_rename(repo_id, parent_dir,
|
||||||
new_file_name)
|
new_file_name)
|
||||||
@@ -2218,12 +2214,11 @@ def repo_new_file(request):
|
|||||||
new_file_name, user)
|
new_file_name, user)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
result['error'] = str(e)
|
result['error'] = str(e)
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
url = reverse('repo', args=[repo_id]) + \
|
url = reverse('repo', args=[repo_id]) + \
|
||||||
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||||
return HttpResponse(json.dumps({'success': True}),
|
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def repo_rename_file(request):
|
def repo_rename_file(request):
|
||||||
@@ -2239,11 +2234,11 @@ def repo_rename_file(request):
|
|||||||
user = request.user.username
|
user = request.user.username
|
||||||
else:
|
else:
|
||||||
result['error'] = str(form.errors.values()[0])
|
result['error'] = str(form.errors.values()[0])
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
if get_user_permission(request, repo_id) != 'rw':
|
if get_user_permission(request, repo_id) != 'rw':
|
||||||
result['error'] = 'Permission denied'
|
result['error'] = _('Permission denied')
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
if newname == oldname:
|
if newname == oldname:
|
||||||
return HttpResponse(json.dumps({'success': True}),
|
return HttpResponse(json.dumps({'success': True}),
|
||||||
@@ -2254,16 +2249,15 @@ def repo_rename_file(request):
|
|||||||
try:
|
try:
|
||||||
seafserv_threaded_rpc.rename_file (repo_id, parent_dir,
|
seafserv_threaded_rpc.rename_file (repo_id, parent_dir,
|
||||||
oldname, newname, user)
|
oldname, newname, user)
|
||||||
messages.success(request, _(u'Successfully rename %(old)s to %(new)s') % \
|
messages.success(request, _(u'Successfully renamed %(old)s to %(new)s') % \
|
||||||
{"old":oldname, "new":newname})
|
{"old":oldname, "new":newname})
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
result['error'] = str(e)
|
result['error'] = str(e)
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
|
||||||
|
|
||||||
url = reverse('repo', args=[repo_id]) + \
|
url = reverse('repo', args=[repo_id]) + \
|
||||||
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||||
return HttpResponse(json.dumps({'success': True}),
|
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def validate_filename(request):
|
def validate_filename(request):
|
||||||
|
Reference in New Issue
Block a user