fruitpicker01 commited on
Commit
119d367
·
verified ·
1 Parent(s): 389cd36

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -14
app.py CHANGED
@@ -117,12 +117,15 @@ def download_current_message_database():
117
 
118
  if data_list:
119
  df = pd.concat(data_list, ignore_index=True)
120
- # Convert 'Дата сохранения' to datetime and adjust by +3 hours
121
  df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
122
 
123
- # Remove duplicates
124
- df.drop_duplicates(inplace=True)
125
- # Sort by 'Дата сохранения' descending
 
 
 
126
  df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
127
 
128
  # Set column order
@@ -150,12 +153,10 @@ def download_current_message_database():
150
 
151
  # Adjust column widths and text wrapping
152
  from openpyxl.styles import Alignment
153
-
154
- # Columns to fit content width
155
- columns_fit_content = ["Модель", "Автор", "Дата сохранения", "Пол", "Поколение", "Психотип", "Стадия бизнеса", "ОПФ"]
156
- # Columns to set fixed width and wrap text
157
- columns_wrap_text = ["Персонализированное сообщение", "Комментарий", "Откорректированное сообщение"]
158
-
159
  for idx, col in enumerate(df.columns, 1):
160
  column_letter = get_column_letter(idx)
161
  if col in columns_fit_content:
@@ -167,11 +168,18 @@ def download_current_message_database():
167
  adjusted_width = (max_length + 2)
168
  worksheet.column_dimensions[column_letter].width = adjusted_width
169
  elif col in columns_wrap_text:
170
- worksheet.column_dimensions[column_letter].width = 50 # Set fixed width
171
  for cell in worksheet[column_letter]:
172
  cell.alignment = Alignment(wrap_text=True)
173
  else:
174
- worksheet.column_dimensions[column_letter].width = 20 # Default width
 
 
 
 
 
 
 
175
 
176
  output.seek(0) # Reset pointer
177
 
@@ -225,9 +233,9 @@ def update_download_link():
225
  # Total messages without need for corrections
226
  clean_df = df[
227
  df['Персонализированное сообщение'].notna() & df['Персонализированное сообщение'].str.strip().ne('') &
228
- df['Комментарий'].isna() & df['Откорректированное сообщение'].isna()
 
229
  ]
230
- total_clean_messages = len(clean_df)
231
 
232
  # Number of messages by model
233
  model_counts = df['Модель'].value_counts()
 
117
 
118
  if data_list:
119
  df = pd.concat(data_list, ignore_index=True)
120
+ # Преобразуем 'Дата сохранения' в datetime и корректируем на +3 часа
121
  df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
122
 
123
+ # Удаляем дубликаты, игнорируя 'Дата сохранения'
124
+ columns_to_consider = df.columns.tolist()
125
+ columns_to_consider.remove('Дата сохранения')
126
+ df.drop_duplicates(subset=columns_to_consider, inplace=True)
127
+
128
+ # Сортируем по 'Дата сохранения' по убыванию
129
  df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
130
 
131
  # Set column order
 
153
 
154
  # Adjust column widths and text wrapping
155
  from openpyxl.styles import Alignment
156
+
157
+ # Столбцы для установки конкретного выравнивания
158
+ columns_to_align = ["Модель", "Автор", "Дата сохранения", "Комментарий"]
159
+
 
 
160
  for idx, col in enumerate(df.columns, 1):
161
  column_letter = get_column_letter(idx)
162
  if col in columns_fit_content:
 
168
  adjusted_width = (max_length + 2)
169
  worksheet.column_dimensions[column_letter].width = adjusted_width
170
  elif col in columns_wrap_text:
171
+ worksheet.column_dimensions[column_letter].width = 50 # Устанавливаем фиксированную ширину
172
  for cell in worksheet[column_letter]:
173
  cell.alignment = Alignment(wrap_text=True)
174
  else:
175
+ worksheet.column_dimensions[column_letter].width = 20 # Ширина по умолчанию
176
+
177
+ # Устанавливаем выравнивание для указанных столбцов
178
+ for cell in worksheet[column_letter]:
179
+ if col in columns_to_align:
180
+ cell.alignment = Alignment(vertical='center', horizontal='left', wrap_text=True)
181
+ else:
182
+ cell.alignment = Alignment(wrap_text=True)
183
 
184
  output.seek(0) # Reset pointer
185
 
 
233
  # Total messages without need for corrections
234
  clean_df = df[
235
  df['Персонализированное сообщение'].notna() & df['Персонализированное сообщение'].str.strip().ne('') &
236
+ ((df['Комментарий'].isna()) | (df['Комментарий'].str.strip() == '')) &
237
+ ((df['Откорректированное сообщение'].isna()) | (df['Откорректированное сообщение'].str.strip() == ''))
238
  ]
 
239
 
240
  # Number of messages by model
241
  model_counts = df['Модель'].value_counts()