mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-29 04:01:24 +00:00
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
import stat
|
||
|
|
||
|
import seaserv
|
||
|
from seahub.utils import EMPTY_SHA1
|
||
|
from seahub.utils.repo import list_dir_by_path
|
||
|
from seahub.utils.slugify import slugify
|
||
|
|
||
|
SLUG_OK = "!@#$%^&()_+-,.;'"
|
||
|
def normalize_page_name(page_name):
|
||
|
# Remove special characters. Lower page name and replace spaces with '-'.
|
||
|
return slugify(page_name, ok=SLUG_OK)
|
||
|
|
||
|
def clean_page_name(page_name):
|
||
|
# Remove special characters. Do not lower page name and spaces are allowed.
|
||
|
return slugify(page_name, ok=SLUG_OK, lower=False, spaces=True)
|
||
|
|
||
|
def get_wiki_dirent(repo_id, page_name):
|
||
|
file_name = page_name + ".md"
|
||
|
repo = seaserv.get_repo(repo_id)
|
||
|
if not repo:
|
||
|
return None
|
||
|
cmmt = seaserv.get_commits(repo.id, 0, 1)[0]
|
||
|
if cmmt is None:
|
||
|
return None
|
||
|
dirs = list_dir_by_path(cmmt, "/")
|
||
|
if not dirs:
|
||
|
return None
|
||
|
else:
|
||
|
for e in dirs:
|
||
|
if stat.S_ISDIR(e.mode):
|
||
|
continue # skip directories
|
||
|
if normalize_page_name(file_name) == normalize_page_name(e.obj_name):
|
||
|
return e
|
||
|
return None
|
||
|
|
||
|
|
||
|
|