diff --git a/cps/editpage.py b/cps/editpage.py index 2664bfc7..1942bfd2 100644 --- a/cps/editpage.py +++ b/cps/editpage.py @@ -1,9 +1,10 @@ import os import flask -from flask import Flask, abort, request +from flask import Blueprint, Flask, abort, request from functools import wraps from pathlib import Path from flask_login import current_user, login_required +from werkzeug.exceptions import NotFound from .render_template import render_title_template from . import logger, config, ub @@ -11,7 +12,7 @@ from .constants import CONFIG_DIR as _CONFIG_DIR log = logger.create() -editpage = flask.Blueprint('editpage', __name__) +editpage = Blueprint('editpage', __name__) def edit_required(f): @wraps(f) @@ -42,13 +43,17 @@ def edit_page(file): position = "0" page = ub.session.query(ub.Page).filter(ub.Page.id == file).first() - if page: + + try: title = page.title name = page.name icon = page.icon is_enabled = page.is_enabled order = page.order position = page.position + except AttributeError: + if file != "new": + abort(404) if request.method == "POST": to_save = request.form.to_dict() @@ -56,8 +61,7 @@ def edit_page(file): name = to_save.get("name", "").strip() icon = to_save.get("icon", "").strip() position = to_save.get("position", "").strip() - order = to_save.get("order", 0) - order = int(order) + order = int(to_save.get("order", 0)) content = to_save.get("content", "").strip() is_enabled = _get_checkbox(to_save, "is_enabled", True) @@ -79,12 +83,8 @@ def edit_page(file): dir_config_path = os.path.join(_CONFIG_DIR, 'pages') file_name = Path(name + '.md') file_path = dir_config_path / file_name - is_path = os.path.exists(dir_config_path) - if not is_path: - try: - os.makedirs(dir_config_path) - except Exception as ex: - log.error(ex) + os.makedirs(dir_config_path, exist_ok=True) + try: with open(file_path, 'w') as f: f.write(content) @@ -93,12 +93,15 @@ def edit_page(file): log.error(ex) if file != "new": - dir_config_path = os.path.join(_CONFIG_DIR, 'pages') - file_name = Path(name + '.md') - file_path = dir_config_path / file_name - if file_path.is_file(): + try: + dir_config_path = Path(_CONFIG_DIR) / 'pages' + file_path = dir_config_path / f"{name}.md" + with open(file_path, 'r') as f: doc = f.read() + except NotFound: + log.error("'%s' was accessed but file doesn't exists." % file) + else: doc = "## New file\n\nInformation" diff --git a/cps/listpages.py b/cps/listpages.py index 5cfcfa26..8016f5ee 100644 --- a/cps/listpages.py +++ b/cps/listpages.py @@ -1,6 +1,6 @@ import flask import json -from flask import make_response,abort +from flask import Blueprint, jsonify, make_response,abort from flask_login import current_user, login_required from functools import wraps from flask_babel import gettext as _ @@ -8,7 +8,7 @@ from flask_babel import gettext as _ from .render_template import render_title_template from . import ub, db -listpages = flask.Blueprint('listpages', __name__) +listpages = Blueprint('listpages', __name__) def edit_required(f): @wraps(f) @@ -26,15 +26,3 @@ def show_list(): pages = ub.session.query(ub.Page).order_by(ub.Page.position).order_by(ub.Page.order).all() return render_title_template('list_pages.html', title=_("Pages List"), page="book_table", pages=pages) - -@listpages.route("/ajax/listpages") -@login_required -@edit_required -def list_pages(): - pages = ub.session.query(ub.Page).order_by(ub.Page.position).order_by(ub.Page.order).all() - table_entries = {'totalNotFiltered': len(pages), 'total': len(pages), "rows": pages} - js_list = json.dumps(table_entries, cls=db.AlchemyEncoder) - response = make_response(js_list) - response.headers["Content-Type"] = "application/json; charset=utf-8" - - return response diff --git a/cps/page.py b/cps/page.py index f4c27419..b3e42faa 100644 --- a/cps/page.py +++ b/cps/page.py @@ -4,6 +4,7 @@ import markdown from flask import abort from pathlib import Path from flask_babel import gettext as _ +from werkzeug.exceptions import NotFound from . import logger, config, ub from .render_template import render_title_template @@ -20,20 +21,18 @@ def get_page(file): .filter(ub.Page.is_enabled)\ .first() - if page: - dir_config_path = os.path.join(_CONFIG_DIR, 'pages') - file_name = Path(file + '.md') - file_path = dir_config_path / file_name - - if file_path.is_file(): - with open(file_path, 'r') as f: - temp_md = f.read() - body = markdown.markdown(temp_md) - - return render_title_template('page.html', body=body, title=page.title, page=page.name) - else: - log.error("'%s' was accessed but file doesn't exists." % file) - abort(404) - else: - log.error("'%s' was accessed but is not enabled or it's not in database." % file) + if not page: + log.error(f"'{file}' was accessed but is not enabled or it's not in database.") + abort(404) + + try: + dir_config_path = Path(_CONFIG_DIR) / 'pages' + file_path = dir_config_path / f"{file}.md" + with open(file_path, 'r') as f: + temp_md = f.read() + body = markdown.markdown(temp_md) + + return render_title_template('page.html', body=body, title=page.title, page=page.name) + except NotFound: + log.error("'%s' was accessed but file doesn't exists." % file) abort(404) diff --git a/cps/templates/edit_page.html b/cps/templates/edit_page.html index 40c7a148..e612a133 100644 --- a/cps/templates/edit_page.html +++ b/cps/templates/edit_page.html @@ -36,10 +36,10 @@
- +
{{_('Cancel')}} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/cps/templates/list_pages.html b/cps/templates/list_pages.html index 65ff4064..8527a9eb 100644 --- a/cps/templates/list_pages.html +++ b/cps/templates/list_pages.html @@ -7,30 +7,34 @@ {% block body %}

{{_(title)}}

- - - - - - - - + + + + + + + + + + + {% for page in pages %} - - - - - - + + + + + - - + {% endif %} + + + {% endfor %} +
{{_('Name')}}{{_('Title')}}{{_('Icon')}}{{_('Position')}}{{_('Enabled')}}{{_('Order')}}
{{_('Name')}}{{_('Title')}}{{_('Icon')}}{{_('Position')}}{{_('Enabled')}}{{_('Order')}}
{{page.name}}{{page.title}}{{page.icon}}{{_('bottom') if page.position == "0" else _('top')}} - {% if page.is_enabled %} +
{{page.name}}{{page.title}}{{page.icon}}{{_('bottom') if page.position == "0" else _('top')}} + {% if page.is_enabled %} - {% else %} + {% else %} - {% endif %} - {{page.order}}
{{page.order}}
{{_('New Page')}} {% endblock %} @@ -45,4 +49,4 @@ charset="UTF-8"> {% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/cps/templates/page.html b/cps/templates/page.html index 1d0d8c31..08629931 100644 --- a/cps/templates/page.html +++ b/cps/templates/page.html @@ -1,4 +1,4 @@ {% extends "layout.html" %} {% block body %}
{{body|safe}}
-{% endblock %} \ No newline at end of file +{% endblock %}