def repl(matchobj): if matchobj.group(2): # return origin string in backquotes return matchobj.group(2) link_alias = link_name = matchobj.group(1).strip() if len(link_name.split('|')) > 1: link_alias = link_name.split('|')[0] link_name = link_name.split('|')[1] filetype, fileext = get_file_type_and_ext(link_name) if fileext == '': # convert link_name that extension is missing to a markdown page try: dirent = get_wiki_dirent(repo_id, link_name) path = "/" + dirent.obj_name href = reverse('repo_view_file', args=[repo_id]) + '?p=' + urlquote(path) a_tag = '''<a href="%s">%s</a>''' return a_tag % (href, link_alias) except (WikiDoesNotExist, WikiPageMissing): a_tag = '''<p class="wiki-page-missing">%s</p>''' return a_tag % (link_alias) elif filetype == IMAGE: # load image to current page path = "/" + link_name filename = os.path.basename(path) obj_id = get_file_id_by_path(repo_id, path) if not obj_id: return '''<p class="wiki-page-missing">%s</p>''' % link_name token = web_get_access_token(repo_id, obj_id, 'view', username) return '<img class="wiki-image" src="%s" alt="%s" />' % ( gen_file_get_url(token, filename), filename) else: from seahub.base.templatetags.seahub_tags import file_icon_filter # convert other types of filelinks to clickable links path = "/" + link_name icon = file_icon_filter(link_name) s = reverse('repo_view_file', args=[repo_id ]) + '?p=' + urlquote(path) a_tag = '''<img src="%simg/file/%s" alt="%s" class="vam" /> <a href="%s" target="_blank" class="vam">%s</a>''' return a_tag % (MEDIA_URL, icon, icon, s, link_name)
def repl(matchobj): if matchobj.group(2): # return origin string in backquotes return matchobj.group(2) link_alias = link_name = matchobj.group(1).strip() if len(link_name.split("|")) > 1: link_alias = link_name.split("|")[0] link_name = link_name.split("|")[1] filetype, fileext = get_file_type_and_ext(link_name) if fileext == "": # convert link_name that extension is missing to a markdown page try: dirent = get_wiki_dirent(repo_id, link_name) path = "/" + dirent.obj_name href = reverse("repo_view_file", args=[repo_id]) + "?p=" + urlquote(path) a_tag = """<a href="%s">%s</a>""" return a_tag % (href, link_alias) except (WikiDoesNotExist, WikiPageMissing): a_tag = """<p class="wiki-page-missing">%s</p>""" return a_tag % (link_alias) elif filetype == IMAGE: # load image to current page path = "/" + link_name filename = os.path.basename(path) obj_id = get_file_id_by_path(repo_id, path) if not obj_id: return """<p class="wiki-page-missing">%s</p>""" % link_name token = web_get_access_token(repo_id, obj_id, "view", username) return '<img class="wiki-image" src="%s" alt="%s" />' % (gen_file_get_url(token, filename), filename) else: from seahub.base.templatetags.seahub_tags import file_icon_filter # convert other types of filelinks to clickable links path = "/" + link_name icon = file_icon_filter(link_name) s = reverse("repo_view_file", args=[repo_id]) + "?p=" + urlquote(path) a_tag = ( """<img src="%simg/file/%s" alt="%s" class="vam" /> <a href="%s" target="_blank" class="vam">%s</a>""" ) return a_tag % (MEDIA_URL, icon, icon, s, link_name)
def get(self, request, slug, page_name="home"): """Get content of a wiki """ try: wiki = Wiki.objects.get(slug=slug) except Wiki.DoesNotExist: error_msg = "Wiki not found." return api_error(status.HTTP_404_NOT_FOUND, error_msg) # perm check if not wiki.has_read_perm(request): error_msg = 'Permission denied.' return api_error(status.HTTP_403_FORBIDDEN, error_msg) page_name = clean_page_name(page_name) try: repo = seafile_api.get_repo(wiki.repo_id) if not repo: error_msg = "Wiki library not found." return api_error(status.HTTP_404_NOT_FOUND, error_msg) except SearpcError: error_msg = _("Internal Server Error") return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: wiki_dirent = get_wiki_dirent(repo.id, page_name) except WikiPageMissing: error_msg = _("Page %s not found.") % page_name return api_error(status.HTTP_404_NOT_FOUND, error_msg) url = get_inner_file_url(repo, wiki_dirent.obj_id, wiki_dirent.obj_name) file_response = urllib2.urlopen(url) content = file_response.read() wiki_page_object = get_wiki_page_object(wiki, page_name) return Response({ "meta": wiki_page_object, "content": content })
def get(self, request, slug, page_name="home"): """Get content of a wiki """ try: wiki = Wiki.objects.get(slug=slug) except Wiki.DoesNotExist: error_msg = "Wiki not found." return api_error(status.HTTP_404_NOT_FOUND, error_msg) # perm check if not wiki.has_read_perm(request.user): error_msg = 'Permission denied.' return api_error(status.HTTP_403_FORBIDDEN, error_msg) page_name = clean_page_name(page_name) try: repo = seafile_api.get_repo(wiki.repo_id) if not repo: error_msg = "Wiki library not found." return api_error(status.HTTP_404_NOT_FOUND, error_msg) except SearpcError: error_msg = _("Internal Server Error") return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: wiki_dirent = get_wiki_dirent(repo.id, page_name) except WikiPageMissing: error_msg = _("Page %s not found.") % page_name return api_error(status.HTTP_404_NOT_FOUND, error_msg) url = get_inner_file_url(repo, wiki_dirent.obj_id, wiki_dirent.obj_name) file_response = urllib2.urlopen(url) content = file_response.read() wiki_page_object = get_wiki_page_object(wiki, page_name) return Response({ "meta": wiki_page_object, "content": content })