tgs / bot /utils /users_export.py
AZILS's picture
Upload 119 files
054900e verified
raw
history blame contribute delete
701 Bytes
from __future__ import annotations
import csv
import io
from datetime import datetime, timezone
from aiogram.types import BufferedInputFile
from bot.database.models import UserModel
async def convert_users_to_csv(users: list[UserModel]) -> BufferedInputFile:
"""Export all users in csv file."""
columns = UserModel.__table__.columns
data = [[getattr(user, column.name) for column in columns] for user in users]
s = io.StringIO()
csv.writer(s).writerow(columns)
csv.writer(s).writerows(data)
s.seek(0)
return BufferedInputFile(
file=s.getvalue().encode("utf-8"),
filename=f"users_{datetime.now(timezone.utc).strftime('%Y.%m.%d_%H.%M')}.csv",
)