mirror of
https://github.com/clearml/clearml-server
synced 2025-01-31 19:06:55 +00:00
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from typing import Sequence, Optional
|
|
|
|
from mongoengine import Q
|
|
|
|
from config import config
|
|
from database.model.model import Model
|
|
from database.model.task.task import Task
|
|
from timing_context import TimingContext
|
|
|
|
log = config.logger(__file__)
|
|
|
|
|
|
class ProjectBLL:
|
|
@classmethod
|
|
def get_active_users(
|
|
cls, company, project_ids: Sequence, user_ids: Optional[Sequence] = None
|
|
) -> set:
|
|
"""
|
|
Get the set of user ids that created tasks/models in the given projects
|
|
If project_ids is empty then all projects are examined
|
|
If user_ids are passed then only subset of these users is returned
|
|
"""
|
|
with TimingContext("mongo", "active_users_in_projects"):
|
|
res = set()
|
|
query = Q(company=company)
|
|
if project_ids:
|
|
query &= Q(project__in=project_ids)
|
|
if user_ids:
|
|
query &= Q(user__in=user_ids)
|
|
for cls_ in (Task, Model):
|
|
res |= set(cls_.objects(query).distinct(field="user"))
|
|
|
|
return res
|