Update app.py
Browse files
app.py
CHANGED
@@ -736,45 +736,7 @@ def send_to_google_forms(user_data, gog_url):
|
|
736 |
|
737 |
|
738 |
|
739 |
-
|
740 |
-
import sqlite3
|
741 |
-
import logging
|
742 |
-
import requests
|
743 |
-
|
744 |
-
gog_url = "https://docs.google.com/forms/d/e/1FAIpQLSc-JbmXvgpgGq6KrkXsYSsfMACVMyIDnNqrHy6jImGeSRcpiQ/formResponse?usp=pp_url&entry.1556100878={name}&entry.1477412341={email}&entry.1634985541={phone}&entry.1736544219={vk_id}&entry.62153872={chat_id}&entry.1913752768={ws_st}&entry.1768186232={ws_stop}&entry.1198983592={web_st}&entry.994770784={fin_prog}&entry.910932310={b_city}&entry.1923801792={b_fin}&entry.2005444720={b_ban}&entry.741087361={b_ign}&entry.1316159837={b_baners}&entry.355123557={b_butt}&entry.395996312={b_mess}&entry.646571729={shop_st}&entry.578527800={curator}&entry.1936838964={pr1}&entry.1375537366={pr2}&entry.1249356084={pr3}&entry.752547226={pr4}&entry.704766458={pr5}&entry.1837661={gc_url}&entry.398837750={key_pr}&entry.225564240={n_con}&entry.1642320872={canal}&entry.1581826411={data_t}&entry.311131724={utm_source}&entry.1904279859={utm_medium}&entry.740234546={utm_campaign}&entry.880981295={utm_term}&entry.431306383={utm_content}"
|
745 |
-
|
746 |
-
DATABASE_NAME = 'data_gc.db'
|
747 |
-
|
748 |
-
def send_to_google_forms(user_data, gog_url):
|
749 |
-
"""
|
750 |
-
Отправляет данные пользователя в Google Forms.
|
751 |
-
|
752 |
-
Параметры:
|
753 |
-
- user_data: Словарь с данными пользователя.
|
754 |
-
- gog_url: URL Google Forms для отправки данных.
|
755 |
-
"""
|
756 |
-
# Формирование URL с параметрами
|
757 |
-
url = gog_url.format(**user_data)
|
758 |
-
|
759 |
-
# Отправка POST-запроса
|
760 |
-
response = requests.post(url)
|
761 |
-
|
762 |
-
if response.status_code == 200:
|
763 |
-
logging.debug(f"Data sent to Google Forms successfully for user: {user_data.get('email')}")
|
764 |
-
else:
|
765 |
-
logging.error(f"Failed to send data to Google Forms for user: {user_data.get('email')}. Response: {response.text}")
|
766 |
-
|
767 |
def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
768 |
-
"""
|
769 |
-
Обновляет или вставляет данные пользователя в базу данных и отправляет их в Google Forms.
|
770 |
-
|
771 |
-
Параметры:
|
772 |
-
- db_name: Имя файла базы данных SQLite.
|
773 |
-
- user_data: Словарь с данными пользователя.
|
774 |
-
- mapping_template: Шаблон сопоставления ключей данных пользователя и колонок в базе данных.
|
775 |
-
- gog_url: URL Google Forms для отправки данных.
|
776 |
-
"""
|
777 |
-
|
778 |
conn = sqlite3.connect(db_name)
|
779 |
cursor = conn.cursor()
|
780 |
|
@@ -785,19 +747,16 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
785 |
|
786 |
logging.debug(f"Processing user with email: {email}")
|
787 |
|
788 |
-
# Получаем текущие данные пользователя из базы данных
|
789 |
cursor.execute("SELECT * FROM contacts WHERE email = ?", (email,))
|
790 |
user = cursor.fetchone()
|
791 |
logging.debug(f"User found: {user}")
|
792 |
|
793 |
-
# Сохраняем текущие данные, если пользователь найден
|
794 |
if user:
|
795 |
-
|
796 |
-
|
797 |
else:
|
798 |
-
|
799 |
|
800 |
-
# Преобразуем данные пользователя
|
801 |
transformed_data = {}
|
802 |
for json_key, db_column in mapping_template.items():
|
803 |
value = user_data.get(json_key, "")
|
@@ -809,9 +768,10 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
809 |
transformed_data[db_column] = ""
|
810 |
else:
|
811 |
transformed_data[db_column] = str(value)
|
|
|
812 |
logging.debug(f"Transformed data: {transformed_data}")
|
813 |
|
814 |
-
#
|
815 |
required_fields = [
|
816 |
"vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
|
817 |
"b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess",
|
@@ -823,7 +783,7 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
823 |
transformed_data[field] = ""
|
824 |
logging.debug(f"Transformed data after adding required fields: {transformed_data}")
|
825 |
|
826 |
-
#
|
827 |
if 'phone' in user_data:
|
828 |
phone = user_data['phone']
|
829 |
if phone.startswith('+'):
|
@@ -831,42 +791,34 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
831 |
transformed_data['phone'] = phone
|
832 |
logging.debug(f"Transformed data after phone processing: {transformed_data}")
|
833 |
|
834 |
-
#
|
835 |
-
|
836 |
-
if ws_st_value == "TRUE":
|
837 |
-
transformed_data['ws_st'] = 1
|
838 |
-
elif ws_st_value == "FALSE":
|
839 |
-
transformed_data['ws_st'] = 0
|
840 |
-
else:
|
841 |
-
transformed_data['ws_st'] = current_data.get('ws_st', "")
|
842 |
|
843 |
-
#
|
844 |
-
if
|
845 |
-
transformed_data['web_st'] = int(
|
846 |
else:
|
847 |
transformed_data['web_st'] = 1
|
848 |
|
849 |
-
#
|
850 |
new_messages = transformed_data.get('b_mess', "")
|
851 |
-
if
|
852 |
-
transformed_data['b_mess'] =
|
853 |
else:
|
854 |
transformed_data['b_mess'] = new_messages
|
855 |
-
logging.debug(f"Transformed data after message processing: {transformed_data}")
|
856 |
|
857 |
-
#
|
858 |
if user:
|
859 |
update_query = "UPDATE contacts SET "
|
860 |
update_values = []
|
861 |
for column, value in transformed_data.items():
|
862 |
-
if value !=
|
863 |
update_query += f"{column} = ?, "
|
864 |
update_values.append(value)
|
865 |
update_query = update_query.rstrip(", ") + " WHERE email = ?"
|
866 |
update_values.append(email)
|
867 |
logging.debug(f"Update query: {update_query} with values: {update_values}")
|
868 |
-
|
869 |
-
cursor.execute(update_query, update_values)
|
870 |
else:
|
871 |
columns = ', '.join(transformed_data.keys())
|
872 |
placeholders = ', '.join('?' for _ in transformed_data)
|
@@ -887,7 +839,6 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
887 |
|
888 |
|
889 |
|
890 |
-
|
891 |
@app.route('/send_request', methods=['POST'])
|
892 |
def send_request():
|
893 |
token = request.form.get('token')
|
|
|
736 |
|
737 |
|
738 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
739 |
def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
740 |
conn = sqlite3.connect(db_name)
|
741 |
cursor = conn.cursor()
|
742 |
|
|
|
747 |
|
748 |
logging.debug(f"Processing user with email: {email}")
|
749 |
|
|
|
750 |
cursor.execute("SELECT * FROM contacts WHERE email = ?", (email,))
|
751 |
user = cursor.fetchone()
|
752 |
logging.debug(f"User found: {user}")
|
753 |
|
|
|
754 |
if user:
|
755 |
+
# Get current values from the database
|
756 |
+
current_values = dict(zip([col[0] for col in cursor.description], user))
|
757 |
else:
|
758 |
+
current_values = {}
|
759 |
|
|
|
760 |
transformed_data = {}
|
761 |
for json_key, db_column in mapping_template.items():
|
762 |
value = user_data.get(json_key, "")
|
|
|
768 |
transformed_data[db_column] = ""
|
769 |
else:
|
770 |
transformed_data[db_column] = str(value)
|
771 |
+
|
772 |
logging.debug(f"Transformed data: {transformed_data}")
|
773 |
|
774 |
+
# Ensure required fields are present
|
775 |
required_fields = [
|
776 |
"vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
|
777 |
"b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess",
|
|
|
783 |
transformed_data[field] = ""
|
784 |
logging.debug(f"Transformed data after adding required fields: {transformed_data}")
|
785 |
|
786 |
+
# Handle phone formatting
|
787 |
if 'phone' in user_data:
|
788 |
phone = user_data['phone']
|
789 |
if phone.startswith('+'):
|
|
|
791 |
transformed_data['phone'] = phone
|
792 |
logging.debug(f"Transformed data after phone processing: {transformed_data}")
|
793 |
|
794 |
+
# Update or set the `ws_st` value
|
795 |
+
transformed_data['ws_st'] = transformed_data.get('ws_st', current_values.get('ws_st', ""))
|
|
|
|
|
|
|
|
|
|
|
|
|
796 |
|
797 |
+
# Increment `web_st` value
|
798 |
+
if current_values.get('web_st'):
|
799 |
+
transformed_data['web_st'] = int(current_values['web_st']) + 1
|
800 |
else:
|
801 |
transformed_data['web_st'] = 1
|
802 |
|
803 |
+
# Update `b_mess` field
|
804 |
new_messages = transformed_data.get('b_mess', "")
|
805 |
+
if current_values.get('b_mess'):
|
806 |
+
transformed_data['b_mess'] = current_values['b_mess'] + "; " + new_messages
|
807 |
else:
|
808 |
transformed_data['b_mess'] = new_messages
|
|
|
809 |
|
810 |
+
# Prepare SQL statements
|
811 |
if user:
|
812 |
update_query = "UPDATE contacts SET "
|
813 |
update_values = []
|
814 |
for column, value in transformed_data.items():
|
815 |
+
if value != current_values.get(column, ""): # Only update if value has changed
|
816 |
update_query += f"{column} = ?, "
|
817 |
update_values.append(value)
|
818 |
update_query = update_query.rstrip(", ") + " WHERE email = ?"
|
819 |
update_values.append(email)
|
820 |
logging.debug(f"Update query: {update_query} with values: {update_values}")
|
821 |
+
cursor.execute(update_query, update_values)
|
|
|
822 |
else:
|
823 |
columns = ', '.join(transformed_data.keys())
|
824 |
placeholders = ', '.join('?' for _ in transformed_data)
|
|
|
839 |
|
840 |
|
841 |
|
|
|
842 |
@app.route('/send_request', methods=['POST'])
|
843 |
def send_request():
|
844 |
token = request.form.get('token')
|