diff --git a/database.py b/database.py index e2edd50..4620c45 100644 --- a/database.py +++ b/database.py @@ -263,3 +263,11 @@ class DatabaseManager: """, (name.strip(), price.strip(), float(price_numeric), description.strip(), int(is_active), service_id.strip())) conn.commit() return cursor.rowcount > 0 + + def delete_service(self, service_id: str) -> bool: + """Удалить услугу из базы данных.""" + with self._get_connection() as conn: + cursor = conn.cursor() + cursor.execute("DELETE FROM services WHERE id = ?", (service_id.strip(),)) + conn.commit() + return cursor.rowcount > 0 diff --git a/server.py b/server.py index db9fbc4..5594c81 100644 --- a/server.py +++ b/server.py @@ -915,11 +915,15 @@ DASHBOARD_TEMPLATE = """ {% endif %} - + + {% endfor %} @@ -1127,6 +1131,30 @@ DASHBOARD_TEMPLATE = """ }); } + function deleteService(id, name) { + if (!confirm(`Вы действительно хотите безвозвратно удалить услугу "${name}" (ID: ${id})?`)) { + return; + } + + fetch(`/admin/services/delete/${id}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' } + }) + .then(res => res.json()) + .then(data => { + if (data.status === 'success') { + alert('Услуга успешно удалена!'); + window.location.reload(); + } else { + alert('Ошибка: ' + data.message); + } + }) + .catch(err => { + console.error(err); + alert('Не удалось связаться с сервером'); + }); + } + function filterStatus(status) { currentFilter = status; @@ -1377,6 +1405,20 @@ def admin_edit_service(service_id): except Exception as e: return jsonify({"status": "error", "message": str(e)}), 500 +@app.route('/admin/services/delete/', methods=['POST']) +def admin_delete_service(service_id): + if not session.get('logged_in'): + return jsonify({"status": "error", "message": "Не авторизован"}), 403 + + try: + success = db.delete_service(service_id) + if success: + return jsonify({"status": "success", "message": "Услуга успешно удалена"}) + else: + return jsonify({"status": "error", "message": "Не удалось удалить услугу (возможно, она не найдена)"}), 404 + except Exception as e: + return jsonify({"status": "error", "message": str(e)}), 500 + @app.route('/admin/check-payment/', methods=['POST']) def admin_check_payment(reg_id): if not session.get('logged_in'):