from flask import jsonify, request import api from api import limiter, etag_response, require_auth from api.setting import setting_bp from db import get_db from db.models.MarkdownSetting import MarkdownSetting @setting_bp.route('/markdown/', methods=['GET']) @limiter.limit(api.get_rate_limit) @etag_response def get_markdown_path(setting_id): with get_db() as session: setting = session.query(MarkdownSetting).get(setting_id) if setting is None: return jsonify({}), 204 return jsonify(setting.to_dict()), 200 @setting_bp.route('/markdown/', methods=['POST']) @require_auth(roles=['admin']) def create_markdown_setting(): data = request.json template_setting_id = data.get('template_setting_id') permission_setting_id = data.get('permission_setting_id') setting = MarkdownSetting( template_setting_id=template_setting_id, permission_setting_id=permission_setting_id ) try: with get_db() as session: session.add(setting) session.commit() return jsonify(setting.to_dict()), 200 except Exception: return jsonify({"error": "failed to create setting"}), 500 @setting_bp.route('/markdown/', methods=['PUT', 'PATCH']) @require_auth(roles=['admin']) def update_markdown_setting(setting_id): data = request.json try: with get_db() as session: setting = session.query(MarkdownSetting).get(setting_id) if setting is None: return jsonify({"error": "setting not exists"}), 400 template_setting_id = data.get('template_setting_id', setting.template_setting_id) permission_setting_id = data.get('permission_setting_id', setting.permission_setting_id) setting.template_setting_id = template_setting_id setting.permission_setting_id = permission_setting_id session.commit() return jsonify(setting.to_dict()), 200 except Exception as e: return jsonify({"error": "failed to update setting"}), 500 @setting_bp.route('/markdown/', methods=['DELETE']) @require_auth(roles=['admin']) def delete_markdown_setting(setting_id): with get_db() as session: setting = session.query(MarkdownSetting).get(setting_id) if setting is None: return jsonify({"error": "setting not exists"}), 400 session.delete(setting) session.commit() return jsonify({"message": "deleted"}), 200