DmitrMakeev commited on
Commit
5e8752e
·
verified ·
1 Parent(s): ffa8d16

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -66
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
- current_data = {description[0]: value for description, value in zip(cursor.description, user)}
796
- logging.debug(f"Current data: {current_data}")
797
  else:
798
- current_data = {}
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
- # Обрабатываем статус WhatsApp
835
- ws_st_value = user_data.get('ws_st', "")
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
- # Увеличиваем значение web_st на 1, если пользователь уже существует
844
- if current_data.get('web_st') is not None and current_data.get('web_st') != "":
845
- transformed_data['web_st'] = int(current_data['web_st']) + 1
846
  else:
847
  transformed_data['web_st'] = 1
848
 
849
- # Обрабатываем сообщения
850
  new_messages = transformed_data.get('b_mess', "")
851
- if current_data.get('b_mess'):
852
- transformed_data['b_mess'] = current_data['b_mess'] + "; " + new_messages
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 != current_data.get(column):
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
- if update_values:
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')