diff options
Diffstat (limited to 'cli/app/controllers/page_controller.py')
| -rw-r--r-- | cli/app/controllers/page_controller.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cli/app/controllers/page_controller.py b/cli/app/controllers/page_controller.py index 41d30f3..b6bfaa8 100644 --- a/cli/app/controllers/page_controller.py +++ b/cli/app/controllers/page_controller.py @@ -3,6 +3,7 @@ from flask_classful import route from werkzeug.datastructures import MultiDict from app.sql.common import db, Session +from app.sql.models.graph import Graph from app.sql.models.page import Page, PageForm from app.sql.models.tile import Tile from app.controllers.crud_controller import CrudView @@ -26,3 +27,32 @@ class PageView(CrudView): def on_destroy(self, session, item): session.query(Tile).filter(Tile.page_id == item.id).delete(synchronize_session=False) + + @route('/name/<graph_path>/<page_path>', methods=['GET']) + def get_name(self, graph_path: str, page_path: str): + """ + Fetch a single {model}. + """ + session = Session() + graph = session.query(Graph).filter(Graph.path == graph_path).first() + if not graph: + session.close() + return jsonify({ + 'status': 'error', + 'error': 'graph not found' + }) + + page = session.query(Page).filter(Page.graph_id == graph.id, Page.path == page_path).first() + if not page: + session.close() + return jsonify({ + 'status': 'error', + 'error': 'page not found' + }) + + result = { + 'status': 'ok', + 'res': page.toFullJSON() if hasattr(page, 'toFullJSON') else page.toJSON(), + } + session.close() + return jsonify(result) |
