from typing import Optional, Sequence from mongoengine import Q from database.model.model import Model from database.utils import get_company_or_none_constraint class ModelBLL: def get_frameworks(self, company, project_ids: Optional[Sequence]) -> Sequence: """ Return the list of unique frameworks used by company and public models If project ids passed then only models from these projects are considered """ query = get_company_or_none_constraint(company) if project_ids: query &= Q(project__in=project_ids) return Model.objects(query).distinct(field="framework")