mirror of
https://github.com/clearml/clearml-server
synced 2025-02-01 11:26:43 +00:00
baba8b5b73
Add initial support for project ordering Add support for sortable task duration (used by the UI in the experiment's table) Add support for project name in worker's current task info Add support for results and artifacts in pre-populates examples Add demo server features
77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
from mongoengine import (
|
|
StringField,
|
|
EmbeddedDocument,
|
|
EmbeddedDocumentListField,
|
|
EmailField,
|
|
DateTimeField,
|
|
)
|
|
|
|
from database import Database, strict
|
|
from database.model import DbModelMixin
|
|
from database.model.base import AuthDocument
|
|
from database.utils import get_options
|
|
|
|
|
|
class Entities(object):
|
|
company = "company"
|
|
task = "task"
|
|
user = "user"
|
|
model = "model"
|
|
|
|
|
|
class Role(object):
|
|
system = "system"
|
|
""" Internal system component """
|
|
root = "root"
|
|
""" Root admin (person) """
|
|
admin = "admin"
|
|
""" Company administrator """
|
|
superuser = "superuser"
|
|
""" Company super user """
|
|
user = "user"
|
|
""" Company user """
|
|
annotator = "annotator"
|
|
""" Annotator with limited access"""
|
|
guest = "guest"
|
|
""" Guest user. Read Only."""
|
|
|
|
@classmethod
|
|
def get_system_roles(cls) -> set:
|
|
return {cls.system, cls.root}
|
|
|
|
@classmethod
|
|
def get_company_roles(cls) -> set:
|
|
return set(get_options(cls)) - cls.get_system_roles()
|
|
|
|
|
|
class Credentials(EmbeddedDocument):
|
|
meta = {"strict": False}
|
|
key = StringField(required=True)
|
|
secret = StringField(required=True)
|
|
last_used = DateTimeField()
|
|
|
|
|
|
class User(DbModelMixin, AuthDocument):
|
|
meta = {"db_alias": Database.auth, "strict": strict}
|
|
|
|
id = StringField(primary_key=True)
|
|
name = StringField()
|
|
|
|
created = DateTimeField()
|
|
""" User auth entry creation time """
|
|
|
|
validated = DateTimeField()
|
|
""" Last validation (login) time """
|
|
|
|
role = StringField(required=True, choices=get_options(Role), default=Role.user)
|
|
""" User role """
|
|
|
|
company = StringField(required=True)
|
|
""" Company this user belongs to """
|
|
|
|
credentials = EmbeddedDocumentListField(Credentials, default=list)
|
|
""" Credentials generated for this user """
|
|
|
|
email = EmailField(unique=True, required=True)
|
|
""" Email uniquely identifying the user """
|