from flask import jsonify, request import api from api import etag_response, limiter, require_auth from api.setting import setting_bp from db import get_db from db.models.MarkdownTemplateSetting import MarkdownTemplateSetting @setting_bp.route('/markdown/template/', methods=['GET']) @etag_response def list_template_settings(): with get_db() as session: settings = session.query(MarkdownTemplateSetting).all() return jsonify([s.to_dict() for s in settings]), 200 @setting_bp.route('/markdown/template//', methods=['GET']) @etag_response @limiter.limit(api.get_rate_limit) def get_template_setting(setting_id): with get_db() as session: setting = session.query(MarkdownTemplateSetting).get(setting_id) if not setting: return jsonify({}), 204 return jsonify(setting.to_dict()), 200 @setting_bp.route('/markdown/template/', methods=['POST']) @require_auth(roles=['admin']) def create_template_setting(): data = request.json template_id = data.get('template_id') new_setting = MarkdownTemplateSetting(template_id=template_id) with get_db() as session: session.add(new_setting) return jsonify(new_setting.to_dict()), 201 @setting_bp.route('/markdown/template/', methods=['PUT', 'PATCH']) @require_auth(roles=['admin']) def update_template_setting(setting_id): with get_db() as session: setting = session.get(MarkdownTemplateSetting, setting_id) if setting is None: return jsonify({"error": "template setting not found"}), 404 data = request.json if request.method == 'PUT': setting.template_id = data.get('template_id') elif request.method == 'PATCH': if 'template_id' in data: setting.template_id = data.get('template_id') session.commit() return jsonify(setting.to_dict()), 200 @setting_bp.route('/markdown/template/', methods=['DELETE']) @require_auth(roles=['admin']) def delete_template_setting(setting_id): with get_db() as session: setting = session.get(MarkdownTemplateSetting, setting_id) st = setting.to_dict() session.delete(setting) return jsonify(st), 200