Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
#
|
121 |
df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
|
122 |
|
123 |
-
#
|
124 |
-
df.
|
125 |
-
|
|
|
|
|
|
|
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 |
-
#
|
155 |
-
|
156 |
-
|
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 #
|
171 |
for cell in worksheet[column_letter]:
|
172 |
cell.alignment = Alignment(wrap_text=True)
|
173 |
else:
|
174 |
-
worksheet.column_dimensions[column_letter].width = 20 #
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
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()
|