Spaces:
test-sj-crm
/
Runtime error

DmitrMakeev commited on
Commit
51547e3
·
verified ·
1 Parent(s): 60a81ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -17
app.py CHANGED
@@ -738,6 +738,16 @@ def send_to_google_forms(user_data, gog_url):
738
 
739
 
740
  def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
 
 
 
 
 
 
 
 
 
 
741
  conn = sqlite3.connect(db_name)
742
  cursor = conn.cursor()
743
 
@@ -748,15 +758,15 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
748
 
749
  logging.debug(f"Processing user with email: {email}")
750
 
751
- cursor.execute("SELECT web_st, ws_st, b_mess FROM contacts WHERE email = ?", (email,))
 
752
  user = cursor.fetchone()
753
  logging.debug(f"User found: {user}")
754
 
755
- current_web_st = user[0] if user else None
756
- current_ws_st = user[1] if user else None
757
- current_messages = user[2] if user else ""
758
- logging.debug(f"Current web_st: {current_web_st}, current_ws_st: {current_ws_st}, current_messages: {current_messages}")
759
 
 
760
  transformed_data = {}
761
  for json_key, db_column in mapping_template.items():
762
  value = user_data.get(json_key, "")
@@ -770,6 +780,7 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
770
  transformed_data[db_column] = str(value)
771
  logging.debug(f"Transformed data: {transformed_data}")
772
 
 
773
  required_fields = [
774
  "vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
775
  "b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess",
@@ -781,6 +792,7 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
781
  transformed_data[field] = ""
782
  logging.debug(f"Transformed data after adding required fields: {transformed_data}")
783
 
 
784
  if 'phone' in user_data:
785
  phone = user_data['phone']
786
  if phone.startswith('+'):
@@ -788,35 +800,42 @@ def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
788
  transformed_data['phone'] = phone
789
  logging.debug(f"Transformed data after phone processing: {transformed_data}")
790
 
791
- # Проверяем наличие ws_st в базе данных и не перезаписываем его, если оно уже существует
792
- if current_ws_st is not None and current_ws_st != "":
793
- transformed_data['ws_st'] = current_ws_st
 
 
 
794
  else:
795
- transformed_data['ws_st'] = user_data.get('ws_st', "")
796
 
797
- # Увеличиваем значение web_st на 1, если пользователь уже существует в базе данных
798
- if current_web_st is not None and current_web_st != "":
799
- transformed_data['web_st'] = int(current_web_st) + 1
800
  else:
801
  transformed_data['web_st'] = 1
802
 
 
803
  new_messages = transformed_data.get('b_mess', "")
804
- if current_messages:
805
- transformed_data['b_mess'] = current_messages + "; " + new_messages
806
  else:
807
  transformed_data['b_mess'] = new_messages
808
  logging.debug(f"Transformed data after message processing: {transformed_data}")
809
 
 
810
  if user:
811
  update_query = "UPDATE contacts SET "
812
  update_values = []
813
  for column, value in transformed_data.items():
814
- update_query += f"{column} = ?, "
815
- update_values.append(value)
 
816
  update_query = update_query.rstrip(", ") + " WHERE email = ?"
817
  update_values.append(email)
818
  logging.debug(f"Update query: {update_query} with values: {update_values}")
819
- cursor.execute(update_query, update_values)
 
820
  else:
821
  columns = ', '.join(transformed_data.keys())
822
  placeholders = ', '.join('?' for _ in transformed_data)
 
738
 
739
 
740
  def update_or_insert_user(db_name, user_data, mapping_template, gog_url):
741
+ """
742
+ Обновляет или вставляет данные пользователя в базу данных и отправляет их в Google Forms.
743
+
744
+ Параметры:
745
+ - db_name: Имя файла базы данных SQLite.
746
+ - user_data: Словарь с данными пользователя.
747
+ - mapping_template: Шаблон сопоставления ключей данных пользователя и колонок в базе данных.
748
+ - gog_url: URL Google Forms для отправки данных.
749
+ """
750
+
751
  conn = sqlite3.connect(db_name)
752
  cursor = conn.cursor()
753
 
 
758
 
759
  logging.debug(f"Processing user with email: {email}")
760
 
761
+ # Получаем текущие данные пользователя из базы данных
762
+ cursor.execute("SELECT * FROM contacts WHERE email = ?", (email,))
763
  user = cursor.fetchone()
764
  logging.debug(f"User found: {user}")
765
 
766
+ current_data = {description[0]: value for description, value in zip(cursor.description, user)} if user else {}
767
+ logging.debug(f"Current data: {current_data}")
 
 
768
 
769
+ # Преобразуем данные пользователя
770
  transformed_data = {}
771
  for json_key, db_column in mapping_template.items():
772
  value = user_data.get(json_key, "")
 
780
  transformed_data[db_column] = str(value)
781
  logging.debug(f"Transformed data: {transformed_data}")
782
 
783
+ # Заполняем все необходимые поля
784
  required_fields = [
785
  "vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
786
  "b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess",
 
792
  transformed_data[field] = ""
793
  logging.debug(f"Transformed data after adding required fields: {transformed_data}")
794
 
795
+ # Обработка номера телефона
796
  if 'phone' in user_data:
797
  phone = user_data['phone']
798
  if phone.startswith('+'):
 
800
  transformed_data['phone'] = phone
801
  logging.debug(f"Transformed data after phone processing: {transformed_data}")
802
 
803
+ # Обрабатываем статус WhatsApp
804
+ ws_st_value = user_data.get('ws_st', "")
805
+ if ws_st_value == "TRUE":
806
+ transformed_data['ws_st'] = 1
807
+ elif ws_st_value == "FALSE":
808
+ transformed_data['ws_st'] = 0
809
  else:
810
+ transformed_data['ws_st'] = current_data.get('ws_st', "")
811
 
812
+ # Увеличиваем значение web_st на 1, если пользователь уже существует
813
+ if current_data.get('web_st') is not None and current_data.get('web_st') != "":
814
+ transformed_data['web_st'] = int(current_data['web_st']) + 1
815
  else:
816
  transformed_data['web_st'] = 1
817
 
818
+ # Обрабатываем сообщения
819
  new_messages = transformed_data.get('b_mess', "")
820
+ if current_data.get('b_mess'):
821
+ transformed_data['b_mess'] = current_data['b_mess'] + "; " + new_messages
822
  else:
823
  transformed_data['b_mess'] = new_messages
824
  logging.debug(f"Transformed data after message processing: {transformed_data}")
825
 
826
+ # Вставка или обновление данных в базе данных
827
  if user:
828
  update_query = "UPDATE contacts SET "
829
  update_values = []
830
  for column, value in transformed_data.items():
831
+ if value != current_data.get(column):
832
+ update_query += f"{column} = ?, "
833
+ update_values.append(value)
834
  update_query = update_query.rstrip(", ") + " WHERE email = ?"
835
  update_values.append(email)
836
  logging.debug(f"Update query: {update_query} with values: {update_values}")
837
+ if update_values:
838
+ cursor.execute(update_query, update_values)
839
  else:
840
  columns = ', '.join(transformed_data.keys())
841
  placeholders = ', '.join('?' for _ in transformed_data)