From 55ccd7138307c4e7483f19f674596fdf01c98683 Mon Sep 17 00:00:00 2001
From: Karl <karl@k-world.me.uk>
Date: Wed, 4 Jun 2025 10:03:30 +0100
Subject: [PATCH] fix the double generation

---
 ai_frame_image_server.py | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/ai_frame_image_server.py b/ai_frame_image_server.py
index 571b2bf..c83b17f 100644
--- a/ai_frame_image_server.py
+++ b/ai_frame_image_server.py
@@ -4,6 +4,8 @@ from flask import (
     send_from_directory,
     request,
     jsonify,
+    redirect,
+    url_for
 )
 import os
 import time
@@ -92,26 +94,28 @@ def cancel_job() -> None:
 
 
 @app.route("/create", methods=["GET", "POST"])
-def create() -> str:
-    """Handles image creation requests.
-    Args:
-        None
-    Returns:
-        str: Redirect to the main page or a JSON response.
-    """
-    prompt = request.form.get("prompt") if request.method == "POST" else None
-    model = request.form.get("model") if request.method == "POST" else "Random"
+def create():
+    if request.method == "POST":
+        prompt = request.form.get("prompt")
+        model = request.form.get("model", "Random")
+
+        if not prompt:
+            prompt = create_prompt_on_openwebui(user_config["comfyui"]["prompt"])
+
+        # Start generation in background
+        threading.Thread(target=lambda: create_image(prompt, model)).start()
+      
+        # store prompt in query string temporarily
+        return redirect(url_for("image_queued", prompt=prompt))
+
+    # For GET requests, just show the form to enter prompt
+    return render_template("create_image.html", models=load_models_from_config())
 
 
-    if prompt is None:
-        prompt = create_prompt_on_openwebui(user_config["comfyui"]["prompt"])
-        
-    def create_image_in_background():
-        create_image(prompt, model)
-
-    threading.Thread(target=create_image_in_background).start()
-    return render_template('image_queued.html', prompt=prompt)
-
+@app.route("/image_queued")
+def image_queued():
+    prompt = request.args.get("prompt", "No prompt provided.")
+    return render_template("image_queued.html", prompt=prompt)
 
 def scheduled_task() -> None:
     """Executes the scheduled image generation task."""