Implemented tools as applets, Added Docker CCTV page, Fixed small issues
Update app.py, uuid-generator.yml, and 47 more files...
This commit is contained in:
116
website/content/dataclasses.py
Normal file
116
website/content/dataclasses.py
Normal file
@@ -0,0 +1,116 @@
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Optional
|
||||
|
||||
from locked_dict.locked_dict import LockedDict
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentHeadMetadata:
|
||||
title_key: str
|
||||
description_key: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentOpengraphMetadata:
|
||||
title_key: str
|
||||
description_key: str
|
||||
type: Optional[str] = field(default=None)
|
||||
url: Optional[str] = field(default=None)
|
||||
image_url: Optional[str] = field(default=None)
|
||||
image_type: Optional[str] = field(default=None)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentTwitterMetadata:
|
||||
title_key: str
|
||||
description_key: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentIndexMetadata:
|
||||
priority: int
|
||||
enable: bool
|
||||
title_key: str
|
||||
preamble_key: str
|
||||
image_alt_key: str
|
||||
image_url: str = field(default="/resources/NibblePoker/images/placeholder.png")
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentGeneralMetadata:
|
||||
icon: str
|
||||
title_key: str
|
||||
subtitle_key: str
|
||||
tags: list[str] = field(default_factory=list)
|
||||
languages: list[str] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentMetadata:
|
||||
head: ContentHeadMetadata
|
||||
opengraph: ContentOpengraphMetadata
|
||||
twitter: ContentTwitterMetadata
|
||||
index: ContentIndexMetadata
|
||||
general: ContentGeneralMetadata
|
||||
|
||||
def __post_init__(self):
|
||||
self.head: dict
|
||||
self.head = ContentHeadMetadata(**self.head)
|
||||
|
||||
self.opengraph: dict
|
||||
self.opengraph = ContentOpengraphMetadata(**self.opengraph)
|
||||
|
||||
self.twitter: dict
|
||||
self.twitter = ContentTwitterMetadata(**self.twitter)
|
||||
|
||||
self.index: dict
|
||||
self.index = ContentIndexMetadata(**self.index)
|
||||
|
||||
self.general: dict
|
||||
self.general = ContentGeneralMetadata(**self.general)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentResource:
|
||||
scripts: list[str] = field(default_factory=list)
|
||||
stylesheets: list[str] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentApplet:
|
||||
id: str
|
||||
resources: ContentResource
|
||||
|
||||
def __post_init__(self):
|
||||
self.resources: dict
|
||||
self.resources = ContentResource(**self.resources)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentTool:
|
||||
# NOTE: could extend `ContentProject`
|
||||
id: str
|
||||
applet_id: str
|
||||
metadata: ContentMetadata
|
||||
|
||||
def __post_init__(self):
|
||||
self.metadata: dict
|
||||
self.metadata = ContentMetadata(**self.metadata)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentProject:
|
||||
id: str
|
||||
metadata: ContentMetadata
|
||||
|
||||
def __post_init__(self):
|
||||
self.metadata: dict
|
||||
self.metadata = ContentMetadata(**self.metadata)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContentRoot:
|
||||
applets: LockedDict[str, ContentApplet] = field(default_factory=LockedDict)
|
||||
# articles: list[Con] = field(default_factory=list)
|
||||
projects: LockedDict[str, ContentProject] = field(default_factory=LockedDict)
|
||||
tools: LockedDict[str, ContentTool] = field(default_factory=LockedDict)
|
||||
Reference in New Issue
Block a user