Contract Signing and contract printing
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
import uuid
|
||||
|
||||
import datetime
|
||||
from typing import List, Literal
|
||||
from enum import Enum
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from beanie.operators import ElemMatch
|
||||
|
||||
from ..core.models import CrudDocument, RichtextSingleline, RichtextMultiline, DictionaryEntry
|
||||
from ..entity.models import Entity
|
||||
@@ -13,6 +12,7 @@ from ..entity.models import Entity
|
||||
class ContractStatus(str, Enum):
|
||||
published = 'published'
|
||||
signed = 'signed'
|
||||
printed = 'printed'
|
||||
executed = 'executed'
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ class Party(BaseModel):
|
||||
representative: Entity = None
|
||||
signature_uuid: str
|
||||
signature_affixed: bool = False
|
||||
signature_png: str = None
|
||||
|
||||
|
||||
class ProvisionGenuine(BaseModel):
|
||||
@@ -127,6 +128,27 @@ class Contract(CrudDocument):
|
||||
hour=0, minute=0, second=0)
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def find_by_signature_id(cls, signature_id: str):
|
||||
crit = ElemMatch(cls.parties, {"signature_uuid": signature_id})
|
||||
return cls.find_one(crit)
|
||||
|
||||
def get_signature(self, signature_id: str):
|
||||
for p in self.parties:
|
||||
if p.signature_uuid == signature_id:
|
||||
return p
|
||||
|
||||
def get_signature_index(self, signature_id: str):
|
||||
for i, p in enumerate(self.parties):
|
||||
if p.signature_uuid == signature_id:
|
||||
return i
|
||||
|
||||
def is_signed(self):
|
||||
for p in self.parties:
|
||||
if not p.signature_affixed:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def replace_variables_in_value(variables, value: str):
|
||||
for v in variables:
|
||||
|
||||
Reference in New Issue
Block a user