fc / apps /contracts /models /finance.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
1.44 kB
"""Module for finance."""
from __future__ import annotations
from typing import Any, ClassVar
from django.db import models
from django.utils.translation import gettext_lazy as _
from .contract import Contract
class LogLevel(models.TextChoices):
INFO = "INFO", _("信息")
WARN = "WARN", _("预警")
ERROR = "ERROR", _("错误")
class ContractFinanceLog(models.Model):
id: int
contract_id: int
actor_id: int
contract = models.ForeignKey(
Contract, on_delete=models.CASCADE, related_name="finance_logs", verbose_name=_("合同")
)
action = models.CharField(max_length=64, verbose_name=_("动作"))
level = models.CharField(max_length=16, choices=LogLevel.choices, default=LogLevel.INFO, verbose_name=_("级别"))
actor = models.ForeignKey(
"organization.Lawyer", on_delete=models.PROTECT, related_name="finance_logs", verbose_name=_("操作者")
)
payload: Any = models.JSONField(default=dict, blank=True, verbose_name=_("数据"))
created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("创建时间"))
class Meta:
verbose_name = _("财务日志")
verbose_name_plural = _("财务日志")
indexes: ClassVar = [
models.Index(fields=["contract", "created_at"]),
models.Index(fields=["level"]),
]
def __str__(self) -> str:
return f"{self.contract_id}-{self.action}-{self.level}"