60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
import calendar
|
|
from datetime import datetime, date
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.user.model import User, Sex
|
|
|
|
|
|
class UserCreationModel(BaseModel):
|
|
username: str
|
|
email: str
|
|
password: str
|
|
given_name: str
|
|
family_name: Optional[str]
|
|
sex: str
|
|
birthdate: Optional[int]
|
|
|
|
def to_entity(self) -> User:
|
|
birthdate = None
|
|
|
|
if self.birthdate is not None:
|
|
birthdate = date.fromtimestamp(self.birthdate)
|
|
|
|
return User(
|
|
username=self.username,
|
|
email=self.email,
|
|
password=self.password,
|
|
given_name=self.given_name,
|
|
family_name=self.family_name,
|
|
sex=Sex[self.sex],
|
|
birthdate=birthdate
|
|
)
|
|
|
|
|
|
class UserResourceModel(BaseModel):
|
|
id: int
|
|
username: str
|
|
email: str
|
|
given_name: str
|
|
family_name: Optional[str]
|
|
sex: str
|
|
birthdate: Optional[int]
|
|
|
|
@staticmethod
|
|
def from_entity(user: User):
|
|
birthdate = None
|
|
|
|
if user.birthdate is not None:
|
|
birthdate = calendar.timegm(user.birthdate.timetuple())
|
|
|
|
return UserResourceModel(
|
|
id=user.id,
|
|
username=user.username,
|
|
email=user.email,
|
|
given_name=user.given_name,
|
|
family_name=user.family_name,
|
|
sex=user.sex.name,
|
|
birthdate=birthdate
|
|
)
|