Edit on GitHub

ecourts.entities.case

  1from dataclasses import dataclass, asdict
  2from datetime import datetime
  3from typing import Optional
  4from parsers.utils import parse_date
  5from entities.hearing import Hearing
  6from entities.party import Party
  7from entities.order import Order
  8from entities.fir import FIR
  9from entities.objection import Objection
 10
 11
 12@dataclass
 13class Case:
 14    case_type: str
 15    registration_number: str
 16    cnr_number: str
 17    filing_number: Optional[str] = None
 18
 19    registration_date: Optional[datetime.date] = None
 20    first_hearing_date: Optional[datetime.date] = None
 21    decision_date: Optional[datetime.date] = None
 22    case_status: Optional[str] = None
 23    nature_of_disposal: Optional[str] = None
 24    coram: Optional[str] = None
 25    bench: Optional[str] = None
 26    state: Optional[str] = None
 27    district: Optional[str] = None
 28    judicial: Optional[str] = None
 29    petitioners: Optional[list[Party]] = None
 30    respondents: Optional[list[Party]] = None
 31    orders: Optional[list[Order]] = None
 32    case_number: Optional[str] = None
 33    hearings: Optional[list[Hearing]] = None
 34    category: Optional[str] = None
 35    sub_category: Optional[str] = None
 36    objections: Optional[list[Objection]] = None
 37    not_before_me: Optional[str] = None
 38    filing_date: Optional[datetime.date] = None
 39    fir: Optional[FIR] = None
 40    token: Optional[str] = None
 41
 42    def __post_init__(self):
 43        if not self.filing_date:
 44            self.filing_date = None
 45        if self.not_before_me == "":
 46            self.not_before_me = None
 47        if isinstance(self.registration_date, str):
 48            self.registration_date = parse_date(self.registration_date)
 49        if isinstance(self.first_hearing_date, str):
 50            self.first_hearing_date = parse_date(self.first_hearing_date)
 51        if isinstance(self.decision_date, str):
 52            self.decision_date = parse_date(self.decision_date)
 53        if isinstance(self.filing_date, str):
 54            self.filing_date = parse_date(self.filing_date)
 55        if self.orders == None:
 56            self.orders = []
 57        if self.hearings == None:
 58            self.hearings = []
 59        if self.objections == None:
 60            self.objections = []
 61        # The canonical representation of a CNR is without hyphens
 62        self.cnr_number = self.cnr_number.replace("-", "")
 63        if self.nature_of_disposal == "--":
 64            self.nature_of_disposal = None
 65        if len(self.cnr_number) !=16:
 66            raise ValueError("Invalid CNR Number")
 67        if self.orders == None:
 68            self.orders = []
 69        if self.hearings == None:
 70            self.hearings = []
 71        if self.objections == None:
 72            self.objections = []
 73
 74        if self.case_number:
 75            assert 1990 < int(self.case_number[-4:])
 76            assert int(self.case_number[-4:]) < 2030
 77
 78
 79    def expandParams(self):
 80        if not (self.token and self.case_number):
 81            raise ValueError("Token/case_number not set in Case entity")
 82        return {
 83            "cino": self.cnr_number,
 84            "token": self.token,
 85            "case_no": self.case_number
 86        }
 87
 88    def __getattribute__(self, name):
 89        if name == 'name':
 90            if len(self.petitioners) > 0 and len(self.respondents) > 0:
 91                return self.petitioners[0].name + " vs " + self.respondents[0].name
 92            else:
 93                return None
 94        else:
 95            return super().__getattribute__(name)
 96
 97    def json(self) -> dict:
 98        """
 99        Generate a JSON representation of the Case.
100
101        Returns:
102            dict: A dictionary containing the JSON representation.
103        """
104        return {
105            "case_type": self.case_type,
106            "registration_number": self.registration_number,
107            "cnr_number": self.cnr_number,
108            "filing_number": self.filing_number,
109            "registration_date": self.registration_date,
110            "first_hearing_date": self.first_hearing_date,
111            "decision_date": self.decision_date,
112            "case_status": self.case_status,
113            "nature_of_disposal": self.nature_of_disposal,
114            "coram": self.coram,
115            "bench": self.bench,
116            "state": self.state,
117            "district": self.district,
118            "judicial": self.judicial,
119            "petitioners": [asdict(p) for p in self.petitioners],
120            "respondents": [asdict(r) for r in self.respondents],
121            "orders": [asdict(o) for o in self.orders],
122            "case_number": self.case_number,
123            "hearings": [asdict(h) for h in self.hearings],
124            "category": self.category,
125            "sub_category": self.sub_category,
126            "objections": [asdict(o) for o in self.objections],
127            "not_before_me": self.not_before_me,
128            "filing_date": self.filing_date,
129            "fir": asdict(self.fir) if self.fir else None
130        }
@dataclass
class Case:
 13@dataclass
 14class Case:
 15    case_type: str
 16    registration_number: str
 17    cnr_number: str
 18    filing_number: Optional[str] = None
 19
 20    registration_date: Optional[datetime.date] = None
 21    first_hearing_date: Optional[datetime.date] = None
 22    decision_date: Optional[datetime.date] = None
 23    case_status: Optional[str] = None
 24    nature_of_disposal: Optional[str] = None
 25    coram: Optional[str] = None
 26    bench: Optional[str] = None
 27    state: Optional[str] = None
 28    district: Optional[str] = None
 29    judicial: Optional[str] = None
 30    petitioners: Optional[list[Party]] = None
 31    respondents: Optional[list[Party]] = None
 32    orders: Optional[list[Order]] = None
 33    case_number: Optional[str] = None
 34    hearings: Optional[list[Hearing]] = None
 35    category: Optional[str] = None
 36    sub_category: Optional[str] = None
 37    objections: Optional[list[Objection]] = None
 38    not_before_me: Optional[str] = None
 39    filing_date: Optional[datetime.date] = None
 40    fir: Optional[FIR] = None
 41    token: Optional[str] = None
 42
 43    def __post_init__(self):
 44        if not self.filing_date:
 45            self.filing_date = None
 46        if self.not_before_me == "":
 47            self.not_before_me = None
 48        if isinstance(self.registration_date, str):
 49            self.registration_date = parse_date(self.registration_date)
 50        if isinstance(self.first_hearing_date, str):
 51            self.first_hearing_date = parse_date(self.first_hearing_date)
 52        if isinstance(self.decision_date, str):
 53            self.decision_date = parse_date(self.decision_date)
 54        if isinstance(self.filing_date, str):
 55            self.filing_date = parse_date(self.filing_date)
 56        if self.orders == None:
 57            self.orders = []
 58        if self.hearings == None:
 59            self.hearings = []
 60        if self.objections == None:
 61            self.objections = []
 62        # The canonical representation of a CNR is without hyphens
 63        self.cnr_number = self.cnr_number.replace("-", "")
 64        if self.nature_of_disposal == "--":
 65            self.nature_of_disposal = None
 66        if len(self.cnr_number) !=16:
 67            raise ValueError("Invalid CNR Number")
 68        if self.orders == None:
 69            self.orders = []
 70        if self.hearings == None:
 71            self.hearings = []
 72        if self.objections == None:
 73            self.objections = []
 74
 75        if self.case_number:
 76            assert 1990 < int(self.case_number[-4:])
 77            assert int(self.case_number[-4:]) < 2030
 78
 79
 80    def expandParams(self):
 81        if not (self.token and self.case_number):
 82            raise ValueError("Token/case_number not set in Case entity")
 83        return {
 84            "cino": self.cnr_number,
 85            "token": self.token,
 86            "case_no": self.case_number
 87        }
 88
 89    def __getattribute__(self, name):
 90        if name == 'name':
 91            if len(self.petitioners) > 0 and len(self.respondents) > 0:
 92                return self.petitioners[0].name + " vs " + self.respondents[0].name
 93            else:
 94                return None
 95        else:
 96            return super().__getattribute__(name)
 97
 98    def json(self) -> dict:
 99        """
100        Generate a JSON representation of the Case.
101
102        Returns:
103            dict: A dictionary containing the JSON representation.
104        """
105        return {
106            "case_type": self.case_type,
107            "registration_number": self.registration_number,
108            "cnr_number": self.cnr_number,
109            "filing_number": self.filing_number,
110            "registration_date": self.registration_date,
111            "first_hearing_date": self.first_hearing_date,
112            "decision_date": self.decision_date,
113            "case_status": self.case_status,
114            "nature_of_disposal": self.nature_of_disposal,
115            "coram": self.coram,
116            "bench": self.bench,
117            "state": self.state,
118            "district": self.district,
119            "judicial": self.judicial,
120            "petitioners": [asdict(p) for p in self.petitioners],
121            "respondents": [asdict(r) for r in self.respondents],
122            "orders": [asdict(o) for o in self.orders],
123            "case_number": self.case_number,
124            "hearings": [asdict(h) for h in self.hearings],
125            "category": self.category,
126            "sub_category": self.sub_category,
127            "objections": [asdict(o) for o in self.objections],
128            "not_before_me": self.not_before_me,
129            "filing_date": self.filing_date,
130            "fir": asdict(self.fir) if self.fir else None
131        }
Case( case_type: str, registration_number: str, cnr_number: str, filing_number: Optional[str] = None, registration_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None, first_hearing_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None, decision_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None, case_status: Optional[str] = None, nature_of_disposal: Optional[str] = None, coram: Optional[str] = None, bench: Optional[str] = None, state: Optional[str] = None, district: Optional[str] = None, judicial: Optional[str] = None, petitioners: Optional[list[entities.party.Party]] = None, respondents: Optional[list[entities.party.Party]] = None, orders: Optional[list[entities.order.Order]] = None, case_number: Optional[str] = None, hearings: Optional[list[entities.hearing.Hearing]] = None, category: Optional[str] = None, sub_category: Optional[str] = None, objections: Optional[list[entities.objection.Objection]] = None, not_before_me: Optional[str] = None, filing_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None, fir: Optional[entities.fir.FIR] = None, token: Optional[str] = None)
case_type: str
registration_number: str
cnr_number: str
filing_number: Optional[str] = None
registration_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None
first_hearing_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None
decision_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None
case_status: Optional[str] = None
nature_of_disposal: Optional[str] = None
coram: Optional[str] = None
bench: Optional[str] = None
state: Optional[str] = None
district: Optional[str] = None
judicial: Optional[str] = None
petitioners: Optional[list[entities.party.Party]] = None
respondents: Optional[list[entities.party.Party]] = None
orders: Optional[list[entities.order.Order]] = None
case_number: Optional[str] = None
hearings: Optional[list[entities.hearing.Hearing]] = None
category: Optional[str] = None
sub_category: Optional[str] = None
objections: Optional[list[entities.objection.Objection]] = None
not_before_me: Optional[str] = None
filing_date: Optional[<method 'date' of 'datetime.datetime' objects>] = None
fir: Optional[entities.fir.FIR] = None
token: Optional[str] = None
def expandParams(self):
80    def expandParams(self):
81        if not (self.token and self.case_number):
82            raise ValueError("Token/case_number not set in Case entity")
83        return {
84            "cino": self.cnr_number,
85            "token": self.token,
86            "case_no": self.case_number
87        }
def json(self) -> dict:
 98    def json(self) -> dict:
 99        """
100        Generate a JSON representation of the Case.
101
102        Returns:
103            dict: A dictionary containing the JSON representation.
104        """
105        return {
106            "case_type": self.case_type,
107            "registration_number": self.registration_number,
108            "cnr_number": self.cnr_number,
109            "filing_number": self.filing_number,
110            "registration_date": self.registration_date,
111            "first_hearing_date": self.first_hearing_date,
112            "decision_date": self.decision_date,
113            "case_status": self.case_status,
114            "nature_of_disposal": self.nature_of_disposal,
115            "coram": self.coram,
116            "bench": self.bench,
117            "state": self.state,
118            "district": self.district,
119            "judicial": self.judicial,
120            "petitioners": [asdict(p) for p in self.petitioners],
121            "respondents": [asdict(r) for r in self.respondents],
122            "orders": [asdict(o) for o in self.orders],
123            "case_number": self.case_number,
124            "hearings": [asdict(h) for h in self.hearings],
125            "category": self.category,
126            "sub_category": self.sub_category,
127            "objections": [asdict(o) for o in self.objections],
128            "not_before_me": self.not_before_me,
129            "filing_date": self.filing_date,
130            "fir": asdict(self.fir) if self.fir else None
131        }

Generate a JSON representation of the Case.

Returns: dict: A dictionary containing the JSON representation.