Explorer
/proc/1357821/root/tmp/add_carousel_routes.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-agent/app.py'); s=p.read_text()
old='from publish_ready import get_packages, decide_package, generate_package_image, valid_package_image_path, image_download_name, select_package_variant'
new='from publish_ready import get_packages, decide_package, generate_package_image, valid_package_image_path, image_download_name, select_package_variant, assess_media_type, generate_carousel_for_package'
assert s.count(old)==1; s=s.replace(old,new)
old='from human_feedback import save_variant_feedback'
new='from human_feedback import save_variant_feedback, save_carousel_slide_feedback, save_carousel_feedback'
assert s.count(old)==1; s=s.replace(old,new)
marker='''@app.route("/bereit/<package_id>/varianten/<variant_id>/feedback", methods=["POST"])'''
routes='''@app.route("/bereit/<package_id>/carousel/erzeugen", methods=["POST"])
def carousel_generate(package_id):
    try:
        generate_carousel_for_package(package_id)
    except ValueError:
        pass
    return redirect(url_for("ready_packages"))


@app.route("/bereit/<package_id>/carousel/<carousel_id>/slide/<int:slide_number>")
def carousel_slide_preview(package_id, carousel_id, slide_number):
    packages=get_packages(limit=500); package=next((p for p in packages if p.get("package_id")==package_id),None); carousel=(package or {}).get("carousel") or {}
    slide=next((x for x in carousel.get("slides",[]) if x.get("carousel_id")==carousel_id and x.get("slide_number")==slide_number),None); path=Path((slide or {}).get("image_path","")).resolve() if slide else None
    if not path or not path.is_file(): abort(404)
    return send_file(path,conditional=False)


@app.route("/bereit/<package_id>/carousel/<carousel_id>/slide/<int:slide_number>/download")
def carousel_slide_download(package_id, carousel_id, slide_number):
    packages=get_packages(limit=500); package=next((p for p in packages if p.get("package_id")==package_id),None); carousel=(package or {}).get("carousel") or {}
    slide=next((x for x in carousel.get("slides",[]) if x.get("carousel_id")==carousel_id and x.get("slide_number")==slide_number),None); path=Path((slide or {}).get("image_path","")).resolve() if slide else None
    if not path or not path.is_file(): abort(404)
    return send_file(path,as_attachment=True,download_name=f"{package_id}-slide-{slide_number}.png",conditional=False)


@app.route("/bereit/<package_id>/carousel/<carousel_id>/download")
def carousel_download(package_id, carousel_id):
    import io,zipfile
    packages=get_packages(limit=500); package=next((p for p in packages if p.get("package_id")==package_id),None); carousel=(package or {}).get("carousel") or {}
    if carousel.get("carousel_id")!=carousel_id: abort(404)
    stream=io.BytesIO()
    with zipfile.ZipFile(stream,"w",zipfile.ZIP_DEFLATED) as archive:
        for slide in carousel.get("slides",[]):
            path=Path(slide.get("image_path","")).resolve()
            if path.is_file(): archive.write(path,arcname=f"slide-{slide.get('slide_number')}.png")
    stream.seek(0); return send_file(stream,as_attachment=True,download_name=f"{package_id}-carousel.zip",mimetype="application/zip")


@app.route("/bereit/<package_id>/carousel/<carousel_id>/feedback", methods=["POST"])
def carousel_feedback(package_id, carousel_id):
    try: save_carousel_feedback(carousel_id,request.form.get("rating",""),request.form.get("reason",""),evaluated_by="Carlo")
    except ValueError: pass
    return redirect(url_for("ready_packages"))


@app.route("/bereit/<package_id>/carousel/<carousel_id>/slide/<slide_id>/feedback", methods=["POST"])
def carousel_slide_feedback(package_id, carousel_id, slide_id):
    try: save_carousel_slide_feedback(slide_id,request.form.get("rating",""),request.form.get("reason",""),evaluated_by="Carlo")
    except ValueError: pass
    return redirect(url_for("ready_packages"))


'''
assert s.count(marker)==1; s=s.replace(marker,routes+marker); p.write_text(s); print('carousel routes added')