File size: 3,546 Bytes
27c79bc
40db3b8
d5fb696
27c79bc
 
 
d5fb696
 
27c79bc
 
 
 
 
 
 
 
d5fb696
 
 
760ff9a
40db3b8
bbbe8ba
d8b766a
bbbe8ba
d8b766a
 
 
 
 
 
f552fc6
 
 
 
 
40db3b8
 
 
 
 
d8b766a
 
40db3b8
 
 
 
 
 
 
 
 
 
d8b766a
d5fb696
27c79bc
d5fb696
 
 
 
 
 
 
 
 
c8a4cd8
760ff9a
d5fb696
27c79bc
d5fb696
 
 
8333c17
d5fb696
8333c17
 
d5fb696
 
 
 
 
27c79bc
d5fb696
8333c17
d5fb696
 
 
bbbe8ba
 
40db3b8
 
 
bbbe8ba
40db3b8
 
bbbe8ba
27c79bc
5794b1c
bbbe8ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# this imports the code from files and modules
from flask import Flask, request, jsonify, send_from_directory, url_for, render_template, send_file
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 'static' directory
@app.route('/static/<path:filename>')
def custom_static(filename):
    return send_from_directory('static', filename)

# Serve HTML files from the main directory
@app.route('/<path:filename>')
def serve_html(filename):
    return send_from_directory('.', filename)

@app.after_request
def apply_headers(response):
    response.headers["Cross-Origin-Opener-Policy"] = "same-origin-allow-popups"
    return response

# # Default route for index
# @app.route('/')
# def index():
#     return send_from_directory('.', 'storeUI.html')  # Make sure this points to your main HTML file

@app.route('/')
def index():
    css_files = {
        'all_css': url_for('static', filename='all.css'),
        'font_css': url_for('static', filename='css.css?family=Open+Sans:400,300,600,700'),
        'bundle_css': url_for('static', filename='bundle.css'),
        'style_css': url_for('static', filename='style.css'),
        'phb_style_css': url_for('static', filename='5ePHBstyle.css'),
        'store_ui_css': url_for('static', filename='storeUI.css')
    }
    return render_template('storeUI.html', css_files=css_files)


CORS(app)# Route to handle the incoming POST request with user description

@app.route('/process-description', methods=['POST'])
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

@app.route('/generate-image', methods=['POST'])
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
@app.route('/proxy.html', methods=['POST'])
def proxy():
    html_content = request.form.get('htmlContent', '')

    # Render the proxy HTML with the provided content
    return render_template('proxy.html', html_content=html_content)


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860, debug=True)  # Run the app on localhost, port 7860