Spaces:
Sleeping
Sleeping
change dependencies to static and put storeUI.css there, trying to create and serve html file to handle print
bbbe8ba
| # this imports the code from files and modules | |
| from flask import Flask, request, jsonify, send_from_directory | |
| from flask_cors import CORS | |
| import os | |
| import ctypes | |
| import store_helper as sh | |
| import block_builder | |
| import sd_generator as sd | |
| # This is a fix for the way that python doesn't release system memory back to the OS and it was leading to locking up the system | |
| libc = ctypes.cdll.LoadLibrary("libc.so.6") | |
| M_MMAP_THRESHOLD = -3 | |
| # Set malloc mmap threshold. | |
| libc.mallopt(M_MMAP_THRESHOLD, 2**20) | |
| # Initialize the Flask application | |
| app = Flask(__name__) | |
| os.makedirs('static/images', exist_ok=True) | |
| # Serve files from the 'dependencies' directory | |
| def custom_static(filename): | |
| return send_from_directory('static', filename) | |
| # Serve HTML files from the main directory | |
| def serve_html(filename): | |
| return send_from_directory('.', filename) | |
| def apply_headers(response): | |
| response.headers["Cross-Origin-Opener-Policy"] = "same-origin-allow-popups" | |
| return response | |
| # Default route for index | |
| def index(): | |
| return send_from_directory('.', 'storeUI.html') # Make sure this points to your main HTML file | |
| CORS(app)# Route to handle the incoming POST request with user description | |
| def process_description(): | |
| data = request.json # Get the JSON data from the request | |
| user_input = data.get('user_input', '') # Extract the 'user_input' field | |
| # Print the received input to the console | |
| print(f"Received user input: {user_input}") | |
| # Call the LLM with the user input and return the result | |
| llm_output = sh.call_llm_and_cleanup(user_input) | |
| processed_blocks = block_builder.build_blocks(llm_output, block_builder.block_id) | |
| return jsonify({'html_blocks': processed_blocks}) # Return the LLM output as JSON | |
| def generate_image(): | |
| data = request.get_json() | |
| image_subject = data.get('store_name') | |
| sd_prompt = data.get('sd_prompt') | |
| image_subject_name = data.get('store_front_sd_prompt') | |
| if not sd_prompt: | |
| return jsonify({'error': 'Missing sd_prompt'}), 400 | |
| image_subject = data.get('image_subject') | |
| if not sd_prompt: | |
| return jsonify({'error': 'Missing sd_prompt'}), 400 | |
| try: | |
| image_url = sd.preview_and_generate_image(image_subject,image_subject_name, sd_prompt) | |
| return jsonify({'image_url': image_url}) | |
| except Exception as e: | |
| return jsonify({'error': str(e)}), 500 | |
| # New route to convert HTML to PDF | |
| def generate_pdf(): | |
| data = request.json | |
| html_content = data.get('html_content', '') | |
| title = data.get('title', 'output') # Default to 'output' if no title is provided | |
| print(f"Received HTML content for title: {title}") | |
| print(html_content) | |
| if not html_content: | |
| return jsonify({'error': 'No HTML content provided'}), 400 | |
| # Define the directory where the HTML files will be stored | |
| output_dir = os.path.join(app.root_path, 'static', 'html_files') | |
| os.makedirs(output_dir, exist_ok=True) | |
| # Save the HTML content to a file with the processed title | |
| html_filename = f"{title}.html" | |
| html_filepath = os.path.join(output_dir, html_filename) | |
| with open(html_filepath, 'w', encoding='utf-8') as file: | |
| file.write(html_content) | |
| # Return the URL to access the HTML file | |
| file_url = f"/static/html_files/{html_filename}" | |
| return jsonify({'html_url': file_url}), 200 | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=7860, debug=True) # Run the app on localhost, port 7860 | |