fruitpicker01 commited on
Commit
ff55181
·
verified ·
1 Parent(s): b5bb9b1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -3
app.py CHANGED
@@ -93,7 +93,9 @@ def download_current_message_database():
93
  # Извлекаем timestamp из имени файла
94
  try:
95
  timestamp = file_name.split('_')[1].split('.')[0]
96
- save_date = datetime.utcfromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S')
 
 
97
  except:
98
  save_date = None # или установить значение по умолчанию
99
 
@@ -112,15 +114,62 @@ def download_current_message_database():
112
 
113
  if data_list:
114
  df = pd.concat(data_list, ignore_index=True)
115
- # Преобразуем 'Дата сохранения' в datetime
116
  df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
 
117
  # Удаляем дубликаты
118
  df.drop_duplicates(inplace=True)
119
  # Сортируем по 'Дата сохранения' по убыванию
120
  df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  # Сохраняем Excel-файл в памяти
122
  output = io.BytesIO()
123
- df.to_excel(output, index=False)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  output.seek(0) # Сбрасываем указатель
125
 
126
  # Кодируем содержимое файла в base64 для загрузки на GitHub
 
93
  # Извлекаем timestamp из имени файла
94
  try:
95
  timestamp = file_name.split('_')[1].split('.')[0]
96
+ # Добавляем 3 часа к времени
97
+ save_date = datetime.utcfromtimestamp(int(timestamp)) + timedelta(hours=3)
98
+ save_date = save_date.strftime('%Y-%m-%d %H:%M:%S')
99
  except:
100
  save_date = None # или установить значение по умолчанию
101
 
 
114
 
115
  if data_list:
116
  df = pd.concat(data_list, ignore_index=True)
117
+ # Преобразуем 'Дата сохранения' в datetime и корректируем на +3 часа
118
  df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
119
+
120
  # Удаляем дубликаты
121
  df.drop_duplicates(inplace=True)
122
  # Сортируем по 'Дата сохранения' по убыванию
123
  df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
124
+
125
+ # Устанавливаем порядок столбцов
126
+ desired_columns = [
127
+ "Модель", "Автор", "Дата сохранения", "Персонализированное сообщение",
128
+ "Комментарий", "Откорректированное сообщение", "Описание предложения",
129
+ "Преимущества", "Ключевое сообщение", "Подход", "Пол", "Поколение",
130
+ "Психотип", "Стадия бизнеса", "Отрасль", "ОПФ",
131
+ "Неперсонализированный промпт", "Неперсонализированное сообщение",
132
+ "Персонализированный промпт"
133
+ ]
134
+
135
+ # Проверяем, что все указанные столбцы есть в DataFrame
136
+ existing_columns = [col for col in desired_columns if col in df.columns]
137
+ df = df[existing_columns]
138
+
139
  # Сохраняем Excel-файл в памяти
140
  output = io.BytesIO()
141
+ with pd.ExcelWriter(output, engine='openpyxl') as writer:
142
+ df.to_excel(writer, index=False)
143
+
144
+ # Получаем рабочий лист
145
+ workbook = writer.book
146
+ worksheet = writer.sheets['Sheet1']
147
+
148
+ # Настройка ширины столбцов и переноса текста
149
+ from openpyxl.styles import Alignment
150
+
151
+ # Столбцы для установки ширины по содержимому
152
+ columns_fit_content = ["Модель", "Автор", "Дата сохранения", "Пол", "Поколение", "Психотип", "Стадия бизнеса", "ОПФ"]
153
+ # Столбцы для установки ширины и переноса текста
154
+ columns_wrap_text = ["Персонализированное сообщение", "Комментарий", "Откорректированное сообщение"]
155
+
156
+ for idx, col in enumerate(df.columns, 1):
157
+ column_letter = get_column_letter(idx)
158
+ if col in columns_fit_content:
159
+ max_length = 0
160
+ column = df[col].astype(str)
161
+ for cell_value in column:
162
+ if cell_value:
163
+ max_length = max(max_length, len(cell_value))
164
+ adjusted_width = (max_length + 2)
165
+ worksheet.column_dimensions[column_letter].width = adjusted_width
166
+ elif col in columns_wrap_text:
167
+ worksheet.column_dimensions[column_letter].width = 50 # Устанавливаем фиксированную ширину
168
+ for cell in worksheet[column_letter]:
169
+ cell.alignment = Alignment(wrap_text=True)
170
+ else:
171
+ worksheet.column_dimensions[column_letter].width = 20 # Ширина по умолчанию
172
+
173
  output.seek(0) # Сбрасываем указатель
174
 
175
  # Кодируем содержимое файла в base64 для загрузки на GitHub