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:
parent
642198cc80
commit
2103d80302
@ -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),
|
||||
|
@ -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)
|
||||
|
@ -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]))
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user