Source code for app.model.orm.user
from datetime import datetime
from typing import List
import sqlalchemy as sql
from sqlalchemy.orm import (
Mapped,
mapped_column,
relationship,
)
from sqlalchemy_utc.sqltypes import UtcDateTime
from app.model.orm.orm_base import OrmBase
from app.model.lib import orcid
[docs]
class User(OrmBase):
"""
A visitor to the site that is identified by ORCID.
Every project and study need to be owned by a specific user and may be
editable by other users. This ensures a trace for who uploaded a particular
study in case moderation or editing is needed.
"""
# A relationship representing ownership of these records. Clearing them out
# should directly delete them so they can be replaced.
[docs]
owner_relationship = lambda: relationship(
back_populates='user',
cascade='all, delete-orphan',
)
[docs]
managedStudies: Mapped[List['Study']] = relationship(
secondary='StudyUsers',
viewonly=True,
)
[docs]
managedProjects: Mapped[List['Project']] = relationship(
secondary='ProjectUsers',
viewonly=True,
)
@property