clearml-server/apiserver/database/model/project.py

51 lines
1.8 KiB
Python
Raw Normal View History

2021-05-03 14:42:10 +00:00
from mongoengine import StringField, DateTimeField, IntField, ListField
2019-06-10 21:24:35 +00:00
2021-01-05 14:28:49 +00:00
from apiserver.database import Database, strict
from apiserver.database.fields import StrippedStringField, SafeSortedListField
from apiserver.database.model import AttributedDocument
from apiserver.database.model.base import GetMixin
2019-06-10 21:24:35 +00:00
class Project(AttributedDocument):
get_all_query_options = GetMixin.QueryParameterOptions(
pattern_fields=("name", "description"),
2021-05-03 14:42:10 +00:00
list_fields=("tags", "system_tags", "id", "parent", "path"),
2019-06-10 21:24:35 +00:00
)
meta = {
"db_alias": Database.backend,
"strict": strict,
"indexes": [
2021-05-03 14:42:10 +00:00
"parent",
"path",
2020-04-01 16:20:53 +00:00
("company", "name"),
2019-06-10 21:24:35 +00:00
{
"name": "%s.project.main_text_index" % Database.backend,
"fields": ["$name", "$id", "$description"],
"default_language": "english",
"weights": {"name": 10, "id": 10, "description": 10},
2020-04-01 16:20:53 +00:00
},
2019-06-10 21:24:35 +00:00
],
}
id = StringField(primary_key=True)
name = StrippedStringField(
required=True,
unique_with=AttributedDocument.company.name,
min_length=3,
sparse=True,
)
description = StringField(required=True)
created = DateTimeField(required=True)
tags = SafeSortedListField(StringField(required=True))
system_tags = SafeSortedListField(StringField(required=True))
default_output_destination = StrippedStringField()
2019-06-10 21:24:35 +00:00
last_update = DateTimeField()
featured = IntField(default=9999)
logo_url = StringField()
logo_blob = StringField(exclude_by_default=True)
company_origin = StringField(exclude_by_default=True)
2021-05-03 14:42:10 +00:00
parent = StringField(reference_field="Project")
path = ListField(StringField(required=True), exclude_by_default=True)