From a16d1c771602df6205d42ee7cab46170dbfb63ef Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Tue, 30 Apr 2024 22:02:54 +0200 Subject: [PATCH] Limit Avatar image size to 120px and 240 px --- server/users/schema/types.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/server/users/schema/types.py b/server/users/schema/types.py index f1809311..4aa34491 100644 --- a/server/users/schema/types.py +++ b/server/users/schema/types.py @@ -22,6 +22,12 @@ class RecentModuleFilter(FilterSet): order_by = OrderingFilter(fields=(("recent_modules__visited", "visited"),)) +def get_resized_avatar_url(avatar_url, size=120): + # resize the avatar to 120px if it is on ucarecdn.com + if "ucarecdn.com" in avatar_url: + return f"{avatar_url}-/resize/{size}/" + return avatar_url + class SchoolClassNode(DjangoObjectType): pk = graphene.Int() members = graphene.List("users.schema.ClassMemberNode") @@ -109,6 +115,9 @@ class PrivateUserNode(DjangoObjectType): def resolve_pk(self, info, **kwargs): return self.id + def resolve_avatar_url(self, info, **kwargs): + return get_resized_avatar_url(self.avatar_url, size=240) + def resolve_permissions(self, info): return self.get_all_permissions() @@ -164,6 +173,10 @@ class PublicUserNode(DjangoObjectType): only_fields = ["full_name", "first_name", "last_name", "avatar_url"] interfaces = (relay.Node,) + def resolve_avatar_url(self, info, **kwargs): + return get_resized_avatar_url(self.avatar_url) + + @staticmethod def resolve_is_me(parent: User, info, **kwargs): return info.context.user.pk == parent.pk