Исходный код models

import datetime


[документация] class Transaction: """Класс, представляющий отдельную финансовую операцию. Используется для учета поступлений (income) или расходов (expense) денежных средств с валидацией даты и очисткой строковых данных. Attributes: amount (float): Сумма денежных средств. category (str): Категория операции (например, продукты, бензин, зарплата). date (datetime.datetime): Объект даты операции. description (str): Дополнительное описание транзакции. transaction_type (str): Тип операции ('expense' или 'income'). """ def __init__( self, amount: float, category: str, date: str, description: str = '', transaction_type: str = 'expense' ): """Инициализирует объект транзакции. Args: amount (float): Сумма операции. category (str): Категория операции. Строка очищается от пробелов. date (str): Дата в строковом формате 'YYYY-MM-DD'. description (str, optional): Описание операции. По умолчанию ''. transaction_type (str, optional): Тип операции: 'expense' (расход) или 'income' (доход). По умолчанию 'expense'. Raises: ValueError: Если формат даты `date` не соответствует 'YYYY-MM-DD'. """ self.amount = amount self.category = category.strip() # Преобразование строки в объект datetime согласно формату self.date = datetime.datetime.strptime(date, '%Y-%m-%d') self.description = description.strip() self.transaction_type = transaction_type.strip()
[документация] def to_dict(self): """Возвращает данные транзакции в виде словаря. Returns: dict: Словарь, содержащий ключи 'amount', 'category', 'date', 'description' и 'transaction_type'. """ return { 'amount': self.amount, 'category': self.category, 'date': self.date, 'description': self.description, 'transaction_type': self.transaction_type }