1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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
from app.site.export import export_site
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/<graph_path>', methods=['GET'])
def get_name(self, graph_path: str):
"""
Fetch a single graph.
"""
session = Session()
item = session.query(self.model).filter(self.model.path == graph_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)
@route('/export/<graph_path>', methods=['GET'])
def export(self, graph_path: str):
export_site(opt_graph_path=graph_path)
result = {
'status': 'ok',
}
return jsonify(result)
|