Full Working static multi tenant

This commit is contained in:
2025-04-01 00:29:43 +02:00
parent 50fdf22afc
commit 59cc709ed5
24 changed files with 327 additions and 244 deletions

View File

@@ -1,9 +1,10 @@
from typing import List
from typing import List, Optional
from html import unescape
from pydantic import BaseModel, Field, validator
from pydantic import BaseModel, Field
from ..core.models import CrudDocument, RichtextMultiline, RichtextSingleline, DictionaryEntry
from ..core.filter import Filter
class PartyTemplate(BaseModel):
@@ -47,12 +48,10 @@ class ProvisionTemplate(CrudDocument):
name: str = Field(title="Nom")
title: str = RichtextSingleline(title="Titre")
label: str = ""
body: str = RichtextMultiline(title="Corps")
@validator("label", always=True)
def generate_label(cls, v, values, **kwargs):
return "{} - \"{}\"".format(values['name'], unescape(remove_html_tags(values['title'])))
def compute_label(self) -> str:
return f"{self.name} - \"{unescape(remove_html_tags(self.title))}\""
class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title', 'body']
@@ -84,7 +83,6 @@ class ContractTemplate(CrudDocument):
"""
name: str = Field(title="Nom")
title: str = Field(title="Titre")
label: str = ""
parties: List[PartyTemplate] = Field(default=[], title="Parties")
provisions: List[ProvisionTemplateReference] = Field(
default=[],
@@ -97,12 +95,31 @@ class ContractTemplate(CrudDocument):
title="Variables"
)
@validator("label", always=True)
def generate_label(cls, v, values, **kwargs):
return "{} - \"{}\"".format(values['name'], unescape(remove_html_tags(values['title'])))
def compute_label(self) -> str:
return f"{self.name} - \"{unescape(remove_html_tags(self.title))}\""
class Settings(CrudDocument.Settings):
fulltext_search = ['name', 'title']
class Config:
title = 'Template de contrat'
class ContractTemplateFilters(Filter):
name__like: Optional[str] = None
order_by: Optional[list[str]] = None
class Constants(Filter.Constants):
model = ContractTemplate
search_model_fields = ["name"]
class ProvisionTemplateFilters(Filter):
name__like: Optional[str] = None
order_by: Optional[list[str]] = None
class Constants(Filter.Constants):
model = ProvisionTemplate
search_model_fields = ["name"]

View File

@@ -1,5 +1,5 @@
from ..core.routes import get_crud_router
from .models import ContractTemplate
from .models import ContractTemplate, ContractTemplateFilters
from .schemas import ContractTemplateCreate, ContractTemplateRead, ContractTemplateUpdate
router = get_crud_router(ContractTemplate, ContractTemplateCreate, ContractTemplateRead, ContractTemplateUpdate)
router = get_crud_router(ContractTemplate, ContractTemplateCreate, ContractTemplateRead, ContractTemplateUpdate, ContractTemplateFilters)

View File

@@ -1,5 +1,5 @@
from ..core.routes import get_crud_router
from .models import ProvisionTemplate
from .models import ProvisionTemplate, ProvisionTemplateFilters
from .schemas import ProvisionTemplateCreate, ProvisionTemplateRead, ProvisionTemplateUpdate
router = get_crud_router(ProvisionTemplate, ProvisionTemplateCreate, ProvisionTemplateRead, ProvisionTemplateUpdate)
router = get_crud_router(ProvisionTemplate, ProvisionTemplateCreate, ProvisionTemplateRead, ProvisionTemplateUpdate, ProvisionTemplateFilters)

View File

@@ -2,11 +2,11 @@ from pydantic import Field
from typing import List
from .models import ContractTemplate, ProvisionTemplate, PartyTemplate, ProvisionTemplateReference, DictionaryEntry
from ..core.schemas import Writer
from ..core.schemas import Writer, Reader
from ..core.models import RichtextMultiline, RichtextSingleline
class ContractTemplateRead(ContractTemplate):
class ContractTemplateRead(Reader, ContractTemplate):
pass
@@ -34,7 +34,7 @@ class ContractTemplateUpdate(ContractTemplateCreate):
pass
class ProvisionTemplateRead(ProvisionTemplate):
class ProvisionTemplateRead(Reader, ProvisionTemplate):
pass