mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-14 14:21:23 +00:00
use django form in new-dir/new-file
This commit is contained in:
50
forms.py
50
forms.py
@@ -5,6 +5,9 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from seaserv import ccnet_rpc, ccnet_threaded_rpc, is_valid_filename
|
||||
|
||||
from seahub.base.accounts import User
|
||||
from pysearpc import SearpcError
|
||||
|
||||
import settings
|
||||
|
||||
class AddUserForm(forms.Form):
|
||||
"""
|
||||
@@ -96,3 +99,50 @@ class RepoCreateForm(forms.Form):
|
||||
raise forms.ValidationError("两次输入的密码不一致")
|
||||
return self.cleaned_data
|
||||
|
||||
|
||||
class RepoNewFileForm(forms.Form):
|
||||
"""
|
||||
Form for create a new empty file
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': '参数错误'})
|
||||
parent_dir = forms.CharField(error_messages={'required': '参数错误'})
|
||||
new_file_name = forms.CharField(max_length=settings.MAX_UPLOAD_FILE_NAME_LEN,
|
||||
error_messages={
|
||||
'max_length': '新文件名太长',
|
||||
'required': '新文件名不能为空',
|
||||
})
|
||||
|
||||
def clean_new_file_name(self):
|
||||
new_file_name = self.cleaned_data['new_file_name']
|
||||
try:
|
||||
if not is_valid_filename(new_file_name):
|
||||
error_msg = u"您输入的文件名 %s 包含非法字符" % new_file_name
|
||||
raise forms.ValidationError(error_msg)
|
||||
else:
|
||||
return new_file_name
|
||||
except SearpcError, e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
class RepoNewDirForm(forms.Form):
|
||||
"""
|
||||
Form for create a new empty dir
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': '参数错误'})
|
||||
parent_dir = forms.CharField(error_messages={'required': '参数错误'})
|
||||
new_dir_name = forms.CharField(max_length=settings.MAX_UPLOAD_FILE_NAME_LEN,
|
||||
error_messages={
|
||||
'max_length': '新目录名太长',
|
||||
'required': '新目录名不能为空',
|
||||
})
|
||||
|
||||
def clean_new_dir_name(self):
|
||||
new_dir_name = self.cleaned_data['new_dir_name']
|
||||
try:
|
||||
if not is_valid_filename(new_dir_name):
|
||||
error_msg = u"您输入的目录名 %s 包含非法字符" % new_dir_name
|
||||
raise forms.ValidationError(error_msg)
|
||||
else:
|
||||
return new_dir_name
|
||||
except SearpcError, e:
|
||||
raise forms.ValidationError(str(e))
|
||||
|
||||
|
@@ -196,12 +196,12 @@
|
||||
</div>
|
||||
|
||||
{% if not view_history %}
|
||||
<form id="add-new-dir-form" action="{{ SITE_ROOT}}repo/new_dir/" method="post" class="hide">
|
||||
<form id="add-new-dir-form" action="{{ SITE_ROOT}}repo/new_dir/" 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>
|
||||
@@ -211,7 +211,7 @@
|
||||
<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>
|
||||
|
60
views.py
60
views.py
@@ -42,7 +42,7 @@ from seahub.contacts.models import Contact
|
||||
from seahub.contacts.signals import mail_sended
|
||||
from seahub.notifications.models import UserNotification
|
||||
from seahub.organizations.utils import access_org_repo
|
||||
from forms import AddUserForm, FileLinkShareForm, RepoCreateForm
|
||||
from forms import AddUserForm, FileLinkShareForm, RepoCreateForm, RepoNewDirForm, RepoNewFileForm
|
||||
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, \
|
||||
@@ -1484,28 +1484,15 @@ def file_upload_progress_page(request):
|
||||
|
||||
@login_required
|
||||
def repo_new_dir(request):
|
||||
repo_id = request.POST.get("repo_id")
|
||||
parent_dir = request.POST.get("parent_dir")
|
||||
new_dir_name = request.POST.get("new_dir_name")
|
||||
|
||||
form = RepoNewDirForm(request.POST)
|
||||
if form.is_valid():
|
||||
repo_id = form.cleaned_data["repo_id"]
|
||||
parent_dir = form.cleaned_data["parent_dir"]
|
||||
new_dir_name = form.cleaned_data["new_dir_name"]
|
||||
user = request.user.username
|
||||
|
||||
if not new_dir_name:
|
||||
error_msg = u"请输入新目录名"
|
||||
return render_error(request, error_msg)
|
||||
|
||||
if not (repo_id and parent_dir and user):
|
||||
return render_error(request)
|
||||
|
||||
if len(new_dir_name) > settings.MAX_UPLOAD_FILE_NAME_LEN:
|
||||
error_msg = u"您输入的目录名称过长"
|
||||
return render_error (request, error_msg)
|
||||
|
||||
try:
|
||||
if not is_valid_filename(new_dir_name):
|
||||
error_msg = (u"您输入的目录名称 %s 包含非法字符" % new_dir_name)
|
||||
return render_error (request, error_msg)
|
||||
except SearpcError,e:
|
||||
return render_error (request, e.msg)
|
||||
else:
|
||||
return render_error(request, form.errors.values()[0])
|
||||
|
||||
new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name)
|
||||
|
||||
@@ -1519,28 +1506,15 @@ def repo_new_dir(request):
|
||||
|
||||
@login_required
|
||||
def repo_new_file(request):
|
||||
repo_id = request.POST.get("repo_id")
|
||||
parent_dir = request.POST.get("parent_dir")
|
||||
new_file_name = request.POST.get("new_file_name")
|
||||
|
||||
form = RepoNewFileForm(request.POST)
|
||||
if form.is_valid():
|
||||
repo_id = form.cleaned_data["repo_id"]
|
||||
parent_dir = form.cleaned_data["parent_dir"]
|
||||
new_file_name = form.cleaned_data["new_file_name"]
|
||||
user = request.user.username
|
||||
|
||||
if not new_file_name:
|
||||
error_msg = u"请输入文件名"
|
||||
return render_error(request, error_msg)
|
||||
|
||||
if not (repo_id and parent_dir and user):
|
||||
return render_error(request)
|
||||
|
||||
if len(new_file_name) > settings.MAX_UPLOAD_FILE_NAME_LEN:
|
||||
error_msg = u"您输入的文件名过长"
|
||||
return render_error (request, error_msg)
|
||||
|
||||
try:
|
||||
if not is_valid_filename(new_file_name):
|
||||
error_msg = (u"您输入的文件 %s 包含非法字符" % new_file_name)
|
||||
return render_error (request, error_msg)
|
||||
except SearpcError,e:
|
||||
return render_error (request, e.msg)
|
||||
else:
|
||||
return render_error(request, form.errors.values()[0])
|
||||
|
||||
new_file_name = check_filename_with_rename(repo_id, parent_dir, new_file_name)
|
||||
|
||||
|
Reference in New Issue
Block a user