Explorer
/proc/114/root/tmp/aa050_patch8b.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-agent/app.py'); s=p.read_text()
old='''    now = _dt.now(_tz.utc).isoformat()
    try:
        conn = _pw_conn()
        conn.execute(
            "UPDATE signals SET publish_status=?, publish_status_at=? WHERE signal_id=?",
            (new_ps, now, signal_id)
        )
'''
new='''    now = _dt.now(_tz.utc).isoformat()
    try:
        conn = _pw_conn()
        gate = conn.execute("SELECT mas_relevant, COALESCE(content_blocked,0) FROM signals WHERE signal_id=?", (signal_id,)).fetchone()
        if not gate or gate[0] != 1 or gate[1] != 0:
            conn.close()
            return jsonify({"error": "Signal ist nicht für MAS-Content zugelassen"}), 403
        conn.execute(
            "UPDATE signals SET publish_status=?, publish_status_at=? WHERE signal_id=?",
            (new_ps, now, signal_id)
        )
'''
assert old in s; s=s.replace(old,new,1)
needle='''@app.route("/api/content-draft/<draft_id>/approve", methods=["POST"])
def api_draft_approve(draft_id):
    conn = _signals_conn()
'''
repl='''def _draft_gate(conn, draft_id):
    return conn.execute("""SELECT d.draft_id FROM content_drafts d JOIN signals s ON s.signal_id=d.signal_id
                          WHERE d.draft_id=? AND s.mas_relevant=1 AND COALESCE(s.content_blocked,0)=0""", (draft_id,)).fetchone()

@app.route("/api/content-draft/<draft_id>/approve", methods=["POST"])
def api_draft_approve(draft_id):
    conn = _signals_conn()
    if not _draft_gate(conn, draft_id):
        conn.close()
        return jsonify({"error": "Draft-Signal ist nicht für MAS-Content zugelassen"}), 403
'''
assert needle in s; s=s.replace(needle,repl,1)
for name in ['reject','published']:
 marker=f'''def api_draft_{name}(draft_id):\n    conn = _signals_conn()'''
 rep=f'''def api_draft_{name}(draft_id):\n    conn = _signals_conn()\n    if not _draft_gate(conn, draft_id):\n        conn.close()\n        return jsonify({{"error": "Draft-Signal ist nicht für MAS-Content zugelassen"}}), 403'''
 assert marker in s; s=s.replace(marker,rep,1)
marker='''    conn = _signals_conn()
    conn.execute(
        "UPDATE content_drafts SET post_text=? WHERE draft_id=?",
'''
rep='''    conn = _signals_conn()
    if not _draft_gate(conn, draft_id):
        conn.close()
        return jsonify({"error": "Draft-Signal ist nicht für MAS-Content zugelassen"}), 403
    conn.execute(
        "UPDATE content_drafts SET post_text=? WHERE draft_id=?",
'''
assert marker in s; s=s.replace(marker,rep,1)
p.write_text(s)