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)