-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathproject.py
42 lines (31 loc) · 1.09 KB
/
project.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from datetime import datetime
from enum import Enum, auto
from typing import List, Optional
import pymongo
from app.models.authorization import AuthorizationDB, RoleType
from app.models.groups import GroupOut
from app.models.users import UserOut
from beanie import Document, PydanticObjectId, View
from pydantic import BaseModel, Field
class Member(BaseModel):
user: UserOut
editor: bool = False
class ProjectBase(BaseModel):
id: PydanticObjectId = Field(default_factory=PydanticObjectId, alias="_id")
name: str
description: Optional[str] = None
created: datetime = Field(default_factory=datetime.utcnow)
modified: datetime = Field(default_factory=datetime.utcnow)
dataset_ids: Optional[List[PydanticObjectId]] = []
folder_ids: Optional[List[PydanticObjectId]] = []
file_ids: Optional[List[PydanticObjectId]] = []
creator: UserOut
users: List[Member] = []
class ProjectDB(Document, ProjectBase):
class Settings:
name = "projects"
class ProjectIn(ProjectBase):
pass
class ProjectOut(ProjectDB):
class Config:
fields = {"id": "id"}