minak28's picture
Update app.py
c9c08a8 verified
import gradio as gr
from datetime import datetime
# Ürün fiyatları ve stok durumu
urun_bilgileri = {
"Pantolon": {"fiyat": 1350, "stok": 20, "kategori": "Giyim"},
"Gömlek": {"fiyat": 850, "stok": 30, "kategori": "Giyim"},
"Ayakkabı": {"fiyat": 1500, "stok": 15, "kategori": "Ayakkabı"},
"Tişört": {"fiyat": 250, "stok": 50, "kategori": "Giyim"},
"Çorap": {"fiyat": 150, "stok": 100, "kategori": "Aksesuar"},
"Mont": {"fiyat": 850, "stok": 10, "kategori": "Dış Giyim"},
"Şapka": {"fiyat": 200, "stok": 25, "kategori": "Aksesuar"},
"Atkı": {"fiyat": 120, "stok": 40, "kategori": "Aksesuar"},
"Eldiven": {"fiyat": 100, "stok": 35, "kategori": "Aksesuar"},
"Forma": {"fiyat": 500, "stok": 45, "kategori": "Spor Giyim"},
"Kazak": {"fiyat": 400, "stok": 30, "kategori": "Giyim"},
"Ceket": {"fiyat": 1500, "stok": 20, "kategori": "Dış Giyim"}
}
def sepet_ozeti_olustur(sepet):
if not sepet:
return "Sepetiniz boş"
kategori_toplam = {}
urun_sayilari = {}
# Ürün sayılarını hesapla
for urun in sepet:
if urun not in urun_sayilari:
urun_sayilari[urun] = 0
urun_sayilari[urun] += 1
kategori = urun_bilgileri[urun]["kategori"]
if kategori not in kategori_toplam:
kategori_toplam[kategori] = []
if urun not in kategori_toplam[kategori]:
kategori_toplam[kategori].append(urun)
ozet = []
for kategori, urunler in kategori_toplam.items():
ozet.append(f"\n🏷️ {kategori}:")
for urun in urunler:
fiyat = urun_bilgileri[urun]["fiyat"]
kalan_stok = urun_bilgileri[urun]["stok"]
adet = urun_sayilari[urun]
ozet.append(f" • {urun} ({fiyat} TL) - {adet} adet - Stokta: {kalan_stok} adet")
return "\n".join(ozet)
def siparis_hesapla(sepet, urun_adi, ekle, mesaj_gecmisi):
alinan_urunler = sepet.copy()
zaman = datetime.now().strftime("%H:%M:%S")
uyari = None
if ekle:
if urun_bilgileri[urun_adi]["stok"] > 0:
alinan_urunler.append(urun_adi)
urun_bilgileri[urun_adi]["stok"] -= 1
mesaj = f"{zaman} - {urun_adi} sepete eklendi"
else:
mesaj = f"{zaman} - {urun_adi} stokta kalmadı!"
uyari = f"⚠️ {urun_adi} stokta kalmadı!"
else:
if urun_adi in alinan_urunler:
alinan_urunler.remove(urun_adi)
urun_bilgileri[urun_adi]["stok"] += 1
mesaj = f"{zaman} - {urun_adi} sepetten çıkarıldı"
else:
mesaj = f"{zaman} - {urun_adi} sepette bulunmuyor!"
uyari = f"⚠️ {urun_adi} sepetinizde bulunmuyor!"
# Toplam fiyat hesaplama
toplam_fiyat = sum(urun_bilgileri[urun]["fiyat"] for urun in alinan_urunler)
# Sepet özeti oluşturma
sepet_ozeti = sepet_ozeti_olustur(alinan_urunler)
# İşlem geçmişi güncelleme
mesaj_gecmisi = mesaj_gecmisi + "\n" + mesaj if mesaj_gecmisi else mesaj
sonuc_metni = (
f"🛍️ SEPET DETAYI:\n{sepet_ozeti}\n\n"
f"💰 Toplam Tutar: {toplam_fiyat} TL"
)
if uyari:
sonuc_metni = uyari + "\n\n" + sonuc_metni
return alinan_urunler, sonuc_metni, mesaj_gecmisi
def islem_gecmisi_goster(mesaj_gecmisi):
if not mesaj_gecmisi:
return "Henüz işlem yapılmadı."
return "📝 İŞLEM GEÇMİŞİ:\n" + mesaj_gecmisi
# Gradio arayüzü
with gr.Blocks(theme=gr.themes.Soft()) as arayuz:
gr.Markdown("# 🛍️ Alışveriş Sepeti")
with gr.Row():
with gr.Column(scale=2):
sepet = gr.State(value=[])
mesaj_gecmisi = gr.State(value="")
sonuc = gr.Textbox(label="Sepet Detayları", interactive=False, lines=10)
with gr.Accordion("📝 İşlem Geçmişi", open=False):
gecmis = gr.Textbox(label="", interactive=False, lines=5)
gr.Button("Geçmişi Göster").click(
fn=islem_gecmisi_goster,
inputs=[mesaj_gecmisi],
outputs=[gecmis]
)
with gr.Column(scale=3):
gr.Markdown("### 📦 Ürünler")
with gr.Row():
for urun_adi, bilgi in urun_bilgileri.items():
with gr.Column():
fiyat = bilgi["fiyat"]
stok = bilgi["stok"]
gr.Markdown(f"""
**{urun_adi}**
{fiyat} TL
Stok: {stok}
""")
with gr.Row():
ekle_btn = gr.Button(
"+",
size="sm",
scale=1
).click(
fn=lambda s, m, u=urun_adi, e=True: siparis_hesapla(s, u, e, m),
inputs=[sepet, mesaj_gecmisi],
outputs=[sepet, sonuc, mesaj_gecmisi]
)
cikar_btn = gr.Button(
"-",
size="sm",
scale=1
).click(
fn=lambda s, m, u=urun_adi, e=False: siparis_hesapla(s, u, e, m),
inputs=[sepet, mesaj_gecmisi],
outputs=[sepet, sonuc, mesaj_gecmisi]
)
arayuz.launch(share=True)