mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 17:33:18 +00:00
Show error msg in ajax when add/rename file or dir
This commit is contained in:
28
forms.py
28
forms.py
@@ -110,7 +110,7 @@ class RepoCreateForm(forms.Form):
|
||||
|
||||
class RepoNewFileForm(forms.Form):
|
||||
"""
|
||||
Form for create a new empty file
|
||||
Form for create a new empty file.
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': '参数错误'})
|
||||
parent_dir = forms.CharField(error_messages={'required': '参数错误'})
|
||||
@@ -131,9 +131,33 @@ class RepoNewFileForm(forms.Form):
|
||||
except SearpcError, e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
class RepoRenameFileForm(forms.Form):
|
||||
"""
|
||||
Form for rename a file.
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': '参数错误'})
|
||||
parent_dir = forms.CharField(error_messages={'required': '参数错误'})
|
||||
oldname = forms.CharField(error_messages={'required': '参数错误'})
|
||||
newname = forms.CharField(max_length=settings.MAX_UPLOAD_FILE_NAME_LEN,
|
||||
error_messages={
|
||||
'max_length': '新文件名太长',
|
||||
'required': '新文件名不能为空',
|
||||
})
|
||||
|
||||
def clean_newname(self):
|
||||
newname = self.cleaned_data['newname']
|
||||
try:
|
||||
if not is_valid_filename(newname):
|
||||
error_msg = u"您输入的文件名 %s 包含非法字符" % newname
|
||||
raise forms.ValidationError(error_msg)
|
||||
else:
|
||||
return newname
|
||||
except SearpcError, e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
class RepoNewDirForm(forms.Form):
|
||||
"""
|
||||
Form for create a new empty dir
|
||||
Form for create a new empty dir.
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': '参数错误'})
|
||||
parent_dir = forms.CharField(error_messages={'required': '参数错误'})
|
||||
|
@@ -197,22 +197,22 @@
|
||||
</div>
|
||||
|
||||
{% if not view_history %}
|
||||
<form id="add-new-dir-form" action="{{ SITE_ROOT}}repo/new_dir/" method="post" class="hide">{% csrf_token %}
|
||||
<form id="add-new-dir-form" action="" method="post" class="hide">{% csrf_token %}
|
||||
<h4>新目录名称:</h4>
|
||||
<input type="hidden" name="repo_id" value="{{ repo.id }}" />
|
||||
<input type="hidden" name="parent_dir" value="{{ path }}" />
|
||||
<input type="text" name="new_dir_name" value="" /><br />
|
||||
<p class="error hide">输入不能为空</p>
|
||||
<p class="error hide"></p>
|
||||
<input type="submit" value="提交" class="submit" />
|
||||
<button class="simplemodal-close">取消</button>
|
||||
</form>
|
||||
|
||||
<form id="add-new-file-form" action="{{ SITE_ROOT}}repo/new_file/" method="post" class="hide">{% csrf_token %}
|
||||
<form id="add-new-file-form" action="" method="post" class="hide">{% csrf_token %}
|
||||
<h4>新文件名称:</h4>
|
||||
<input type="hidden" name="repo_id" value="{{ repo.id }}" />
|
||||
<input type="hidden" name="parent_dir" value="{{ path }}" />
|
||||
<input type="text" name="new_file_name" value="" /><br />
|
||||
<p class="error hide">输入不能为空</p>
|
||||
<p class="error hide"></p>
|
||||
<input type="submit" value="提交" class="submit" />
|
||||
<button class="simplemodal-close">取消</button>
|
||||
</form>
|
||||
@@ -238,7 +238,7 @@
|
||||
<input type="hidden" name="parent_dir" value="{{ path }}" />
|
||||
<input type="hidden" name="oldname" value="" />
|
||||
<input type="text" name="newname" value="" class="new-name" /><br />
|
||||
<p class="error hide">输入不能为空。</p>
|
||||
<p class="error hide"></p>
|
||||
<input type="submit" value="提交" class="submit" />
|
||||
<button class="simplemodal-close">取消</button>
|
||||
</form>
|
||||
@@ -398,13 +398,94 @@ $('.file-cp, .file-mv, .dir-cp, .dir-mv').click(function () {
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#add-new-dir-form .submit, #add-new-file-form .submit, #rename-form .submit').click(function() {
|
||||
if (!$.trim($(this).prev().prev().prev().val())) {//if the input is empty
|
||||
$(this).prev().removeClass('hide');//show error msg
|
||||
$('#simplemodal-container').css('height', $(this).parent().height());
|
||||
return false;
|
||||
$('#rename-form .submit').click(function() {
|
||||
$.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': $('#rename-form input[name="newname"]').val()
|
||||
},
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
apply_form_error('rename-form', data['error']);
|
||||
}
|
||||
},
|
||||
error: function(data, textStatus, jqXHR) {
|
||||
var errors = $.parseJSON(data.responseText);
|
||||
$.each(errors, function(index, value) {
|
||||
apply_form_error('rename-form', value[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#add-new-file-form .submit').click(function() {
|
||||
$.ajax({
|
||||
url: '{% url 'views.repo_new_file' %}',
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
cache: 'false',
|
||||
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': $('#add-new-file-form input[name="new_file_name"]').val()
|
||||
},
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
apply_form_error('add-new-file-form', data['error']);
|
||||
}
|
||||
},
|
||||
error: function(data, textStatus, jqXHR) {
|
||||
var errors = $.parseJSON(data.responseText);
|
||||
$.each(errors, function(index, value) {
|
||||
apply_form_error('add-new-file-form', value[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#add-new-dir-form .submit').click(function() {
|
||||
$.ajax({
|
||||
url: '{% url 'views.repo_new_dir' %}',
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
cache: 'false',
|
||||
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': $('#add-new-dir-form input[name="new_dir_name"]').val()
|
||||
},
|
||||
success: function(data) {
|
||||
if (data['success']) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
apply_form_error('add-new-dir-form', data['error']);
|
||||
}
|
||||
},
|
||||
error: function(data, textStatus, jqXHR) {
|
||||
var errors = $.parseJSON(data.responseText);
|
||||
$.each(errors, function(index, value) {
|
||||
apply_form_error('add-new-dir-form', value[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#mv-form .submit').click(function() {
|
||||
if (!$.trim($(this).prev().prev().val())) {//if the input is empty
|
||||
$(this).prev().removeClass('hide');//show error msg
|
||||
|
79
views.py
79
views.py
@@ -47,7 +47,7 @@ from group.models import GroupMessage, MessageAttachment
|
||||
from group.signals import grpmsg_added
|
||||
from seahub.notifications.models import UserNotification
|
||||
from forms import AddUserForm, FileLinkShareForm, RepoCreateForm, \
|
||||
RepoNewDirForm, RepoNewFileForm, FileCommentForm
|
||||
RepoNewDirForm, RepoNewFileForm, FileCommentForm, RepoRenameFileForm
|
||||
from utils import render_permission_error, render_error, list_to_string, \
|
||||
get_httpserver_root, get_ccnetapplet_root, gen_token, \
|
||||
calculate_repo_last_modify, valid_previewed_file, \
|
||||
@@ -1610,6 +1610,8 @@ def file_upload_progress_page(request):
|
||||
|
||||
@login_required
|
||||
def repo_new_dir(request):
|
||||
result = {}
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
form = RepoNewDirForm(request.POST)
|
||||
if form.is_valid():
|
||||
@@ -1618,20 +1620,26 @@ def repo_new_dir(request):
|
||||
new_dir_name = form.cleaned_data["new_dir_name"]
|
||||
user = request.user.username
|
||||
else:
|
||||
return render_error(request, form.errors.values()[0])
|
||||
result['error'] = str(form.errors.values()[0])
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name)
|
||||
|
||||
try:
|
||||
seafserv_threaded_rpc.post_dir(repo_id, parent_dir, new_dir_name, user)
|
||||
except Exception, e:
|
||||
return render_error(request, str(e))
|
||||
result['error'] = str(e)
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
url = reverse('repo', args=[repo_id]) + ('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||
return HttpResponseRedirect(url)
|
||||
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)
|
||||
|
||||
@login_required
|
||||
def repo_new_file(request):
|
||||
result = {}
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
form = RepoNewFileForm(request.POST)
|
||||
if form.is_valid():
|
||||
@@ -1640,52 +1648,59 @@ def repo_new_file(request):
|
||||
new_file_name = form.cleaned_data["new_file_name"]
|
||||
user = request.user.username
|
||||
else:
|
||||
return render_error(request, form.errors.values()[0])
|
||||
result['error'] = str(form.errors.values()[0])
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
new_file_name = check_filename_with_rename(repo_id, parent_dir, new_file_name)
|
||||
new_file_name = check_filename_with_rename(repo_id, parent_dir,
|
||||
new_file_name)
|
||||
|
||||
try:
|
||||
seafserv_threaded_rpc.post_empty_file(repo_id, parent_dir, new_file_name, user)
|
||||
seafserv_threaded_rpc.post_empty_file(repo_id, parent_dir,
|
||||
new_file_name, user)
|
||||
except Exception, e:
|
||||
return render_error(request, str(e))
|
||||
result['error'] = str(e)
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
url = reverse('repo', args=[repo_id]) + ('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||
return HttpResponseRedirect(url)
|
||||
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)
|
||||
|
||||
@login_required
|
||||
def repo_rename_file(request):
|
||||
repo_id = request.POST.get("repo_id")
|
||||
parent_dir = request.POST.get("parent_dir")
|
||||
oldname = request.POST.get("oldname")
|
||||
newname = request.POST.get("newname")
|
||||
user = request.user.username
|
||||
result = {}
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
if not newname:
|
||||
error_msg = u"新文件名不能为空"
|
||||
return render_error(request, error_msg)
|
||||
form = RepoRenameFileForm(request.POST)
|
||||
if form.is_valid():
|
||||
repo_id = form.cleaned_data["repo_id"]
|
||||
parent_dir = form.cleaned_data["parent_dir"]
|
||||
oldname = form.cleaned_data["oldname"]
|
||||
newname = form.cleaned_data["newname"]
|
||||
user = request.user.username
|
||||
else:
|
||||
result['error'] = str(form.errors.values()[0])
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
if newname == oldname:
|
||||
url = reverse('repo', args=[repo_id]) + ('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||
return HttpResponseRedirect(url)
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type=content_type)
|
||||
|
||||
newname = check_filename_with_rename(repo_id, parent_dir, newname)
|
||||
|
||||
if len(newname) > settings.MAX_UPLOAD_FILE_NAME_LEN:
|
||||
error_msg = u"新文件名太长"
|
||||
return render_error(request, error_msg)
|
||||
|
||||
if not (repo_id and parent_dir and oldname):
|
||||
return render_error(request)
|
||||
|
||||
try:
|
||||
seafserv_threaded_rpc.rename_file (repo_id, parent_dir,
|
||||
oldname, newname, user)
|
||||
messages.add_message(request, messages.INFO, u'%s 已重命名为 %s。' % (oldname, newname))
|
||||
messages.add_message(request, messages.INFO, u'%s 已重命名为 %s。' % \
|
||||
(oldname, newname))
|
||||
except Exception, e:
|
||||
return render_error(request, str(e))
|
||||
result['error'] = str(e)
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
url = reverse('repo', args=[repo_id]) + ('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
|
||||
return HttpResponseRedirect(url)
|
||||
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)
|
||||
|
||||
@login_required
|
||||
def validate_filename(request):
|
||||
|
Reference in New Issue
Block a user