minak28 commited on
Commit
6106f83
1 Parent(s): e0721fc

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +150 -0
app.py ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ import gradio as gr
4
+ from datetime import datetime
5
+
6
+ # Ürün fiyatları ve stok durumu
7
+ urun_bilgileri = {
8
+ "Pantolon": {"fiyat": 1350, "stok": 20, "kategori": "Giyim"},
9
+ "Gömlek": {"fiyat": 850, "stok": 30, "kategori": "Giyim"},
10
+ "Ayakkabı": {"fiyat": 1500, "stok": 15, "kategori": "Ayakkabı"},
11
+ "Tişört": {"fiyat": 250, "stok": 50, "kategori": "Giyim"},
12
+ "Çorap": {"fiyat": 150, "stok": 100, "kategori": "Aksesuar"},
13
+ "Mont": {"fiyat": 850, "stok": 10, "kategori": "Dış Giyim"},
14
+ "Şapka": {"fiyat": 200, "stok": 25, "kategori": "Aksesuar"},
15
+ "Atkı": {"fiyat": 120, "stok": 40, "kategori": "Aksesuar"},
16
+ "Eldiven": {"fiyat": 100, "stok": 35, "kategori": "Aksesuar"},
17
+ "Forma": {"fiyat": 500, "stok": 45, "kategori": "Spor Giyim"},
18
+ "Kazak": {"fiyat": 400, "stok": 30, "kategori": "Giyim"},
19
+ "Ceket": {"fiyat": 1500, "stok": 20, "kategori": "Dış Giyim"}
20
+ }
21
+
22
+ def sepet_ozeti_olustur(sepet):
23
+ if not sepet:
24
+ return "Sepetiniz boş"
25
+
26
+ kategori_toplam = {}
27
+ urun_sayilari = {}
28
+
29
+ # Ürün sayılarını hesapla
30
+ for urun in sepet:
31
+ if urun not in urun_sayilari:
32
+ urun_sayilari[urun] = 0
33
+ urun_sayilari[urun] += 1
34
+
35
+ kategori = urun_bilgileri[urun]["kategori"]
36
+ if kategori not in kategori_toplam:
37
+ kategori_toplam[kategori] = []
38
+ if urun not in kategori_toplam[kategori]:
39
+ kategori_toplam[kategori].append(urun)
40
+
41
+ ozet = []
42
+ for kategori, urunler in kategori_toplam.items():
43
+ ozet.append(f"\n🏷️ {kategori}:")
44
+ for urun in urunler:
45
+ fiyat = urun_bilgileri[urun]["fiyat"]
46
+ kalan_stok = urun_bilgileri[urun]["stok"]
47
+ adet = urun_sayilari[urun]
48
+ ozet.append(f" • {urun} ({fiyat} TL) - {adet} adet - Stokta: {kalan_stok} adet")
49
+
50
+ return "\n".join(ozet)
51
+
52
+ def siparis_hesapla(sepet, urun_adi, ekle, mesaj_gecmisi):
53
+ alinan_urunler = sepet.copy()
54
+ zaman = datetime.now().strftime("%H:%M:%S")
55
+ uyari = None
56
+
57
+ if ekle:
58
+ if urun_bilgileri[urun_adi]["stok"] > 0:
59
+ alinan_urunler.append(urun_adi)
60
+ urun_bilgileri[urun_adi]["stok"] -= 1
61
+ mesaj = f"{zaman} - {urun_adi} sepete eklendi"
62
+ else:
63
+ mesaj = f"{zaman} - {urun_adi} stokta kalmadı!"
64
+ uyari = f"⚠️ {urun_adi} stokta kalmadı!"
65
+ else:
66
+ if urun_adi in alinan_urunler:
67
+ alinan_urunler.remove(urun_adi)
68
+ urun_bilgileri[urun_adi]["stok"] += 1
69
+ mesaj = f"{zaman} - {urun_adi} sepetten çıkarıldı"
70
+ else:
71
+ mesaj = f"{zaman} - {urun_adi} sepette bulunmuyor!"
72
+ uyari = f"⚠️ {urun_adi} sepetinizde bulunmuyor!"
73
+
74
+ # Toplam fiyat hesaplama
75
+ toplam_fiyat = sum(urun_bilgileri[urun]["fiyat"] for urun in alinan_urunler)
76
+
77
+ # Sepet özeti oluşturma
78
+ sepet_ozeti = sepet_ozeti_olustur(alinan_urunler)
79
+
80
+ # İşlem geçmişi güncelleme
81
+ mesaj_gecmisi = mesaj_gecmisi + "\n" + mesaj if mesaj_gecmisi else mesaj
82
+
83
+ sonuc_metni = (
84
+ f"🛍️ SEPET DETAYI:\n{sepet_ozeti}\n\n"
85
+ f"💰 Toplam Tutar: {toplam_fiyat} TL"
86
+ )
87
+
88
+ if uyari:
89
+ sonuc_metni = uyari + "\n\n" + sonuc_metni
90
+
91
+ return alinan_urunler, sonuc_metni, mesaj_gecmisi
92
+
93
+ def islem_gecmisi_goster(mesaj_gecmisi):
94
+ if not mesaj_gecmisi:
95
+ return "Henüz işlem yapılmadı."
96
+ return "📝 İŞLEM GEÇMİŞİ:\n" + mesaj_gecmisi
97
+
98
+ # Gradio arayüzü
99
+ with gr.Blocks(theme=gr.themes.Soft()) as arayuz:
100
+ gr.Markdown("# 🛍️ Alışveriş Sepeti")
101
+
102
+ with gr.Row():
103
+ with gr.Column(scale=2):
104
+ sepet = gr.State(value=[])
105
+ mesaj_gecmisi = gr.State(value="")
106
+ sonuc = gr.Textbox(label="Sepet Detayları", interactive=False, lines=10)
107
+
108
+ with gr.Accordion("📝 İşlem Geçmişi", open=False):
109
+ gecmis = gr.Textbox(label="", interactive=False, lines=5)
110
+ gr.Button("Geçmişi Göster").click(
111
+ fn=islem_gecmisi_goster,
112
+ inputs=[mesaj_gecmisi],
113
+ outputs=[gecmis]
114
+ )
115
+
116
+ with gr.Column(scale=3):
117
+ gr.Markdown("### 📦 Ürünler")
118
+ with gr.Row():
119
+ for urun_adi, bilgi in urun_bilgileri.items():
120
+ with gr.Column():
121
+ fiyat = bilgi["fiyat"]
122
+ stok = bilgi["stok"]
123
+
124
+ gr.Markdown(f"""
125
+ **{urun_adi}**
126
+ {fiyat} TL
127
+ Stok: {stok}
128
+ """)
129
+
130
+ with gr.Row():
131
+ ekle_btn = gr.Button(
132
+ "+",
133
+ size="sm",
134
+ scale=1
135
+ ).click(
136
+ fn=lambda s, m, u=urun_adi, e=True: siparis_hesapla(s, u, e, m),
137
+ inputs=[sepet, mesaj_gecmisi],
138
+ outputs=[sepet, sonuc, mesaj_gecmisi]
139
+ )
140
+ cikar_btn = gr.Button(
141
+ "-",
142
+ size="sm",
143
+ scale=1
144
+ ).click(
145
+ fn=lambda s, m, u=urun_adi, e=False: siparis_hesapla(s, u, e, m),
146
+ inputs=[sepet, mesaj_gecmisi],
147
+ outputs=[sepet, sonuc, mesaj_gecmisi]
148
+ )
149
+
150
+ arayuz.launch()