diff --git a/cemento.py b/cemento.py index c5743b9..9494b3c 100644 --- a/cemento.py +++ b/cemento.py @@ -1,29 +1,58 @@ +# -*- coding: utf-8 -*- +import subprocess +from flask import Flask, render_template, request + +app = Flask(__name__) + +@app.route('/', methods=['GET', 'POST']) +def index(): + res = None + if request.method == 'POST': + try: + # Recupero dati dal form del sito + v = request.form.get('v', '0') + ps = request.form.get('ps', '0') + ts = request.form.get('ts', '0') + res = {"vol": v, "peso": ps, "tot_sacc": ts} + except Exception as e: + res = {"errore": str(e)} + return render_template('index.html', res=res, form=request.form) + @app.route('/stampa_pdf', methods=['POST']) def stampa_pdf(): try: + # Recupero i valori calcolati v = request.form.get('v', '0') ps = request.form.get('ps', '0') ts = request.form.get('ts', '0') - # Testo formattato in PostScript per evitare PDF vuoti + # Formattazione PostScript: necessaria per evitare il file da 2.5KB vuoto ps_content = f"""%!PS -/Helvetica findfont 14 scalefont setfont +/Helvetica findfont 16 scalefont setfont 100 750 moveto (REPORT CALCOLO CEMENTO) show -100 720 moveto (Volume: {v} m3) show -100 700 moveto (Peso: {ps} kg) show -100 680 moveto (Totale sacchetti: {ts}) show +/Helvetica findfont 12 scalefont setfont +100 720 moveto (Volume totale: {v} m3) show +100 700 moveto (Peso stimato: {ps} kg) show +100 680 moveto (Totale sacchetti: {ts} pezzi) show +100 650 moveto (Data: 20/01/2026) show showpage""" - # Comando per iniettare i dati nel container + # Comando per iniettare i dati direttamente nel container via socket + # Questo comando richiede che /var/run/docker.sock abbia permessi 666 comando = ["docker", "exec", "-i", "cups-pdf-server", "lp", "-d", "Virtual_PDF"] - # Esecuzione del comando passandogli il testo PostScript + # Esecuzione del comando passandogli il testo PostScript codificato processo = subprocess.run(comando, input=ps_content.encode('utf-8'), capture_output=True) if processo.returncode == 0: - return "OK - PDF generato correttamente!" + return "OK - PDF generato correttamente in /docker/cups-pdf/output" else: + # Restituisce l'errore del demone Docker (es. Permission Denied) return f"Errore container: {processo.stderr.decode()}" except Exception as e: - return f"Errore script: {str(e)}" \ No newline at end of file + return f"Errore script: {str(e)}" + +if __name__ == '__main__': + # Configurato per rispondere sulla porta 5000 tramite Proxy Reverse + app.run(host='0.0.0.0', port=5000) \ No newline at end of file