events cluster updated with PageInfo
This commit is contained in:
@@ -5,29 +5,106 @@ from uuid import UUID
|
||||
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys
|
||||
|
||||
|
||||
class PageInfo:
|
||||
class PageComponent:
|
||||
|
||||
NAME: str
|
||||
BUTTON_NAME: str
|
||||
PAGE_URL: str
|
||||
PAGEINFO: Dict[str, Any]
|
||||
URL: str = ""
|
||||
URL: str
|
||||
FETCH_URL: str
|
||||
LANGUAGE_MODELS: Dict[str, Any]
|
||||
TYPE_COMPONENT: Optional[str] = "Page"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
title: Dict[str, Any],
|
||||
description: Dict[str, Any],
|
||||
icon: str,
|
||||
parent: str,
|
||||
url: str,
|
||||
# fetch_url: str,
|
||||
language_models: Dict[str, Any],
|
||||
):
|
||||
self.NAME = name
|
||||
self.TITLE = title
|
||||
self.DESCRIPTION = description
|
||||
self.ICON = icon
|
||||
self.PARENT = parent
|
||||
self.URL = url
|
||||
# self.FETCH_URL = fetch_url
|
||||
self.LANGUAGE_MODELS = language_models
|
||||
|
||||
def set_language_models(self, language_models: Dict[str, Any]):
|
||||
self.LANGUAGE_MODELS = language_models
|
||||
|
||||
@property
|
||||
def language_models(self):
|
||||
return self.LANGUAGE_MODELS
|
||||
|
||||
def as_dict(self):
|
||||
return {
|
||||
"name": self.NAME,
|
||||
"url": self.URL,
|
||||
"language_models": self.LANGUAGE_MODELS,
|
||||
# "fetch_url": self.FETCH_URL,
|
||||
}
|
||||
|
||||
|
||||
class PageInfo:
|
||||
"""
|
||||
match_page: {
|
||||
"/dashboard?site=AccountCluster": [
|
||||
"/accounts/create",
|
||||
"/accounts/update",
|
||||
"/accounts/list",
|
||||
],
|
||||
"/update?site=AccountCluster": ["/accounts/update"],
|
||||
"/create?site=AccountCluster": ["/accounts/create"],
|
||||
},
|
||||
"""
|
||||
NAME: str
|
||||
PAGE_URL: str
|
||||
PAGEINFO: Dict[str, Any]
|
||||
URL: str = ""
|
||||
ENDPOINTS: Dict[str, Any]
|
||||
LANGUAGE_MODELS: Dict[str, Any]
|
||||
SUB_COMPONENTS: Optional[list["PageComponent"]] = None
|
||||
INSTRUCTIONS: Optional[Dict[str, Any]] = None
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
icon: str,
|
||||
url: str,
|
||||
endpoints: Dict[str, Any],
|
||||
language_models: Dict[str, Any],
|
||||
page_info: Optional[Dict[str, Any]] = None,
|
||||
sub_components: Optional[list["PageComponent"]] = None,
|
||||
instructions: Optional[Dict[str, Any]] = None,
|
||||
):
|
||||
self.NAME = name
|
||||
self.LANGUAGE_MODELS = language_models
|
||||
self.ICON = icon
|
||||
self.URL = url
|
||||
self.SUB_COMPONENTS = sub_components
|
||||
self.ENDPOINTS = endpoints
|
||||
self.PAGEINFO = page_info
|
||||
self.INSTRUCTIONS = instructions
|
||||
|
||||
@property
|
||||
def endpoints(self):
|
||||
return self.ENDPOINTS
|
||||
|
||||
@property
|
||||
def sub_components(self):
|
||||
return self.SUB_COMPONENTS
|
||||
|
||||
@property
|
||||
def as_dict(self):
|
||||
as_dict = {
|
||||
"name": self.NAME,
|
||||
"icon": self.ICON,
|
||||
"url": self.URL,
|
||||
"endpoints": self.ENDPOINTS,
|
||||
"language_models": self.LANGUAGE_MODELS,
|
||||
"page_info": self.PAGEINFO,
|
||||
}
|
||||
if self.INSTRUCTIONS:
|
||||
as_dict["instructions"] = self.INSTRUCTIONS
|
||||
if self.SUB_COMPONENTS:
|
||||
as_dict["sub_components"] = [i.as_dict() for i in self.SUB_COMPONENTS]
|
||||
return as_dict
|
||||
|
||||
|
||||
class Event:
|
||||
@@ -185,7 +262,7 @@ class CategoryCluster:
|
||||
|
||||
TAGS: list
|
||||
PREFIX: str
|
||||
PAGEINFO: Optional[PageInfo]
|
||||
PAGEINFO: Optional[Dict['str', PageInfo]]
|
||||
DESCRIPTION: str
|
||||
ENDPOINTS: dict[str, MethodToEvent] # {"MethodToEvent": MethodToEvent, ...}
|
||||
SUBCATEGORY: Optional[List["CategoryCluster"]] # [CategoryCluster, ...]
|
||||
@@ -200,7 +277,7 @@ class CategoryCluster:
|
||||
description: str,
|
||||
endpoints: dict[str, MethodToEvent],
|
||||
sub_category: list,
|
||||
pageinfo: Optional[PageInfo] = None,
|
||||
pageinfo: Optional[Dict['str', PageInfo]] = None,
|
||||
include_in_schema: Optional[bool] = True,
|
||||
is_client: Optional[bool] = False,
|
||||
):
|
||||
@@ -262,7 +339,14 @@ class CategoryCluster:
|
||||
def retrieve_page_info(self):
|
||||
"""
|
||||
PAGE_INFO:ClusterToMethod = {"PageInfo": {...}, "subCategory": PAGE_INFO:ClusterToMethod}
|
||||
return {"prefix": self.PREFIX, **page_info}
|
||||
"""
|
||||
raise NotImplementedError(
|
||||
"CategoryCluster retrieve_page_info() method is not implemented"
|
||||
)
|
||||
page_infos = {}
|
||||
if isinstance(self.PAGEINFO, dict):
|
||||
for page_key, page_info in dict(self.PAGEINFO).items():
|
||||
if page_info_dict := getattr(page_info, 'as_dict', None):
|
||||
page_infos[page_key] = page_info_dict
|
||||
return {"prefix": self.PREFIX, **page_infos}
|
||||
if hasattr(self.PAGEINFO, 'as_dict'):
|
||||
return {"prefix": self.PREFIX, **self.PAGEINFO.as_dict}
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user