initial commit

This commit is contained in:
2023-01-09 13:03:16 +01:00
commit d0c0668fad
89 changed files with 12472 additions and 0 deletions

View File

@@ -0,0 +1 @@
from .routes import router as contract_router

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,40 @@
from datetime import datetime
from typing import List
from enum import Enum
from pydantic import BaseModel, Field
from beanie import Document
from ..entity.models import Entity
class ContractType(str, Enum):
employment = 'employment'
location = 'location'
class ContractStatus(str, Enum):
new = 'new'
signed = 'signed'
in_effect = 'in_effect'
executed = 'executed'
class Party(BaseModel):
entity: Entity
part: str
class Clause(BaseModel):
name: str
body: str
class Contract(Document):
_id: str
type: ContractType
parties: List[Party]
clauses: List[Clause]
status: ContractStatus = Field(default=ContractStatus.new)
created_at: datetime = Field(default=datetime.utcnow(), nullable=False)
updated_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)

View File

@@ -0,0 +1,5 @@
from ..core.routes import get_crud_router
from .models import Contract
from .schemas import ContractCreate, ContractRead, ContractUpdate
router = get_crud_router(Contract, ContractCreate, ContractRead, ContractUpdate)

View File

@@ -0,0 +1,36 @@
import uuid
from datetime import datetime
from typing import List
from pydantic import BaseModel, validator
from beanie import PydanticObjectId
from .models import Contract, ContractType, Clause
from ..entity.models import Entity
from ..core.schemas import Writer
class ContractRead(Contract):
pass
class PartyCreate(BaseModel):
entity: PydanticObjectId
part: str
class ContractCreate(Writer):
type: ContractType
parties: List[PartyCreate]
clauses: List[Clause]
async def validate_foreign_key(self):
for p in self.parties:
p.entity = await Entity.get(p.entity)
if p.entity is None:
raise ValueError
class ContractUpdate(BaseModel):
status: str