source code Browse git
from datetime import datetime
from enum import Enum
from typing import List, Optional

from pydantic import BaseModel, Field

from .client import Client


class UserRole(Enum):
    ANNOTATOR = "AN"
    REVIEWER = "RE"
    MANAGER = "MA"
    ADMINISTRATOR = "AD"
    OWNER = "OW"
    NOT_ACTIVATED = "NO"
    DISABLED = "DI"


class OrgMembership(BaseModel):
    role: UserRole
    active: bool
    organization_id: int


class User(BaseModel):
    id: int
    first_name: str
    last_name: str
    username: str
    email: str
    last_activity: datetime
    initials: str
    phone: str
    active_organization: Optional[int] = None
    org_membership: Optional[List[OrgMembership]] = Field(default_factory=list)
    client: Client

    class Config:
        arbitrary_types_allowed = True

    def set_role(self, role: UserRole):
        """Set user role in current active organization

        Parameters
        ----------
        role: label_studio_sdk.users.UserRole
            User role
        """
        response = self.client.make_request(
            "PATCH",
            f"/api/organizations/{self.active_organization}/memberships",
            json={"user_id": self.id, "role": role.value},
        )
        for membership in self.org_membership:
            if membership.organization_id == self.active_organization:
                membership.role = UserRole
        return response

Classes

class OrgMembership (**data: Any)

Usage docs: https://docs.pydantic.dev/2.7/concepts/models/

A base class for creating Pydantic models.

Attributes

__class_vars__
The names of classvars defined on the model.
__private_attributes__
Metadata about the private attributes of the model.
__signature__
The signature for instantiating the model.
__pydantic_complete__
Whether model building is completed, or if there are still undefined fields.
__pydantic_core_schema__
The pydantic-core schema used to build the SchemaValidator and SchemaSerializer.
__pydantic_custom_init__
Whether the model has a custom __init__ function.
__pydantic_decorators__
Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
__pydantic_generic_metadata__
Metadata for generic models; contains data used for a similar purpose to args, origin, parameters in typing-module generics. May eventually be replaced by these.
__pydantic_parent_namespace__
Parent namespace of the model, used for automatic rebuilding of models.
__pydantic_post_init__
The name of the post-init method for the model, if defined.
__pydantic_root_model__
Whether the model is a RootModel.
__pydantic_serializer__
The pydantic-core SchemaSerializer used to dump instances of the model.
__pydantic_validator__
The pydantic-core SchemaValidator used to validate instances of the model.
__pydantic_extra__
An instance attribute with the values of extra fields from validation when model_config['extra'] == 'allow'.
__pydantic_fields_set__
An instance attribute with the names of fields explicitly set.
__pydantic_private__
Instance attribute with the values of private attributes set on the model instance.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

source code Browse git
class OrgMembership(BaseModel):
    role: UserRole
    active: bool
    organization_id: int

Constants

active : bool
model_computed_fields
model_config
model_fields
organization_id : int
roleUserRole
class User (**data: Any)

Usage docs: https://docs.pydantic.dev/2.7/concepts/models/

A base class for creating Pydantic models.

Attributes

__class_vars__
The names of classvars defined on the model.
__private_attributes__
Metadata about the private attributes of the model.
__signature__
The signature for instantiating the model.
__pydantic_complete__
Whether model building is completed, or if there are still undefined fields.
__pydantic_core_schema__
The pydantic-core schema used to build the SchemaValidator and SchemaSerializer.
__pydantic_custom_init__
Whether the model has a custom __init__ function.
__pydantic_decorators__
Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
__pydantic_generic_metadata__
Metadata for generic models; contains data used for a similar purpose to args, origin, parameters in typing-module generics. May eventually be replaced by these.
__pydantic_parent_namespace__
Parent namespace of the model, used for automatic rebuilding of models.
__pydantic_post_init__
The name of the post-init method for the model, if defined.
__pydantic_root_model__
Whether the model is a RootModel.
__pydantic_serializer__
The pydantic-core SchemaSerializer used to dump instances of the model.
__pydantic_validator__
The pydantic-core SchemaValidator used to validate instances of the model.
__pydantic_extra__
An instance attribute with the values of extra fields from validation when model_config['extra'] == 'allow'.
__pydantic_fields_set__
An instance attribute with the names of fields explicitly set.
__pydantic_private__
Instance attribute with the values of private attributes set on the model instance.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

source code Browse git
class User(BaseModel):
    id: int
    first_name: str
    last_name: str
    username: str
    email: str
    last_activity: datetime
    initials: str
    phone: str
    active_organization: Optional[int] = None
    org_membership: Optional[List[OrgMembership]] = Field(default_factory=list)
    client: Client

    class Config:
        arbitrary_types_allowed = True

    def set_role(self, role: UserRole):
        """Set user role in current active organization

        Parameters
        ----------
        role: label_studio_sdk.users.UserRole
            User role
        """
        response = self.client.make_request(
            "PATCH",
            f"/api/organizations/{self.active_organization}/memberships",
            json={"user_id": self.id, "role": role.value},
        )
        for membership in self.org_membership:
            if membership.organization_id == self.active_organization:
                membership.role = UserRole
        return response

Constants

Config
active_organization : Optional[int]
clientClient
email : str
first_name : str
id : int
initials : str
last_activity : datetime.datetime
last_name : str
model_computed_fields
model_config
model_fields
org_membership : Optional[List[OrgMembership]]
phone : str
username : str

Methods

def set_role(self, role: UserRole)

Set user role in current active organization

Parameters

role : UserRole
User role
source code Browse git
def set_role(self, role: UserRole):
    """Set user role in current active organization

    Parameters
    ----------
    role: label_studio_sdk.users.UserRole
        User role
    """
    response = self.client.make_request(
        "PATCH",
        f"/api/organizations/{self.active_organization}/memberships",
        json={"user_id": self.id, "role": role.value},
    )
    for membership in self.org_membership:
        if membership.organization_id == self.active_organization:
            membership.role = UserRole
    return response
class UserRole (value, names=None, *, module=None, qualname=None, type=None, start=1)

An enumeration.

source code Browse git
class UserRole(Enum):
    ANNOTATOR = "AN"
    REVIEWER = "RE"
    MANAGER = "MA"
    ADMINISTRATOR = "AD"
    OWNER = "OW"
    NOT_ACTIVATED = "NO"
    DISABLED = "DI"

Constants

ADMINISTRATOR
ANNOTATOR
DISABLED
MANAGER
NOT_ACTIVATED
OWNER
REVIEWER