1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-28 03:10:45 +00:00

[wiki] Updates and tests

This commit is contained in:
zhengxie 2018-02-09 11:56:48 +08:00
parent 642198cc80
commit 2103d80302
4 changed files with 26 additions and 8 deletions

View File

@ -69,6 +69,7 @@ class WikiManager(models.Manager):
if self.filter(slug=slug).count() > 0:
raise DuplicateWikiNameError
now = timezone.now()
if repo_id is None: # create new repo to store the wiki pages
if org_id > 0:
repo_id = seafile_api.create_org_repo(wiki_name, '', username,
@ -77,8 +78,12 @@ class WikiManager(models.Manager):
repo_id = seafile_api.create_repo(wiki_name, '', username,
passwd=None)
repo = seafile_api.get_repo(repo_id)
assert repo is not None
wiki = self.model(username=username, name=wiki_name, slug=slug,
repo_id=repo_id, permission=permission)
repo_id=repo.id, permission=permission,
created_at=now)
wiki.save(using=self._db)
return wiki
@ -88,9 +93,9 @@ class Wiki(models.Model):
personal wiki.
"""
PERM_CHOICES = (
('private', _('private')),
('public', _('public')),
('login-user', _('login user'))
('private', 'private'),
('public', 'public'),
('login-user', 'login user')
)
username = LowerCaseCharField(max_length=255)
@ -131,6 +136,7 @@ class Wiki(models.Model):
return {
'id': self.pk,
'name': self.name,
'slug': self.slug,
'link': self.link,
'permission': self.permission,
'created_at': datetime_to_isoformat_timestr(self.created_at),

View File

@ -172,9 +172,10 @@ def convert_wiki_link(content, url_prefix, repo_id, username):
return re.sub(r'\[\[(.+?)\]\]|(`.+?`)', repl, content)
def is_valid_wiki_name(name):
if len(name) > 255:
name = name.strip()
if len(name) > 255 or len(name) < 1:
return False
return re.match('^[\w\s-]+$', name, re.U)
return True if re.match('^[\w\s-]+$', name, re.U) else False
def slugfy_wiki_name(name):
return slugify(name, ok=SLUG_OK)

View File

@ -63,7 +63,8 @@ def slug(request, slug, page_name="home"):
# create missing page...
filename = page_name_to_file_name(clean_page_name(page_name))
if not seaserv.post_empty_file(repo.id, "/", filename, username):
return render_error(request, _("Failed to create wiki page. Please retry later."))
logger.error('Faied to post empty file.')
return render_error(request, _("Internal Server Error"))
# ...and redirect
return HttpResponseRedirect(reverse('wiki:slug', args=[slug, page_name]))

View File

@ -1,16 +1,26 @@
from seahub.wiki.models import Wiki
from seahub.utils.timeutils import dt
from seahub.test_utils import BaseTestCase
from seaserv import seafile_api
class WikiTest(BaseTestCase):
def test_to_dict(self):
wiki = Wiki.objects.add('new wiki', self.user.username)
d = wiki.to_dict()
assert 'wikis/new-wiki/' in d['link']
assert 'new-wiki' == d['slug']
assert 'T' in d['created_at']
assert 'T' in d['updated_at']
# clean
seafile_api.remove_repo(wiki.repo_id)
class WikiManagerTest(BaseTestCase):
def test_add(self):
wiki = Wiki.objects.add('new wiki', self.user.username)
assert wiki is not None
assert wiki.created_at.replace(microsecond=0) <= dt(wiki.updated_at)