Files
Excel-project/server/backend/handlers/digitalization.py
2026-01-21 19:39:37 +03:00

32 lines
1.4 KiB
Python

from pydantic import ValidationError
from server.backend.schemas.pydantic import ExcelDigitalization,settings,Translit
from server.backend.api.excel_prices import processing
import re
import pandas as pd
def process_sheet(df,real_arti: int):
# выбираем нужные колонки по индексам
df = df.iloc[:, [real_arti]].copy()
df.dropna(inplace=True)
# складываем суммы
df = df.iloc[:, [0]]
df.columns = ['arti']
# нормализация
df['arti'] = df['arti'].replace(Translit.TRANSLIT, regex=True)
df['arti'] = df['arti'].astype(str).str.upper().str.extract(f'({settings.PATTERN})')
# группировка
print(df)
df = processing(df)
validated_rows, errors = [], []
for i, row in df.iterrows():
try:
validated_rows.append(ExcelDigitalization(**row.to_dict()))
except ValidationError as e:
errors.append((i, e.errors()))
if errors:
raise Exception("There are some errors with validation in digitalization", errors)
df_validated = pd.DataFrame([r.model_dump() for r in validated_rows])
return df_validated
def evaluating(df, real_arti:int, types:str):
validated_rows_1 = process_sheet(df, real_arti=real_arti) # номера столбцов от озона
validated_rows_1.to_excel(f"./excel_files/{types}.xlsx")
return validated_rows_1