async def select_journal_year(user: User, data: dict): keyboard = InlineKeyboardMarkup(row_width=2) journal = Journal.get(Journal.id == data['journal_id']) for journal_issue in (JournalIssue.select(JournalIssue.year).where( JournalIssue.journal == journal).distinct().order_by( JournalIssue.year.desc())): callback_data = { 'action': 'select_issue', 'journal_id': data['journal_id'], 'year': journal_issue.year } n = len(json.dumps(callback_data)) keyboard.add( InlineKeyboardButton(text=journal_issue.year, callback_data=json.dumps(callback_data))) await bot.send_message(user.user_id, 'Выберите год:', reply_markup=keyboard)
async def select_issue(user: User, data: dict): keyboard = InlineKeyboardMarkup(row_width=2) journal = Journal.get(Journal.id == data['journal_id']) year = data.get('year', 2021) for journal_issue in JournalIssue.select().where( JournalIssue.journal == journal, JournalIssue.year == year).order_by(JournalIssue.number): if len(journal_issue.articles) == 0: continue callback_data = { # max length 64 symbols 'action': 'select_article', 'journal_issue_id': journal_issue.id } keyboard.add( InlineKeyboardButton( text=f"№{journal_issue.number}|{journal_issue.title}", callback_data=json.dumps(callback_data))) await bot.send_message(user.user_id, 'Выберите номер журнала:', reply_markup=keyboard)
import os import time from random import randint from models import Journal LEVEL_CHOICE = [10, 20, 30, 40, 50] count = int(os.environ.get("ITERATIONS", "1000")) maxval = count - 1 count *= 2 start = time.time() for _ in range(count): val = randint(1, maxval) Journal.get(Journal.id == val) now = time.time() print(f"peewee, F: Rows/sec: {count / (now - start): 10.2f}")