mirror of
https://github.com/outscale/zabbix-super-vision.git
synced 2024-11-14 12:25:47 +01:00
f2235d4b45
- using fastAPI - offline/online working - warning if ZABBIX API is too long - showing settings - showing last ack message - showing procedure - menu split by SU team
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import time
|
|
from typing import Dict, List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from settings import settings
|
|
from utils import read_json_file, write_json_file
|
|
|
|
|
|
class Note(BaseModel):
|
|
name: str
|
|
msg: str
|
|
url: Optional[str] = None
|
|
lvl: str
|
|
team: str
|
|
save: Optional[bool] = None
|
|
ts: Optional[int] = None
|
|
|
|
|
|
class NoteManager:
|
|
def __init__(self):
|
|
self.file_path = f"{settings.DATA_DIR}/{settings.NOTES_JSON}"
|
|
|
|
async def add_note(self, note: Note) -> None:
|
|
note.ts = int(time.time())
|
|
new_note = {note.ts: [note.dict()]}
|
|
|
|
existing_data = await self.read_file()
|
|
existing_data.update(new_note)
|
|
await self.write_file(existing_data)
|
|
|
|
async def delete_note(self, note_id: str) -> None:
|
|
data = await self.read_file()
|
|
if note_id in data:
|
|
del data[note_id]
|
|
await self.write_file(data)
|
|
|
|
async def display_notes(self, teams: Optional[str]) -> List[Note]:
|
|
notes_data = await self.read_file()
|
|
return [
|
|
Note(**note)
|
|
for _, notes in notes_data.items()
|
|
for note in notes
|
|
if note["team"] in [teams, "all"]
|
|
]
|
|
|
|
async def read_file(self) -> Dict:
|
|
return await read_json_file(self.file_path)
|
|
|
|
async def write_file(self, data: Note) -> None:
|
|
await write_json_file(self.file_path, data)
|