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