from flask import request, jsonify, redirect from flask_classful import route from werkzeug.datastructures import MultiDict from app.sql.common import db, Session from app.sql.models.graph import Graph, GraphForm from app.sql.models.page import Page from app.sql.models.tile import Tile from app.controllers.crud_controller import CrudView class GraphView(CrudView): model = Graph form = GraphForm def on_destroy(self, session, item): for item in item.pages: session.query(Tile).filter(Tile.page_id == item.id).delete(synchronize_session=False) session.query(Page).filter(Page.graph_id == item.id).delete(synchronize_session=False) @route('/name/', methods=['GET']) def get_name(self, path: str): """ Fetch a single {model}. """ session = Session() item = session.query(self.model).filter(self.model.path == path).first() if not item: session.close() return jsonify({ 'status': 'error', 'error': 'item not found' }) result = { 'status': 'ok', 'res': item.toFullJSON() if hasattr(item, 'toFullJSON') else item.toJSON(), } session.close() return jsonify(result)