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)
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.