luthor/luthor/luthor/schemas/case.py

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"}