Fixes: 1) Ensure only vendors with a valid integration_path are included in the results; Extra: 1) Adjust query formatting for improved readability.
27 lines
892 B
Python
27 lines
892 B
Python
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
|