fc / apps /oa_filing /models /filing_session.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
2.53 kB
from __future__ import annotations
from typing import Any, ClassVar
from django.db import models
from django.utils.translation import gettext_lazy as _
class SessionStatus(models.TextChoices):
PENDING = "pending", _("待开始")
IN_PROGRESS = "in_progress", _("进行中")
COMPLETED = "completed", _("已完成")
FAILED = "failed", _("失败")
CANCELLED = "cancelled", _("已取消")
class FilingSession(models.Model):
"""OA立案执行记录"""
id: int
contract: Any = models.ForeignKey(
"contracts.Contract",
on_delete=models.CASCADE,
related_name="filing_sessions",
verbose_name=_("合同"),
)
case: Any = models.ForeignKey(
"cases.Case",
on_delete=models.CASCADE,
null=True,
blank=True,
related_name="filing_sessions",
verbose_name=_("案件"),
)
oa_config: Any = models.ForeignKey(
"oa_filing.OAConfig",
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="filing_sessions",
verbose_name=_("OA配置"),
)
credential: Any = models.ForeignKey(
"organization.AccountCredential",
on_delete=models.SET_NULL,
null=True,
related_name="filing_sessions",
verbose_name=_("登录凭证"),
)
user: Any = models.ForeignKey(
"organization.Lawyer",
on_delete=models.CASCADE,
related_name="filing_sessions",
verbose_name=_("发起用户"),
)
status: str = models.CharField( # type: ignore[assignment]
max_length=16,
choices=SessionStatus.choices,
default=SessionStatus.PENDING,
verbose_name=_("状态"),
)
error_message: str = models.TextField( # type: ignore[assignment]
blank=True,
default="",
verbose_name=_("错误信息"),
)
created_at: Any = models.DateTimeField(
auto_now_add=True,
verbose_name=_("创建时间"),
)
updated_at: Any = models.DateTimeField(
auto_now=True,
verbose_name=_("更新时间"),
)
class Meta:
verbose_name = _("立案记录")
verbose_name_plural = _("立案记录")
indexes: ClassVar = [
models.Index(fields=["contract", "-created_at"]),
models.Index(fields=["user", "-created_at"]),
models.Index(fields=["status", "-created_at"]),
]
def __str__(self) -> str:
return f"FilingSession #{self.id} - {self.status}"