Merge pull request #11 from mizhexiaoxiao/dev

update
This commit is contained in:
mizhexiaoxiao 2023-11-28 11:36:51 +08:00 committed by GitHub
commit d62ce4935e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 15 deletions

View File

@ -41,8 +41,7 @@ async def login_access_token(credentials: CredentialsSchema):
async def get_userinfo(): async def get_userinfo():
user_id = CTX_USER_ID.get() user_id = CTX_USER_ID.get()
user_obj = await user_controller.get(id=user_id) user_obj = await user_controller.get(id=user_id)
data = await user_obj.to_dict() data = await user_obj.to_dict(exclude_fields=["password"])
data.pop("password")
data["avatar"] = "https://avatars.githubusercontent.com/u/54677442?v=4" data["avatar"] = "https://avatars.githubusercontent.com/u/54677442?v=4"
return Success(data=data) return Success(data=data)

View File

@ -28,7 +28,7 @@ async def list_user(
if email: if email:
q &= Q(email__contains=email) q &= Q(email__contains=email)
total, user_objs = await user_controller.list(page=page, page_size=page_size, search=q) 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) return SuccessExtra(data=data, total=total, page=page, page_size=page_size)
@ -38,7 +38,7 @@ async def get_user(
): ):
user_controller = UserController() user_controller = UserController()
user_obj = await user_controller.get(id=user_id) 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) return Success(data=user_dict)

View File

@ -8,21 +8,28 @@ from app.settings import settings
class BaseModel(models.Model): class BaseModel(models.Model):
id = fields.BigIntField(pk=True, index=True) 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 = {} d = {}
for field in self._meta.db_fields: for field in self._meta.db_fields:
value = getattr(self, field) if field not in exclude_fields:
if isinstance(value, datetime): value = getattr(self, field)
value = value.strftime(settings.DATETIME_FORMAT) if isinstance(value, datetime):
d[field] = value value = value.strftime(settings.DATETIME_FORMAT)
d[field] = value
if m2m: if m2m:
for field in self._meta.m2m_fields: for field in self._meta.m2m_fields:
values = [value for value in await getattr(self, field).all().values()] if field not in exclude_fields:
for value in values: values = [value for value in await getattr(self, field).all().values()]
value.update( for value in values:
(k, v.strftime(settings.DATETIME_FORMAT)) for k, v in value.items() if isinstance(v, datetime) value.update(
) (k, v.strftime(settings.DATETIME_FORMAT))
d[field] = values for k, v in value.items()
if isinstance(v, datetime)
)
d[field] = values
return d return d
class Meta: class Meta: