All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m34s
- Implemented ChoreAssignView for assigning chores to children. - Created ChoreConfirmDialog for confirming chore completion. - Developed KindnessAssignView for assigning kindness acts. - Added PenaltyAssignView for assigning penalties. - Introduced ChoreEditView and ChoreView for editing and viewing chores. - Created KindnessEditView and KindnessView for managing kindness acts. - Developed PenaltyEditView and PenaltyView for managing penalties. - Added TaskSubNav for navigation between chores, kindness acts, and penalties.
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from dataclasses import dataclass
|
|
from typing import Literal, Optional
|
|
from models.base import BaseModel
|
|
|
|
|
|
PendingEntityType = Literal['chore', 'reward']
|
|
PendingStatus = Literal['pending', 'approved', 'rejected']
|
|
|
|
|
|
@dataclass
|
|
class PendingConfirmation(BaseModel):
|
|
child_id: str
|
|
entity_id: str
|
|
entity_type: PendingEntityType
|
|
user_id: str
|
|
status: PendingStatus = "pending"
|
|
approved_at: Optional[str] = None # ISO 8601 UTC timestamp, set on approval
|
|
|
|
@classmethod
|
|
def from_dict(cls, d: dict):
|
|
return cls(
|
|
child_id=d.get('child_id'),
|
|
entity_id=d.get('entity_id'),
|
|
entity_type=d.get('entity_type'),
|
|
user_id=d.get('user_id'),
|
|
status=d.get('status', 'pending'),
|
|
approved_at=d.get('approved_at'),
|
|
id=d.get('id'),
|
|
created_at=d.get('created_at'),
|
|
updated_at=d.get('updated_at')
|
|
)
|
|
|
|
def to_dict(self):
|
|
base = super().to_dict()
|
|
base.update({
|
|
'child_id': self.child_id,
|
|
'entity_id': self.entity_id,
|
|
'entity_type': self.entity_type,
|
|
'user_id': self.user_id,
|
|
'status': self.status,
|
|
'approved_at': self.approved_at
|
|
})
|
|
return base
|