src.db.models.yoomoney
1from datetime import datetime 2 3from fastui.components.display import DisplayLookup 4from fastui.events import GoToEvent 5from pydantic import BaseModel, Field, model_validator 6 7 8class YoomoneyOperation(BaseModel): 9 """Модель операции YooMoney. 10 11 Эта модель представляет собой структуру данных для хранения информации 12 об операциях YooMoney. 13 """ 14 15 __tablename__ = "yoomoney" 16 17 operation_id: str 18 """Уникальный идентификатор операции.""" 19 20 status: str 21 """Статус операции.""" 22 23 datetime: datetime 24 """Дата и время операции.""" 25 26 title: str 27 """Заголовок операции.""" 28 29 pattern_id: str | None = None 30 """Идентификатор шаблона операции (по умолчанию None).""" 31 32 direction: str 33 """Направление операции (например, 'incoming' или 'outgoing').""" 34 35 amount: float 36 """Сумма операции.""" 37 38 label: str 39 """Метка операции.""" 40 41 type: str 42 """Тип операции.""" 43 44 site_datetime: str = Field(init=False, title="Datetime", default="00:00") 45 """Строковое представление даты и времени операции (не инициализируется при создании).""" 46 47 @model_validator(mode="after") 48 def set_date(cls, values: BaseModel): 49 """Устанавливает строковое представление даты операции. 50 51 Args: 52 cls: Класс схемы. 53 values (BaseModel): Значения для валидации. 54 55 Returns: 56 BaseModel: Обновленные значения. 57 """ 58 if hasattr(values, "datetime"): 59 values.site_datetime = values.datetime.astimezone().ctime() 60 return values 61 62 63class YoomoneyOperationDetails(BaseModel): 64 """Модель деталей операции YooMoney. 65 66 Эта модель представляет собой структуру данных для хранения подробной информации 67 об операциях YooMoney. 68 """ 69 70 operation_id: str 71 """Уникальный идентификатор операции.""" 72 73 status: str 74 """Статус операции.""" 75 76 pattern_id: str | None = None 77 """Идентификатор шаблона операции (по умолчанию None).""" 78 79 direction: str 80 """Направление операции (например, 'incoming' или 'outgoing').""" 81 82 amount: float 83 """Сумма операции.""" 84 85 amount_due: str | None = None 86 """Сумма, подлежащая оплате (по умолчанию None).""" 87 88 fee: float | None = None 89 """Комиссия за операцию (по умолчанию None).""" 90 91 answer_datetime: datetime | None = None 92 """Дата и время ответа (по умолчанию None).""" 93 94 datetime: datetime 95 """Дата и время операции.""" 96 97 title: str 98 """Заголовок операции.""" 99 100 sender: str | None = None 101 """Отправитель операции (по умолчанию None).""" 102 103 recipient: str | None = None 104 """Получатель операции (по умолчанию None).""" 105 106 recipient_type: str | None = None 107 """Тип получателя (по умолчанию None).""" 108 109 message: str | None = None 110 """Сообщение, связанное с операцией (по умолчанию None).""" 111 112 comment: str | None = None 113 """Комментарий к операции (по умолчанию None).""" 114 115 codepro: bool | None = None 116 """Указывает, защищена ли операция с помощью CodePro (по умолчанию None).""" 117 118 protection_code: str | None = None 119 """Код защиты операции (по умолчанию None).""" 120 121 expires: str | None = None 122 """Срок действия операции (по умолчанию None).""" 123 124 label: str 125 """Метка операции.""" 126 127 details: str | None = None 128 """Дополнительные детали операции (по умолчанию None).""" 129 130 type: str 131 """Тип операции.""" 132 133 digital_goods: str | None = None 134 """Цифровые товары, связанные с операцией (по умолчанию None).""" 135 136 @model_validator(mode="before") 137 def convert_ints_to_str(cls, values): 138 """Преобразует целые числа в строки. 139 140 Args: 141 cls: Класс схемы. 142 values: Значения для валидации. 143 144 Returns: 145 dict: Обновленные значения. 146 """ 147 return { 148 k: str(v) if isinstance(v, int) else v for k, v in values.__dict__.items() 149 } 150 151 site_datetime: str = Field(init=False, title="Datetime", default="00:00") 152 """Строковое представление даты и времени операции (не инициализируется при создании).""" 153 154 @model_validator(mode="after") 155 def set_date(cls, values: BaseModel): 156 """Устанавливает строковое представление даты операции. 157 158 Args: 159 cls: Класс схемы. 160 values (BaseModel): Значения для валидации. 161 162 Returns: 163 BaseModel: Обновленные значения. 164 """ 165 if hasattr(values, "datetime"): 166 values.site_datetime = values.datetime.astimezone().ctime() 167 return values 168 169 170yoomoney_site_display: list = [ 171 DisplayLookup( 172 field="operation_id", 173 on_click=GoToEvent(url="/bot/tables/yoomoney/?operation_id={operation_id}"), 174 ), 175 DisplayLookup(field="status"), 176 DisplayLookup(field="site_datetime"), 177 DisplayLookup(field="title"), 178 DisplayLookup(field="amount"), 179 DisplayLookup(field="label"), 180] 181"""list: Отображение операций YooMoney на сайте."""
9class YoomoneyOperation(BaseModel): 10 """Модель операции YooMoney. 11 12 Эта модель представляет собой структуру данных для хранения информации 13 об операциях YooMoney. 14 """ 15 16 __tablename__ = "yoomoney" 17 18 operation_id: str 19 """Уникальный идентификатор операции.""" 20 21 status: str 22 """Статус операции.""" 23 24 datetime: datetime 25 """Дата и время операции.""" 26 27 title: str 28 """Заголовок операции.""" 29 30 pattern_id: str | None = None 31 """Идентификатор шаблона операции (по умолчанию None).""" 32 33 direction: str 34 """Направление операции (например, 'incoming' или 'outgoing').""" 35 36 amount: float 37 """Сумма операции.""" 38 39 label: str 40 """Метка операции.""" 41 42 type: str 43 """Тип операции.""" 44 45 site_datetime: str = Field(init=False, title="Datetime", default="00:00") 46 """Строковое представление даты и времени операции (не инициализируется при создании).""" 47 48 @model_validator(mode="after") 49 def set_date(cls, values: BaseModel): 50 """Устанавливает строковое представление даты операции. 51 52 Args: 53 cls: Класс схемы. 54 values (BaseModel): Значения для валидации. 55 56 Returns: 57 BaseModel: Обновленные значения. 58 """ 59 if hasattr(values, "datetime"): 60 values.site_datetime = values.datetime.astimezone().ctime() 61 return values
Модель операции YooMoney.
Эта модель представляет собой структуру данных для хранения информации об операциях YooMoney.
Строковое представление даты и времени операции (не инициализируется при создании).
48 @model_validator(mode="after") 49 def set_date(cls, values: BaseModel): 50 """Устанавливает строковое представление даты операции. 51 52 Args: 53 cls: Класс схемы. 54 values (BaseModel): Значения для валидации. 55 56 Returns: 57 BaseModel: Обновленные значения. 58 """ 59 if hasattr(values, "datetime"): 60 values.site_datetime = values.datetime.astimezone().ctime() 61 return values
Устанавливает строковое представление даты операции.
Arguments:
- cls: Класс схемы.
- values (BaseModel): Значения для валидации.
Returns:
BaseModel: Обновленные значения.
Configuration for the model, should be a dictionary conforming to [ConfigDict
][pydantic.config.ConfigDict].
Metadata about the fields defined on the model,
mapping of field names to [FieldInfo
][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__
from Pydantic V1.
64class YoomoneyOperationDetails(BaseModel): 65 """Модель деталей операции YooMoney. 66 67 Эта модель представляет собой структуру данных для хранения подробной информации 68 об операциях YooMoney. 69 """ 70 71 operation_id: str 72 """Уникальный идентификатор операции.""" 73 74 status: str 75 """Статус операции.""" 76 77 pattern_id: str | None = None 78 """Идентификатор шаблона операции (по умолчанию None).""" 79 80 direction: str 81 """Направление операции (например, 'incoming' или 'outgoing').""" 82 83 amount: float 84 """Сумма операции.""" 85 86 amount_due: str | None = None 87 """Сумма, подлежащая оплате (по умолчанию None).""" 88 89 fee: float | None = None 90 """Комиссия за операцию (по умолчанию None).""" 91 92 answer_datetime: datetime | None = None 93 """Дата и время ответа (по умолчанию None).""" 94 95 datetime: datetime 96 """Дата и время операции.""" 97 98 title: str 99 """Заголовок операции.""" 100 101 sender: str | None = None 102 """Отправитель операции (по умолчанию None).""" 103 104 recipient: str | None = None 105 """Получатель операции (по умолчанию None).""" 106 107 recipient_type: str | None = None 108 """Тип получателя (по умолчанию None).""" 109 110 message: str | None = None 111 """Сообщение, связанное с операцией (по умолчанию None).""" 112 113 comment: str | None = None 114 """Комментарий к операции (по умолчанию None).""" 115 116 codepro: bool | None = None 117 """Указывает, защищена ли операция с помощью CodePro (по умолчанию None).""" 118 119 protection_code: str | None = None 120 """Код защиты операции (по умолчанию None).""" 121 122 expires: str | None = None 123 """Срок действия операции (по умолчанию None).""" 124 125 label: str 126 """Метка операции.""" 127 128 details: str | None = None 129 """Дополнительные детали операции (по умолчанию None).""" 130 131 type: str 132 """Тип операции.""" 133 134 digital_goods: str | None = None 135 """Цифровые товары, связанные с операцией (по умолчанию None).""" 136 137 @model_validator(mode="before") 138 def convert_ints_to_str(cls, values): 139 """Преобразует целые числа в строки. 140 141 Args: 142 cls: Класс схемы. 143 values: Значения для валидации. 144 145 Returns: 146 dict: Обновленные значения. 147 """ 148 return { 149 k: str(v) if isinstance(v, int) else v for k, v in values.__dict__.items() 150 } 151 152 site_datetime: str = Field(init=False, title="Datetime", default="00:00") 153 """Строковое представление даты и времени операции (не инициализируется при создании).""" 154 155 @model_validator(mode="after") 156 def set_date(cls, values: BaseModel): 157 """Устанавливает строковое представление даты операции. 158 159 Args: 160 cls: Класс схемы. 161 values (BaseModel): Значения для валидации. 162 163 Returns: 164 BaseModel: Обновленные значения. 165 """ 166 if hasattr(values, "datetime"): 167 values.site_datetime = values.datetime.astimezone().ctime() 168 return values
Модель деталей операции YooMoney.
Эта модель представляет собой структуру данных для хранения подробной информации об операциях YooMoney.
137 @model_validator(mode="before") 138 def convert_ints_to_str(cls, values): 139 """Преобразует целые числа в строки. 140 141 Args: 142 cls: Класс схемы. 143 values: Значения для валидации. 144 145 Returns: 146 dict: Обновленные значения. 147 """ 148 return { 149 k: str(v) if isinstance(v, int) else v for k, v in values.__dict__.items() 150 }
Преобразует целые числа в строки.
Arguments:
- cls: Класс схемы.
- values: Значения для валидации.
Returns:
dict: Обновленные значения.
Строковое представление даты и времени операции (не инициализируется при создании).
155 @model_validator(mode="after") 156 def set_date(cls, values: BaseModel): 157 """Устанавливает строковое представление даты операции. 158 159 Args: 160 cls: Класс схемы. 161 values (BaseModel): Значения для валидации. 162 163 Returns: 164 BaseModel: Обновленные значения. 165 """ 166 if hasattr(values, "datetime"): 167 values.site_datetime = values.datetime.astimezone().ctime() 168 return values
Устанавливает строковое представление даты операции.
Arguments:
- cls: Класс схемы.
- values (BaseModel): Значения для валидации.
Returns:
BaseModel: Обновленные значения.
Configuration for the model, should be a dictionary conforming to [ConfigDict
][pydantic.config.ConfigDict].
Metadata about the fields defined on the model,
mapping of field names to [FieldInfo
][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__
from Pydantic V1.
list: Отображение операций YooMoney на сайте.