From 6782177ce698bcf4a19af58abfcf5c24a8fee9ff Mon Sep 17 00:00:00 2001 From: tonyrewin Date: Tue, 6 Dec 2022 10:53:23 +0300 Subject: [PATCH] profile-error, authors commented stat --- resolvers/zine/profile.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/resolvers/zine/profile.py b/resolvers/zine/profile.py index 0944eb3f..b8d3e1ac 100644 --- a/resolvers/zine/profile.py +++ b/resolvers/zine/profile.py @@ -42,9 +42,9 @@ def add_author_stat_columns(q): # ) q = q.add_columns(literal(0).label('commented_stat')) - # q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns( - # func.count(distinct(Reaction.id)).label('commented_stat') - # ) + q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns( + func.count(distinct(Reaction.id)).label('commented_stat') + ) q = q.group_by(User.id) @@ -152,7 +152,7 @@ async def get_user_roles(slug): .all() ) - return [] # roles + return roles @mutation.field("updateProfile") @@ -161,9 +161,18 @@ async def update_profile(_, info, profile): auth = info.context["request"].auth user_id = auth.user_id with local_session() as session: - session.query(User).filter(User.id == user_id).update(profile) + user = session.query(User).filter(User.id == user_id).one() + slugowner = session.query(User).where(User.slug == profile['slug']).one() + if slugowner: + if slugowner.id != user_id: + return { + "error": "slug is used by another user" + } + user.update(profile) session.commit() - return {} + return { + "error": None + } @mutation.field("rateUser")