| 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", |
| ) |
|
|