|
@@ -23,24 +23,27 @@ GET /organizations/burke-software/users/ (Not implemented)
|
|
|
"""
|
|
|
|
|
|
|
|
|
-def get_user_queryset(user_id: int):
|
|
|
- return User.objects.filter(id=user_id)
|
|
|
+def get_user_queryset(user_id: int, add_details=False):
|
|
|
+ qs = User.objects.filter(id=user_id)
|
|
|
+ if add_details:
|
|
|
+ qs = qs.prefetch_related("socialaccount_set")
|
|
|
+ return qs
|
|
|
|
|
|
|
|
|
-@router.get("/users/", response=list[UserSchema])
|
|
|
+@router.get("/users/", response=list[UserSchema], by_alias=True)
|
|
|
@paginate
|
|
|
async def list_users(request: AuthHttpRequest, response: HttpResponse):
|
|
|
"""
|
|
|
Exists in Sentry OSS, unsure what the use case is
|
|
|
We make it only list the current user
|
|
|
"""
|
|
|
- return get_user_queryset(user_id=request.auth.user_id)
|
|
|
+ return get_user_queryset(user_id=request.auth.user_id, add_details=True)
|
|
|
|
|
|
|
|
|
-@router.get("/users/{slug:user_id}/", response=UserSchema)
|
|
|
+@router.get("/users/{slug:user_id}/", response=UserSchema, by_alias=True)
|
|
|
async def get_user(request: AuthHttpRequest, user_id: MeID):
|
|
|
user_id = request.auth.user_id
|
|
|
- return await aget_object_or_404(get_user_queryset(user_id))
|
|
|
+ return await aget_object_or_404(get_user_queryset(user_id, add_details=True))
|
|
|
|
|
|
|
|
|
@router.delete("/users/{slug:user_id}/", response={204: None})
|
|
@@ -72,7 +75,7 @@ async def update_user(request: AuthHttpRequest, user_id: MeID, payload: UserIn):
|
|
|
if user_id != request.auth.user_id and user_id != "me":
|
|
|
raise Http404
|
|
|
user_id = request.auth.user_id
|
|
|
- user = await aget_object_or_404(get_user_queryset(user_id))
|
|
|
+ user = await aget_object_or_404(get_user_queryset(user_id, add_details=True))
|
|
|
|
|
|
for attr, value in payload.dict().items():
|
|
|
setattr(user, attr, value)
|