File size: 701 Bytes
054900e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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",
)
|