1
0
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:
xiez
2012-09-07 11:01:44 +08:00
parent 5bf1743882
commit 9b7528daa1
3 changed files with 166 additions and 46 deletions

View File

@@ -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': '参数错误'})

View File

@@ -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

View File

@@ -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):