From 58f3284d4cf5e8b204d1bd5b17f3bc3769714e8a Mon Sep 17 00:00:00 2001 From: lins05 Date: Mon, 13 Aug 2012 15:24:31 +0800 Subject: [PATCH] use django form in new-dir/new-file --- forms.py | 52 ++++++++++++++++++++++++++++++++++++- templates/repo.html | 6 ++--- views.py | 62 +++++++++++++-------------------------------- 3 files changed, 72 insertions(+), 48 deletions(-) diff --git a/forms.py b/forms.py index b9616ebe4a..5a4141c27d 100644 --- a/forms.py +++ b/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): """ @@ -95,4 +98,51 @@ class RepoCreateForm(forms.Form): if passwd != passwd_again: 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)) + diff --git a/templates/repo.html b/templates/repo.html index 497c4dc41c..96bb4ea68e 100644 --- a/templates/repo.html +++ b/templates/repo.html @@ -196,12 +196,12 @@ {% if not view_history %} -
+ {% csrf_token %}

新目录名称:


-

输入不能为空。

+

输入不能为空

@@ -211,7 +211,7 @@
-

输入不能为空。

+

输入不能为空

diff --git a/views.py b/views.py index 8fffec286b..99b2e6d7ce 100644 --- a/views.py +++ b/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") - 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) + 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 + else: + return render_error(request, form.errors.values()[0]) new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name) @@ -1519,29 +1506,16 @@ 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") - 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) + 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 + else: + return render_error(request, form.errors.values()[0]) + new_file_name = check_filename_with_rename(repo_id, parent_dir, new_file_name) try: