Aleksmorshen commited on
Commit
ce448b5
·
verified ·
1 Parent(s): a390f1a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -6
app.py CHANGED
@@ -18,12 +18,20 @@ def load_data():
18
  except json.JSONDecodeError:
19
  logging.error("Ошибка: Невозможно декодировать JSON файл.")
20
  return []
21
- return []
 
 
 
 
22
 
23
  # Сохранение данных в JSON-файл
24
  def save_data(data):
25
- with open(DATA_FILE, 'w', encoding='utf-8') as file:
26
- json.dump(data, file, ensure_ascii=False, indent=4)
 
 
 
 
27
 
28
  # Главная страница каталога
29
  @app.route('/catalog')
@@ -87,18 +95,26 @@ def admin():
87
 
88
  if name and price and description:
89
  try:
90
- price = float(price)
 
91
  except ValueError:
92
  logging.error("Ошибка: Цена должна быть числом.")
93
  return "Ошибка: Цена должна быть числом.", 400
94
 
 
95
  products = load_data()
96
  products.append({
97
  'name': name,
98
  'price': price,
99
  'description': description
100
  })
101
- save_data(products)
 
 
 
 
 
 
102
  return redirect(url_for('admin'))
103
 
104
  products = load_data()
@@ -191,4 +207,4 @@ def admin():
191
  return render_template_string(admin_html, products=products)
192
 
193
  if __name__ == '__main__':
194
- app.run(host='0.0.0.0', port=7860)
 
18
  except json.JSONDecodeError:
19
  logging.error("Ошибка: Невозможно декодировать JSON файл.")
20
  return []
21
+ else:
22
+ # Создание пустого файла, если его нет
23
+ with open(DATA_FILE, 'w', encoding='utf-8') as file:
24
+ json.dump([], file, ensure_ascii=False, indent=4)
25
+ return []
26
 
27
  # Сохранение данных в JSON-файл
28
  def save_data(data):
29
+ try:
30
+ with open(DATA_FILE, 'w', encoding='utf-8') as file:
31
+ json.dump(data, file, ensure_ascii=False, indent=4)
32
+ except Exception as e:
33
+ logging.error(f"Ошибка при сохранении данных: {e}")
34
+ raise
35
 
36
  # Главная страница каталога
37
  @app.route('/catalog')
 
95
 
96
  if name and price and description:
97
  try:
98
+ # Обработка запятой в числе
99
+ price = float(price.replace(',', '.')) # Заменяем запятую на точку (если есть)
100
  except ValueError:
101
  logging.error("Ошибка: Цена должна быть числом.")
102
  return "Ошибка: Цена должна быть числом.", 400
103
 
104
+ # Загрузка текущих данных
105
  products = load_data()
106
  products.append({
107
  'name': name,
108
  'price': price,
109
  'description': description
110
  })
111
+
112
+ # Сохранение данных
113
+ try:
114
+ save_data(products)
115
+ except Exception as e:
116
+ return f"Ошибка при сохранении данных: {e}", 500
117
+
118
  return redirect(url_for('admin'))
119
 
120
  products = load_data()
 
207
  return render_template_string(admin_html, products=products)
208
 
209
  if __name__ == '__main__':
210
+ app.run(debug=True, host='0.0.0.0', port=7860)