From f9ac102378e9c8f7b8f08478f346675ada061724 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 15 Mar 2013 10:16:19 +0800 Subject: [PATCH] Let user choose wiki name and description --- group/forms.py | 26 +++++++++++- group/models.py | 23 ++++++++++- group/templates/group/group_wiki.html | 56 +++++++++++++++++++++++-- group/views.py | 59 ++++++++++++++++----------- media/css/seahub.css | 9 ++++ 5 files changed, 145 insertions(+), 28 deletions(-) diff --git a/group/forms.py b/group/forms.py index aa8c58b367..82c8c91fa0 100644 --- a/group/forms.py +++ b/group/forms.py @@ -2,8 +2,10 @@ import os from django import forms - +from django.conf import settings from django.utils.translation import ugettext_lazy as _ +from seaserv import is_valid_filename + from seahub.utils import validate_group_name class MessageForm(forms.Form): @@ -45,3 +47,25 @@ class GroupJoinMsgForm(forms.Form): 'max_length': _(u'Verification message is too long (maximun is 255 characters)'), }) +class WikiCreateForm(forms.Form): + """ + A form used to create wiki. + """ + repo_name = forms.CharField(max_length=settings.MAX_FILE_NAME, + error_messages={ + 'required': _(u'Name can\'t be empty'), + 'max_length': _(u'Name is too long (maximum is 255 characters)') + }) + repo_desc = forms.CharField(max_length=100, error_messages={ + 'required': _(u'Description can\'t be empty'), + 'max_length': _(u'Description is too long (maximum is 100 characters)') + }) + + def clean_repo_name(self): + repo_name = self.cleaned_data['repo_name'] + if not is_valid_filename(repo_name): + error_msg = _(u'"%s" is not a valid name') % repo_name + raise forms.ValidationError(error_msg) + else: + return repo_name + diff --git a/group/models.py b/group/models.py index 90ed7a143d..545bccc79e 100644 --- a/group/models.py +++ b/group/models.py @@ -85,4 +85,25 @@ def msgreply_save_handler(sender, instance, **kwargs): msg_type='grpmsg_reply', detail=group_msg.id) n.save() - + +class GroupWikiManager(models.Manager): + def save_group_wiki(self, group_id, repo_id): + """ + Create or update group wiki. + """ + try: + groupwiki = self.get(group_id=group_id) + groupwiki.repo_id = repo_id + except self.model.DoesNotExist: + groupwiki = self.model(group_id=group_id, repo_id=repo_id) + groupwiki.save(using=self._db) + return groupwiki + +class GroupWiki(models.Model): + group_id = models.IntegerField() + repo_id = models.CharField(max_length=36) + objects = GroupWikiManager() + + class Meta: + unique_together = ('group_id', 'repo_id') + diff --git a/group/templates/group/group_wiki.html b/group/templates/group/group_wiki.html index dfff5a1379..c994971672 100644 --- a/group/templates/group/group_wiki.html +++ b/group/templates/group/group_wiki.html @@ -29,8 +29,19 @@ {% if not wiki_exists %}

{% trans "This group currently has no wiki" %}

-

Wiki is a normal library with pre-defined file/folder structure. It enables group members to manage project documents or take notes using a simplified markup language called Markdown.{% trans "Create Wiki Now." %}

+

Wiki is a normal library with pre-defined file/folder structure. It enables group members to manage project documents or take notes using a simplified markup language called Markdown.{% trans "Create Wiki Now." %}

+
+

{% trans "Create Wiki"%}

+
+
+
+ + +

+ +
+ {% else %}