Initial commit
This commit is contained in:
73
model.py
Normal file
73
model.py
Normal file
@@ -0,0 +1,73 @@
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
from typing import List, Self
|
||||
import app_config as cfg
|
||||
|
||||
LOG = cfg.LOG
|
||||
|
||||
@dataclass
|
||||
class POData:
|
||||
city: str = field(repr=False)
|
||||
street: str = field(repr=False)
|
||||
house: int = field(repr=False)
|
||||
po_type: str = field(repr=False)
|
||||
reason: str = field(repr=False)
|
||||
placement_date: str
|
||||
start_date: str
|
||||
stop_date: str
|
||||
start_time: str
|
||||
stop_time: str
|
||||
notified_at: datetime = field(repr=False, default=None)
|
||||
updated_at: datetime = field(repr=False, default=datetime.now())
|
||||
need_to_send: bool = field(repr=False, default=True)
|
||||
start_ts: float = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
if self.start_date and self.start_time:
|
||||
self.start_ts = datetime.strptime(f'{self.start_date} {self.start_time}', '%Y.%m.%d %H:%M').timestamp()
|
||||
else:
|
||||
LOG.error(f'wrong start_date or start_time in {self}')
|
||||
|
||||
def set_sent(self):
|
||||
self.need_to_send = False
|
||||
|
||||
def set_notified_now(self):
|
||||
self.notified_at = datetime.now()
|
||||
|
||||
def update_notified_at(self, old_data: Self):
|
||||
self.notified_at = old_data.notified_at
|
||||
|
||||
|
||||
@dataclass
|
||||
class GPVData:
|
||||
approved_from: str
|
||||
event_date: str
|
||||
hours_off: List
|
||||
hours_on: List
|
||||
outage_queue: str = field(repr=False)
|
||||
notified_at: datetime = field(repr=False, default=None)
|
||||
updated_at: datetime = field(repr=False, default=datetime.now())
|
||||
need_to_send: bool = field(repr=False, default=True)
|
||||
start_ts: List[float] = field(default_factory=list, init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
if self.event_date and self.hours_off and self.hours_on:
|
||||
for index, value in enumerate(self.hours_on):
|
||||
self.start_ts.append(datetime.strptime(f'{self.event_date} {self.hours_on[index]}', '%d.%m.%Y %H:%M').timestamp())
|
||||
else:
|
||||
LOG.error(f'wrong start_date or start_time in {self}')
|
||||
|
||||
def set_send(self):
|
||||
self.need_to_send = False
|
||||
self.notified_at = datetime.now()
|
||||
|
||||
|
||||
@dataclass
|
||||
class JobData:
|
||||
name: str
|
||||
trigger: str
|
||||
next: str
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
Reference in New Issue
Block a user