extension.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from core.extension.extensible import ExtensionModule, ModuleExtension
  2. from core.external_data_tool.base import ExternalDataTool
  3. from core.moderation.base import Moderation
  4. class Extension:
  5. __module_extensions: dict[str, dict[str, ModuleExtension]] = {}
  6. module_classes = {ExtensionModule.MODERATION: Moderation, ExtensionModule.EXTERNAL_DATA_TOOL: ExternalDataTool}
  7. def init(self):
  8. for module, module_class in self.module_classes.items():
  9. self.__module_extensions[module.value] = module_class.scan_extensions()
  10. def module_extensions(self, module: str) -> list[ModuleExtension]:
  11. module_extensions = self.__module_extensions.get(module)
  12. if not module_extensions:
  13. raise ValueError(f"Extension Module {module} not found")
  14. return list(module_extensions.values())
  15. def module_extension(self, module: ExtensionModule, extension_name: str) -> ModuleExtension:
  16. module_extensions = self.__module_extensions.get(module.value)
  17. if not module_extensions:
  18. raise ValueError(f"Extension Module {module} not found")
  19. module_extension = module_extensions.get(extension_name)
  20. if not module_extension:
  21. raise ValueError(f"Extension {extension_name} not found")
  22. return module_extension
  23. def extension_class(self, module: ExtensionModule, extension_name: str) -> type:
  24. module_extension = self.module_extension(module, extension_name)
  25. return module_extension.extension_class
  26. def validate_form_schema(self, module: ExtensionModule, extension_name: str, config: dict) -> None:
  27. module_extension = self.module_extension(module, extension_name)
  28. form_schema = module_extension.form_schema
  29. # TODO validate form_schema