from typing import Type from core.models import Vendor from core.vendors import AbstractVendor from evibes.utils.misc import create_object def get_vendors_integrations(name: str | None = None) -> list[Type[AbstractVendor]]: vendors_integrations: list[Type[AbstractVendor]] = [] vendors = ( Vendor.objects.filter( is_active=True, integration_path__isnull=False, name=name, ) if name else Vendor.objects.filter( is_active=True, integration_path__isnull=False, ) ) for vendor in vendors: if vendor.integration_path: module_name = ".".join(vendor.integration_path.split(".")[:-1]) class_name = vendor.integration_path.split(".")[-1] vendors_integrations.append(create_object(module_name, class_name)) return vendors_integrations