commit
d62ce4935e
@ -41,8 +41,7 @@ async def login_access_token(credentials: CredentialsSchema):
|
||||
async def get_userinfo():
|
||||
user_id = CTX_USER_ID.get()
|
||||
user_obj = await user_controller.get(id=user_id)
|
||||
data = await user_obj.to_dict()
|
||||
data.pop("password")
|
||||
data = await user_obj.to_dict(exclude_fields=["password"])
|
||||
data["avatar"] = "https://avatars.githubusercontent.com/u/54677442?v=4"
|
||||
return Success(data=data)
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ async def list_user(
|
||||
if email:
|
||||
q &= Q(email__contains=email)
|
||||
total, user_objs = await user_controller.list(page=page, page_size=page_size, search=q)
|
||||
data = [await obj.to_dict(m2m=True) for obj in user_objs]
|
||||
data = [await obj.to_dict(m2m=True, exclude_fields=["password"]) for obj in user_objs]
|
||||
return SuccessExtra(data=data, total=total, page=page, page_size=page_size)
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ async def get_user(
|
||||
):
|
||||
user_controller = UserController()
|
||||
user_obj = await user_controller.get(id=user_id)
|
||||
user_dict = await user_obj.to_dict()
|
||||
user_dict = await user_obj.to_dict(exclude_fields=["password"])
|
||||
return Success(data=user_dict)
|
||||
|
||||
|
||||
|
||||
@ -8,21 +8,28 @@ from app.settings import settings
|
||||
class BaseModel(models.Model):
|
||||
id = fields.BigIntField(pk=True, index=True)
|
||||
|
||||
async def to_dict(self, m2m=False):
|
||||
async def to_dict(self, m2m: bool = False, exclude_fields: list[str] | None = None):
|
||||
if exclude_fields is None:
|
||||
exclude_fields = []
|
||||
|
||||
d = {}
|
||||
for field in self._meta.db_fields:
|
||||
value = getattr(self, field)
|
||||
if isinstance(value, datetime):
|
||||
value = value.strftime(settings.DATETIME_FORMAT)
|
||||
d[field] = value
|
||||
if field not in exclude_fields:
|
||||
value = getattr(self, field)
|
||||
if isinstance(value, datetime):
|
||||
value = value.strftime(settings.DATETIME_FORMAT)
|
||||
d[field] = value
|
||||
if m2m:
|
||||
for field in self._meta.m2m_fields:
|
||||
values = [value for value in await getattr(self, field).all().values()]
|
||||
for value in values:
|
||||
value.update(
|
||||
(k, v.strftime(settings.DATETIME_FORMAT)) for k, v in value.items() if isinstance(v, datetime)
|
||||
)
|
||||
d[field] = values
|
||||
if field not in exclude_fields:
|
||||
values = [value for value in await getattr(self, field).all().values()]
|
||||
for value in values:
|
||||
value.update(
|
||||
(k, v.strftime(settings.DATETIME_FORMAT))
|
||||
for k, v in value.items()
|
||||
if isinstance(v, datetime)
|
||||
)
|
||||
d[field] = values
|
||||
return d
|
||||
|
||||
class Meta:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user