wa_gc_api / app.py
DmitrMakeev's picture
Update app.py
61e87e6 verified
raw
history blame
3.54 kB
from flask import Flask, request, render_template_string, jsonify
from flask import render_template
import sqlite3
import os
app = Flask(__name__, template_folder="./")
# Создание базы данных и таблицы
def init_db():
try:
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
phone TEXT NOT NULL,
email TEXT NOT NULL
)
''')
conn.commit()
conn.close()
except Exception as e:
print(f"Error initializing database: {e}")
# Вызов функции для инициализации базы данных
init_db()
@app.route('/settings', methods=['GET'])
def settings():
return render_template('settings.html')
# Маршрут для обработки GET-запроса
@app.route('/add_contact', methods=['GET'])
def add_contact():
try:
name = request.args.get('name')
phone = request.args.get('phone')
email = request.args.get('email')
if not name or not phone or not email:
return "Parameters 'name', 'phone', and 'email' are required.", 400
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO contacts (name, phone, email) VALUES (?, ?, ?)', (name, phone, email))
conn.commit()
conn.close()
return f"Contact added: {name} - {phone} - {email}", 200
except Exception as e:
print(f"Error adding contact: {e}")
return "Internal Server Error", 500
# Маршрут для отображения таблицы контактов
@app.route('/contacts')
def show_contacts():
try:
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('SELECT name, phone, email FROM contacts')
contacts = cursor.fetchall()
conn.close()
# HTML-шаблон для отображения таблицы
html = '''
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Contacts</title>
<style>
table {
width: 70%;
border-collapse: collapse;
}
th, td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h1>Contacts</h1>
<table>
<tr>
<th>Name</th>
<th>Phone</th>
<th>Email</th>
</tr>
{% for contact in contacts %}
<tr>
<td>{{ contact[0] }}</td>
<td>{{ contact[1] }}</td>
<td>{{ contact[2] }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
'''
return render_template_string(html, contacts=contacts)
except Exception as e:
print(f"Error showing contacts: {e}")
return "Internal Server Error", 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))