File size: 4,033 Bytes
ad7fb41
c426163
 
 
ad7fb41
c426163
afacca0
c426163
 
 
ad7fb41
c426163
 
f2bf05a
 
 
 
c426163
ad7fb41
c426163
 
 
 
 
 
 
 
ad7fb41
c426163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ad7fb41
c426163
 
 
 
 
 
 
 
 
 
ad7fb41
c426163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from supabase import create_client, Client
import qrcode
from io import BytesIO

# --- CONFIGURAZIONE ---
VIEWER_URL = "https://winelink-e-label.hf.space" 
URL = "https://ulqepcglktyojwtnhnga.supabase.co"
KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVscWVwY2dsa3R5b2p3dG5obmdhIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzIwMDM0MjAsImV4cCI6MjA4NzU3OTQyMH0.JLcSI9fYNxjW0MSkJKexXU8KBRQUzrZEj7s7hcbXuAc"
supabase: Client = create_client(URL, KEY)

st.set_page_config(page_title="WineLink Admin", page_icon="🍷")
st.title("WineLink Admin Pro")

# --- NUOVA RIGA DI GUIDA ---
st.info("πŸ’‘ **Guida Rapida:** Inserisci i dati nel nuovo vino, poi seleziona 'Gestione Lista' per vedere, modificare o scaricare il QR Code.")

azione = st.selectbox("OPERAZIONE:", ["πŸ†• Nuovo Inserimento", "πŸ“‹ Gestione Lista"])

def get_qr_bytes(url):
    qr = qrcode.QRCode(box_size=10, border=4)
    qr.add_data(url)
    qr.make(fit=True)
    img = qr.make_image(fill_color="#581845", back_color="white")
    buf = BytesIO()
    img.save(buf, format="PNG")
    return buf.getvalue()

if azione == "πŸ†• Nuovo Inserimento":
    with st.form("form_nuovo", clear_on_submit=True):
        brand = st.text_input("Cantina")
        wine = st.text_input("Nome Vino")
        c1, c2, c3 = st.columns(3)
        year = c1.number_input("Annata", value=2024, step=1)
        alc = c2.number_input("Alcol %", value=13.0, step=0.1)
        kcal = c3.number_input("Kcal", value=80.0)
        is_deal = st.checkbox("Prodotto Dealcolizzato (Reg. 2026)")
        ingredients = st.text_area("Ingredienti")
        st.write("**Smaltimento**")
        r1, r2, r3 = st.columns(3)
        b_mat = r1.selectbox("Bottiglia", ["Vetro (GL 71)", "Vetro (GL 70)"])
        c_mat = r2.selectbox("Tappo", ["Sughero (FOR 51)", "Plastica (LDPE 4)"])
        k_mat = r3.selectbox("Capsula", ["Alluminio (C/ALU 90)", "Stagno", "Senza capsula"])

        if st.form_submit_button("πŸ’Ύ SALVA VINO"):
            dati = {
                "brand_name": brand, "wine_name": wine, "vintage": float(year),
                "alcohol_vol": float(alc), "energy_kcal": float(kcal), "energy_kj": float(kcal)*4.184,
                "is_dealcoholized": bool(is_deal), "ingredients": ingredients, 
                "bottle_material": b_mat, "cork_material": c_mat, "capsule_material": k_mat,
                "carbs_sugar": 0.5, "salt": 0.01
            }
            supabase.table("wine_labels").insert(dati).execute()
            st.success("βœ… Vino salvato!")

elif azione == "πŸ“‹ Gestione Lista":
    res = supabase.table("wine_labels").select("*").order("created_at", desc=True).execute()
    if res.data:
        vini = {f"{v['brand_name']} - {v['wine_name']}": v for v in res.data}
        scelta = st.selectbox("Seleziona vino:", ["-- Scegli --"] + list(vini.keys()))
        if scelta != "-- Scegli --":
            v = vini[scelta]
            url = f"{VIEWER_URL}?id={v['id']}"
            t1, t2, t3 = st.tabs(["πŸ–ΌοΈ QR Code", "✏️ Modifica", "πŸ—‘οΈ Elimina"])
            with t1:
                qr = get_qr_bytes(url)
                st.image(qr, width=200)
                st.download_button("πŸ“₯ Scarica QR", qr, file_name=f"QR_{v['wine_name']}.png")
                st.code(url)
            with t2:
                with st.form("edit_form"):
                    e_brand = st.text_input("Cantina", value=v['brand_name'])
                    e_wine = st.text_input("Vino", value=v['wine_name'])
                    e_ing = st.text_area("Ingredienti", value=v['ingredients'])
                    if st.form_submit_button("πŸ’Ύ AGGIORNA"):
                        supabase.table("wine_labels").update({"brand_name": e_brand, "wine_name": e_wine, "ingredients": e_ing}).eq("id", v['id']).execute()
                        st.rerun()
            with t3:
                if st.button("πŸ”΄ ELIMINA DEFINITIVAMENTE"):
                    supabase.table("wine_labels").delete().eq("id", v['id']).execute()
                    st.rerun()