Source code for orm.excel_file

from datetime import datetime
from io import BytesIO

import sqlalchemy as sql
from sqlalchemy.orm import (
    Mapped,
    mapped_column,
)
from sqlalchemy.schema import FetchedValue
from sqlalchemy_utc.sqltypes import UtcDateTime
import humanize
import pandas as pd

from app.model.orm.orm_base import OrmBase


[docs] class ExcelFile(OrmBase):
[docs] __tablename__ = 'ExcelFiles'
[docs] id: Mapped[int] = mapped_column(primary_key=True)
[docs] filename: Mapped[str] = mapped_column(sql.String(255))
[docs] size: Mapped[int] = mapped_column(sql.Integer)
[docs] content: Mapped[bytes] = mapped_column(sql.LargeBinary)
[docs] createdAt: Mapped[datetime] = mapped_column(UtcDateTime, server_default=FetchedValue())
@classmethod
[docs] def from_upload(Self, uploaded_file): file = ExcelFile() file.filename = uploaded_file.filename file.content = uploaded_file.read() file.size = len(file.content) return file
@property
[docs] def humanized_size(self): return humanize.naturalsize(self.size)
[docs] def extract_sheets(self): excel = pd.ExcelFile(BytesIO(self.content)) sheets = { name: pd.read_excel(excel, sheet_name=name) for name in excel.sheet_names } return sheets