111 lines
2.9 KiB
Python
111 lines
2.9 KiB
Python
import uuid
|
|
|
|
from datetime import date, datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field, validator
|
|
|
|
from . import to_camel
|
|
from .act import ActLink
|
|
from .case_source import CaseSourceLink
|
|
from .case_type import CaseTypeLink
|
|
from .court import CourtLink
|
|
from .court_status import CourtStatusLink
|
|
from .department import DepartmentLink
|
|
from .nature import NatureLink
|
|
from .office import OfficeLink
|
|
from .office_status import OfficeStatusLink
|
|
|
|
|
|
class CaseIn(BaseModel):
|
|
office_file_number: str
|
|
court_case_number: str
|
|
year: str
|
|
title: str
|
|
docket_number: str
|
|
receipt_date: Optional[date]
|
|
limitation_date: Optional[date]
|
|
filing_date: Optional[date]
|
|
appear_on_behalf_of: str
|
|
question_of_law: str
|
|
aor_name: str
|
|
opposing_council_aor: str
|
|
opposing_council_detail: str
|
|
lower_court_case_number: str
|
|
date_of_impugned_judgement: Optional[date]
|
|
brief_description: str
|
|
remarks: str
|
|
slp_counter: str
|
|
contact_detail: str
|
|
case_connected_with: str
|
|
bunch_cases: str
|
|
|
|
case_source: CaseSourceLink
|
|
court: Optional[CourtLink]
|
|
department: Optional[DepartmentLink]
|
|
office: Optional[OfficeLink]
|
|
case_type: Optional[CaseTypeLink]
|
|
act: Optional[ActLink]
|
|
nature: Optional[NatureLink]
|
|
office_status: Optional[OfficeStatusLink]
|
|
court_status: Optional[CourtStatusLink]
|
|
|
|
class Config:
|
|
anystr_strip_whitespace = True
|
|
alias_generator = to_camel
|
|
json_encoders = {datetime: lambda v: v.strftime("%d-%b-%Y %H:%M"), date: lambda v: v.strftime("%d-%b-%Y")}
|
|
|
|
@validator("receipt_date", pre=True)
|
|
def parse_receipt_date(cls, value):
|
|
if isinstance(value, date):
|
|
return value
|
|
if value is None:
|
|
return None
|
|
return datetime.strptime(value, "%d-%b-%Y").date()
|
|
|
|
@validator("limitation_date", pre=True)
|
|
def parse_limitation_date(cls, value):
|
|
if isinstance(value, date):
|
|
return value
|
|
if value is None:
|
|
return None
|
|
return datetime.strptime(value, "%d-%b-%Y").date()
|
|
|
|
@validator("filing_date", pre=True)
|
|
def parse_filing_date(cls, value):
|
|
if isinstance(value, date):
|
|
return value
|
|
if value is None:
|
|
return None
|
|
return datetime.strptime(value, "%d-%b-%Y").date()
|
|
|
|
@validator("date_of_impugned_judgement", pre=True)
|
|
def parse_date_of_impugned_judgement(cls, value):
|
|
if isinstance(value, date):
|
|
return value
|
|
if value is None:
|
|
return None
|
|
return datetime.strptime(value, "%d-%b-%Y").date()
|
|
|
|
|
|
class Case(CaseIn):
|
|
id_: uuid.UUID
|
|
|
|
class Config:
|
|
anystr_strip_whitespace = True
|
|
alias_generator = to_camel
|
|
|
|
|
|
class CaseBlank(CaseIn):
|
|
class Config:
|
|
anystr_strip_whitespace = True
|
|
alias_generator = to_camel
|
|
|
|
|
|
class CaseLink(BaseModel):
|
|
id_: uuid.UUID = Field(...)
|
|
name: Optional[str]
|
|
|
|
class Config:
|
|
fields = {"id_": "id"}
|