feat: init install + cleanup code

This commit is contained in:
swve 2023-11-20 22:38:49 +01:00
parent 2485285a06
commit 38288e8a57
28 changed files with 310 additions and 583 deletions

View file

@ -1,7 +1,6 @@
from typing import Literal, Optional
from click import Option
from typing import Optional
from sqlalchemy import JSON, Column
from sqlmodel import Field, Session, SQLModel, create_engine, select
from sqlmodel import Field, SQLModel
from enum import Enum

View file

@ -1,6 +1,5 @@
from typing import Optional
from sqlmodel import Field, SQLModel
from enum import Enum
class ChapterActivity(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)

View file

@ -1,7 +1,7 @@
from typing import List, Optional
from pydantic import BaseModel
from sqlmodel import Field, SQLModel
from src.db.activities import Activity, ActivityRead, ActivityUpdate
from src.db.activities import ActivityRead
class ChapterBase(SQLModel):

View file

@ -1,6 +1,5 @@
from typing import Optional
from sqlmodel import Field, SQLModel
from enum import Enum
class CourseChapter(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)

View file

@ -0,0 +1,31 @@
from typing import Optional
from sqlalchemy import JSON, Column
from sqlmodel import Field, SQLModel
class InstallBase(SQLModel):
step: int = Field(default=0)
data: dict = Field(default={}, sa_column=Column(JSON))
class Install(InstallBase, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
install_uuid: str = Field(default=None)
creation_date: str = ""
update_date: str = ""
class InstallCreate(InstallBase):
pass
class InstallUpdate(InstallBase):
pass
class InstallRead(InstallBase):
id: Optional[int] = Field(default=None, primary_key=True)
install_uuid: str = Field(default=None)
creation_date: str
update_date: str
pass

View file

@ -1,19 +1,46 @@
from enum import Enum
from typing import Optional
from typing import Optional, Union
from pydantic import BaseModel
from sqlalchemy import JSON, Column
from sqlmodel import Field, SQLModel
# Rights
class Permission(BaseModel):
action_create: bool
action_read: bool
action_update: bool
action_delete: bool
def __getitem__(self, item):
return getattr(self, item)
class Rights(BaseModel):
courses: Permission
users: Permission
collections: Permission
organizations: Permission
coursechapters: Permission
activities: Permission
def __getitem__(self, item):
return getattr(self, item)
# Database Models
class RoleTypeEnum(str, Enum):
TYPE_ORGANIZATION = "TYPE_ORGANIZATION"
TYPE_ORGANIZATION_API_TOKEN = "TYPE_ORGANIZATION_API_TOKEN"
TYPE_GLOBAL = "TYPE_GLOBAL"
TYPE_ORGANIZATION = "TYPE_ORGANIZATION" # Organization roles are associated with an organization, they are used to define the rights of a user in an organization
TYPE_ORGANIZATION_API_TOKEN = "TYPE_ORGANIZATION_API_TOKEN" # Organization API Token roles are associated with an organization, they are used to define the rights of an API Token in an organization
TYPE_GLOBAL = "TYPE_GLOBAL" # Global roles are not associated with an organization, they are used to define the default rights of a user
class RoleBase(SQLModel):
name: str
description: Optional[str]
rights: dict = Field(default={}, sa_column=Column(JSON))
rights: Optional[Union[Rights,dict]] = Field(default={}, sa_column=Column(JSON))
class Role(RoleBase, table=True):
@ -26,11 +53,12 @@ class Role(RoleBase, table=True):
class RoleCreate(RoleBase):
org_id: int = Field(default=None, foreign_key="organization.id")
org_id: Optional[int] = Field(default=None, foreign_key="organization.id")
class RoleUpdate(SQLModel):
role_id: int = Field(default=None, foreign_key="role.id")
name: Optional[str]
description: Optional[str]
rights: Optional[dict] = Field(default={}, sa_column=Column(JSON))
rights: Optional[Union[Rights,dict]] = Field(default={}, sa_column=Column(JSON))

View file

@ -1,10 +1,8 @@
from typing import Optional
from pydantic import BaseModel
from sqlmodel import Field, SQLModel
from enum import Enum
from src.db.trail_runs import TrailRun, TrailRunRead
from src.db.trail_runs import TrailRunRead
from src.db.trail_steps import TrailStep
class TrailBase(SQLModel):