Mercurial > wikked
view wikked/commonroutes.py @ 470:385de1daefb3
core: Properly show page titles when only contents match a search query.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 08 Oct 2018 23:42:45 -0700 |
parents | 6c8f90e47338 |
children |
line wrap: on
line source
import os.path from flask import request, abort from flask_login import current_user from werkzeug import Response from werkzeug.wsgi import wrap_file from wikked.web import app, get_wiki from wikked.webimpl import ( get_page_or_raise, url_from_viewarg, mimetype_map) @app.route('/pagefiles/<path:url>') def read_pagefile(url): wiki = get_wiki() user = current_user.get_id() page_url = os.path.dirname(url_from_viewarg(url)).\ replace('\\', '/').\ rstrip('/') page = get_page_or_raise(wiki, page_url, fields=['path'], check_perms=(user, 'read')) # If no exception was thrown, we're good for reading the file. path_no_ext, _ = os.path.splitext(page.path) file_path = os.path.join(path_no_ext, os.path.basename(url)) try: f = open(file_path, 'rb') except OSError: abort(404) r = Response(wrap_file(request.environ, f), direct_passthrough=True) _, ext = os.path.splitext(url) r.mimetype = mimetype_map.get(ext, '') return r