Danila_lipatov

check file + send email

Jun 25th, 2025
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.13 KB | None | 0 0
  1. if 'file' in st.session_state and 'row_' in st.session_state:
  2.  
  3.     if 'file_processed' not in st.session_state:
  4.         st.session_state['file_processed'] = False
  5.     if 'result_file' not in st.session_state:
  6.         st.session_state['result_file'] = None
  7.  
  8.     if st.button("📤 Обработать файл"):
  9.         with st.spinner("Обрабатываю..."):
  10.             try:
  11.                 row = st.session_state['row_']
  12.                 # Приводим к row_dict
  13.                 # if isinstance(row, pd.DataFrame):
  14.                 #     row_dict = row.to_dict(orient="records")
  15.                 # elif isinstance(row, pd.Series):
  16.                 #     row_dict = [row.to_dict()]
  17.                 # elif isinstance(row, dict):
  18.                 #     row_dict = [row]
  19.                 # elif isinstance(row, list):
  20.                 #     if all(isinstance(item, dict) for item in row):
  21.                 #         row_dict = row
  22.                 #     else:
  23.                 #         raise ValueError("Список содержит не словари")
  24.                 # else:
  25.                 #     raise ValueError(f"Неподдерживаемый тип данных в st.session_state['row_']: {type(row)}")
  26.  
  27.                 # row_dict = row
  28.  
  29.                 # Чистим данные от 'null' и невалидных значений
  30.                 # row_dict = clean_row_dict(row_dict)
  31.  
  32.                 # st.write(json.dumps(row_dict, ensure_ascii=False, indent=2))
  33.                 # print(json.dumps(row_dict, ensure_ascii=False, indent=2), type(json.dumps(row_dict, ensure_ascii=False, indent=2)))
  34.                 files = {"file": st.session_state['file']}
  35.                 data = {"data": json.dumps({"index" : st.session_state["index"]}, ensure_ascii=False)}
  36.                 try:
  37.                     response_valid = requests.post(
  38.                         API_PROCESS_PATH,
  39.                         files=files,
  40.                         data=data,
  41.                         headers={"Authorization": f"Bearer {API_PROCESS_KEY}"}
  42.                     )
  43.                 except ValueError as e:
  44.                     print(e)
  45.  
  46.                 if response_valid.status_code == 200:
  47.                     json_dict = response_valid.json()
  48.                     file_base64 = json_dict['file_base64']
  49.                     file_name = json_dict['file_name']
  50.  
  51.                     import base64
  52.  
  53.                     file_bytes = base64.b64decode(file_base64)
  54.                     st.session_state['result_file'] = file_bytes
  55.                     st.session_state['result_file_name'] = file_name
  56.  
  57.                     # with open(st.session_state['result_file_name'], 'wb') as f:
  58.                     #     f.write(st.session_state['result_file'])
  59.  
  60.                     #logs
  61.                     print(response_valid.content[:100])
  62.                     print(response_valid.status_code)
  63.                     print(response_valid.headers.get('Content-Type'))
  64.  
  65.                     st.session_state['file_processed'] = True
  66.                     st.success("✅ Файл успешно обработан! Теперь укажите email для отправки.")
  67.  
  68.                 else:
  69.                     error_msg = response_valid.json().get('error', 'Неизвестная ошибка')
  70.                     st.error(f"❌ Ошибка API: {error_msg}")
  71.  
  72.             except Exception as e:
  73.                 print(e)
  74.                 st.exception(e)
  75.  
  76.     if st.session_state['file_processed']:
  77.         user_email = st.text_input("📧 Введите ваш email")
  78.         if st.button("📨 Отправить файл на email"):
  79.             if not user_email.strip():
  80.                 st.warning("⚠️ Email не указан — файл не будет отправлен")
  81.             else:
  82.                 try:
  83.                     send_result(user_email, st.session_state['result_file'], "updated_file.docx")
  84.                     st.success(f"📩 Файл отправлен на {user_email}")
  85.                 except Exception as e:
  86.                     print(e)
  87.                     st.error(f"⚠️ Ошибка отправки: {e}")
  88.  
Add Comment
Please, Sign In to add comment