flask_irinas / app.py
DmitrMakeev's picture
Update app.py
ec75b5d verified
raw
history blame
23.2 kB
import sqlite3
from flask import Flask, request
import requests
import os
import pytz
import datetime
base_url = os.getenv('base_url') # URL сервера
token = os.getenv('token') # Ваш токен
app = Flask(__name__, template_folder="./")
db_path = 'users.db'
# Создаем соединение с базой данных SQLite3
def create_connection():
conn = sqlite3.connect(db_path)
return conn
# Инициализируем базу данных
def init_db():
conn = create_connection()
c = conn.cursor()
# Создаем таблицу для пользователей, если она не существует
c.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT,
phone TEXT,
pr5 TEXT,
pr4 TEXT,
pr3 TEXT,
pr2 TEXT,
pr1 TEXT,
timestamp TEXT
)''')
conn.commit()
conn.close()
# Функция для вставки данных пользователя в базу данных
def insert_form_data(name, email, phone, pr5, pr4, pr3, pr2, pr1):
conn = create_connection()
c = conn.cursor()
moscow_timezone = pytz.timezone('Europe/Moscow')
current_datetime = datetime.datetime.now(moscow_timezone)
timestamp = current_datetime.strftime('%Y-%m-%d %H:%M:%S')
c.execute('''INSERT INTO users (name, email, phone, pr5, pr4, pr3, pr2, pr1, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)''',
(name, email, phone, pr5, pr4, pr3, pr2, pr1, timestamp))
conn.commit()
conn.close()
# Функция для отправки запроса на сервер
def send_request(list_id, email, phone, name, param_name, param_phone, pr5, pr4, pr3, pr2, pr1, pr5_id, pr4_id, pr3_id, pr2_id, pr1_id):
data = {
"email": email,
"unconfirmed": False,
"values": [
{"parameter_id": pr5_id, "kind": "string", "list_id": list_id, "title": "pr5", "value": pr5},
{"parameter_id": pr4_id, "kind": "string", "list_id": list_id, "title": "pr4", "value": pr4},
{"parameter_id": pr3_id, "kind": "string", "list_id": list_id, "title": "pr3", "value": pr3},
{"parameter_id": pr2_id, "kind": "string", "list_id": list_id, "title": "pr2", "value": pr2},
{"parameter_id": pr1_id, "kind": "string", "list_id": list_id, "title": "pr1", "value": pr1},
{"parameter_id": param_phone, "kind": "string", "list_id": list_id, "title": "phone", "value": phone},
{"parameter_id": param_name, "kind": "string", "list_id": list_id, "title": "name", "value": name}
]
}
headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}
response = requests.post(f"{base_url}/email/lists/{list_id}/recipients", json=data, headers=headers)
return response.json()
# Инициализируем базу данных при запуске приложения
init_db()
# Обработчик POST запроса на /incoming
@app.route('/incoming', methods=['POST'])
def handle_incoming_request():
datas = request.json
name = datas.get('name')
email = datas.get('email')
phone = datas.get('phone')
pr5 = datas.get('pr5')
pr4 = datas.get('pr4')
pr3 = datas.get('pr3')
pr2 = datas.get('pr2')
pr1 = datas.get('pr1')
# Сохраняем данные пользователя в базу данных SQLite3
insert_form_data(name, email, phone, pr5, pr4, pr3, pr2, pr1)
# Отправляем запросы в листы подряд
response_1 = send_request(560768, email, phone, name, 393120, 393119, pr5, pr4, pr3, pr2, pr1, 393248, 393247, 393246, 393245, 393244)
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263)
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268)
# Возвращаем список ответов
return {'responses': [response_1, response_2, response_3]}
if __name__ == '__main__':
app.run(debug=True)
elif current_day == 1: # Вторник
if current_hour < 19:
# Утром во вторник
# Комментарий: Отправка в лист 1, лист 2, лист 3
response_1 = send_request(560768, email, phone, name, 393120, 393119, pr5, pr4, pr3, pr2, pr1, 393248, 393247, 393246, 393245, 393244)
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263)
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268)
# Возвращаем список ответов
return {'responses': [response_1,response_2,response_3]}
else:
# Вечером во вторник
# Комментарий: Отправка только лист 2, лист 3
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263)
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268)
# Возвращаем список ответов
return {'responses': [response_2,response_3]}
elif current_day == 2: # Среда
if current_hour < 19:
# Утром в среду
# Комментарий: Отправка в лист 1, лист 2, лист 3
show_params = False
list_id = 560774
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560774,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560774,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560774/recipients", json=data, headers=headers)
show_params = False
list_id = 560775
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560775,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560775,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560775/recipients", json=data, headers=headers)
show_params = False
list_id = 560776
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560776,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560776,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560776/recipients", json=data, headers=headers)
else:
# Вечером в среду
# Комментарий: Отправка в лист 1, лист 2, лист 3
show_params = False
list_id = 560777
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560777,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560777,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560777/recipients", json=data, headers=headers)
show_params = False
list_id = 560778
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560778,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560778,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560778/recipients", json=data, headers=headers)
show_params = False
list_id = 560779
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560779,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560779,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560779/recipients", json=data, headers=headers)
elif current_day == 3: # Четверг
if current_hour < 19:
# Утром в четверг
# Комментарий: Отправка в лист 1, лист 2, лист 3
show_params = False
list_id = 560780
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560780,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560780,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560780/recipients", json=data, headers=headers)
show_params = False
list_id = 560781
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560781,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560781,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560781/recipients", json=data, headers=headers)
show_params = False
list_id = 560782
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560782,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560782,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560782/recipients", json=data, headers=headers)
else:
# Вечером в четверг
# Комментарий: Отправка в лист 1, лист 2, лист 3
show_params = False
list_id = 560783
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560783,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560783,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560783/recipients", json=data, headers=headers)
show_params = False
list_id = 560784
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560784,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560784,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560784/recipients", json=data, headers=headers)
show_params = False
list_id = 560785
name = request.args.get('name')
email = request.args.get('email')
phone = request.args.get('phone')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": 393120,
"kind": "string",
"list_id": 560785,
"title": "phone",
"value": phone
},
{
"parameter_id": 393119,
"kind": "string",
"list_id": 560785,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/560785/recipients", json=data, headers=headers)
return response.json()
@app.route('/grups', methods=['GET'])
def grup():
return render_template('grups.html')
@app.route('/send_request_gr', methods=['POST'])
def send_request_gr():
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
api_token = request.form.get('api_token')
group_id = request.form.get('group_id')
url = f"https://api.notisend.ru/v1/email/lists/{group_id}/parameters"
response = requests.get(url, headers=headers)
data = response.json()
return jsonify(data)
@app.route('/save_db', methods=['GET'])
def save_db():
show_params = False
list_id = request.args.get('list_id')
name = request.args.get('name')
name_id = request.args.get('name_id')
email = request.args.get('email')
phone = request.args.get('phone')
phone_id = request.args.get('phone_id')
pr1 = request.args.get('pr1')
pr1_id = request.args.get('pr1_id')
pr2 = request.args.get('pr2')
pr2_id = request.args.get('pr2_id')
pr3 = request.args.get('pr3')
pr3_id = request.args.get('pr3_id')
pr4 = request.args.get('pr4')
pr4_id = request.args.get('pr4_id')
pr5 = request.args.get('pr5')
pr5_id = request.args.get('pr5_id')
data = {
"email": email,
"unconfirmed": False,
"values": [
{
"parameter_id": pr5_id,
"kind": "string",
"list_id": list_id,
"title": "pr5",
"value": pr5
},
{
"parameter_id": pr4_id,
"kind": "string",
"list_id": list_id,
"title": "pr4",
"value": pr4
},
{
"parameter_id": pr3_id,
"kind": "string",
"list_id": list_id,
"title": "pr3",
"value": pr3
},
{
"parameter_id": pr2_id,
"kind": "string",
"list_id": list_id,
"title": "pr2",
"value": pr2
},
{
"parameter_id": pr1_id,
"kind": "string",
"list_id": list_id,
"title": "pr1",
"value": pr1
},
{
"parameter_id": phone_id,
"kind": "string",
"list_id": list_id,
"title": "phone",
"value": phone
},
{
"parameter_id": name_id,
"kind": "string",
"list_id": list_id,
"title": "name",
"value": name
}
]
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(f"{base_url}/email/lists/{list_id}/recipients", json=data, headers=headers)
if show_params:
system_vars = {
'base_url': base_url,
'token': token
}
return jsonify({'system_variables': system_vars, 'request_parameters': request.args})
else:
return response.text
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))