mirror of
https://github.com/clearml/clearml-server
synced 2025-01-31 10:56:48 +00:00
3272d0f31f
Support refresh flag in debug image samples Remove silent_dequeue_fail param to prevent status change in case task wasn't queued Add organizations.get_user_companies Fix reset should also reset active_duration Add api_version to server.info
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from collections import defaultdict
|
|
from operator import itemgetter
|
|
|
|
from apiserver.apimodels.organization import TagsRequest
|
|
from apiserver.bll.organization import OrgBLL, Tags
|
|
from apiserver.database.model import User
|
|
from apiserver.service_repo import endpoint, APICall
|
|
from apiserver.services.utils import get_tags_filter_dictionary, get_tags_response
|
|
|
|
org_bll = OrgBLL()
|
|
|
|
|
|
@endpoint("organization.get_tags", request_data_model=TagsRequest)
|
|
def get_tags(call: APICall, company, request: TagsRequest):
|
|
filter_dict = get_tags_filter_dictionary(request.filter)
|
|
ret = defaultdict(set)
|
|
for entity in Tags.Model, Tags.Task:
|
|
tags = org_bll.get_tags(
|
|
company, entity, include_system=request.include_system, filter_=filter_dict,
|
|
)
|
|
for field, vals in tags.items():
|
|
ret[field] |= vals
|
|
|
|
call.result.data = get_tags_response(ret)
|
|
|
|
|
|
@endpoint("organization.get_user_companies")
|
|
def get_user_companies(call: APICall, company_id: str, _):
|
|
users = [
|
|
{
|
|
"id": u.id,
|
|
"name": u.name,
|
|
"avatar": u.avatar,
|
|
}
|
|
for u in User.objects(company=company_id).only("avatar", "name", "company")
|
|
]
|
|
|
|
call.result.data = {
|
|
"companies": [
|
|
{
|
|
"id": company_id,
|
|
"name": call.identity.company_name,
|
|
"allocated": len(users),
|
|
"owners": sorted(users, key=itemgetter("name")),
|
|
}
|
|
]
|
|
}
|