mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-17 14:37:58 +00:00
[wiki] Updates and tests
This commit is contained in:
parent
642198cc80
commit
2103d80302
@ -69,6 +69,7 @@ class WikiManager(models.Manager):
|
|||||||
if self.filter(slug=slug).count() > 0:
|
if self.filter(slug=slug).count() > 0:
|
||||||
raise DuplicateWikiNameError
|
raise DuplicateWikiNameError
|
||||||
|
|
||||||
|
now = timezone.now()
|
||||||
if repo_id is None: # create new repo to store the wiki pages
|
if repo_id is None: # create new repo to store the wiki pages
|
||||||
if org_id > 0:
|
if org_id > 0:
|
||||||
repo_id = seafile_api.create_org_repo(wiki_name, '', username,
|
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,
|
repo_id = seafile_api.create_repo(wiki_name, '', username,
|
||||||
passwd=None)
|
passwd=None)
|
||||||
|
|
||||||
|
repo = seafile_api.get_repo(repo_id)
|
||||||
|
assert repo is not None
|
||||||
|
|
||||||
wiki = self.model(username=username, name=wiki_name, slug=slug,
|
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)
|
wiki.save(using=self._db)
|
||||||
return wiki
|
return wiki
|
||||||
|
|
||||||
@ -88,9 +93,9 @@ class Wiki(models.Model):
|
|||||||
personal wiki.
|
personal wiki.
|
||||||
"""
|
"""
|
||||||
PERM_CHOICES = (
|
PERM_CHOICES = (
|
||||||
('private', _('private')),
|
('private', 'private'),
|
||||||
('public', _('public')),
|
('public', 'public'),
|
||||||
('login-user', _('login user'))
|
('login-user', 'login user')
|
||||||
)
|
)
|
||||||
|
|
||||||
username = LowerCaseCharField(max_length=255)
|
username = LowerCaseCharField(max_length=255)
|
||||||
@ -131,6 +136,7 @@ class Wiki(models.Model):
|
|||||||
return {
|
return {
|
||||||
'id': self.pk,
|
'id': self.pk,
|
||||||
'name': self.name,
|
'name': self.name,
|
||||||
|
'slug': self.slug,
|
||||||
'link': self.link,
|
'link': self.link,
|
||||||
'permission': self.permission,
|
'permission': self.permission,
|
||||||
'created_at': datetime_to_isoformat_timestr(self.created_at),
|
'created_at': datetime_to_isoformat_timestr(self.created_at),
|
||||||
|
@ -172,9 +172,10 @@ def convert_wiki_link(content, url_prefix, repo_id, username):
|
|||||||
return re.sub(r'\[\[(.+?)\]\]|(`.+?`)', repl, content)
|
return re.sub(r'\[\[(.+?)\]\]|(`.+?`)', repl, content)
|
||||||
|
|
||||||
def is_valid_wiki_name(name):
|
def is_valid_wiki_name(name):
|
||||||
if len(name) > 255:
|
name = name.strip()
|
||||||
|
if len(name) > 255 or len(name) < 1:
|
||||||
return False
|
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):
|
def slugfy_wiki_name(name):
|
||||||
return slugify(name, ok=SLUG_OK)
|
return slugify(name, ok=SLUG_OK)
|
||||||
|
@ -63,7 +63,8 @@ def slug(request, slug, page_name="home"):
|
|||||||
# create missing page...
|
# create missing page...
|
||||||
filename = page_name_to_file_name(clean_page_name(page_name))
|
filename = page_name_to_file_name(clean_page_name(page_name))
|
||||||
if not seaserv.post_empty_file(repo.id, "/", filename, username):
|
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
|
# ...and redirect
|
||||||
return HttpResponseRedirect(reverse('wiki:slug', args=[slug, page_name]))
|
return HttpResponseRedirect(reverse('wiki:slug', args=[slug, page_name]))
|
||||||
|
|
||||||
|
@ -1,16 +1,26 @@
|
|||||||
from seahub.wiki.models import Wiki
|
from seahub.wiki.models import Wiki
|
||||||
|
from seahub.utils.timeutils import dt
|
||||||
from seahub.test_utils import BaseTestCase
|
from seahub.test_utils import BaseTestCase
|
||||||
|
|
||||||
from seaserv import seafile_api
|
from seaserv import seafile_api
|
||||||
|
|
||||||
|
|
||||||
class WikiTest(BaseTestCase):
|
class WikiTest(BaseTestCase):
|
||||||
def test_to_dict(self):
|
def test_to_dict(self):
|
||||||
wiki = Wiki.objects.add('new wiki', self.user.username)
|
wiki = Wiki.objects.add('new wiki', self.user.username)
|
||||||
|
|
||||||
d = wiki.to_dict()
|
d = wiki.to_dict()
|
||||||
assert 'wikis/new-wiki/' in d['link']
|
assert 'wikis/new-wiki/' in d['link']
|
||||||
|
assert 'new-wiki' == d['slug']
|
||||||
assert 'T' in d['created_at']
|
assert 'T' in d['created_at']
|
||||||
assert 'T' in d['updated_at']
|
assert 'T' in d['updated_at']
|
||||||
|
|
||||||
# clean
|
|
||||||
seafile_api.remove_repo(wiki.repo_id)
|
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user