def block_user_from_group_request_impl(args): try: admin = user_from_token(args['token']) group = group_from_id(int(args['group_id'])) is_group_admin(admin, group) group.subscriptions.remove(user_from_id(args['user_id'])) group.blocked_users.append(user_from_id(args['user_id'])) db.session.commit() return Response(True, "Blocked!", GroupSchema().dumps(group).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def fetch_user_request_impl(args): try: user = user_from_token(args['token']) user_to_fetch = user_from_id(args['user_id']) groups = json.loads(GroupSchema(many=True).dumps(groups_from_user(user_to_fetch)).data) posts = json.loads(PostSchema(many=True).dumps(posts_from_user_paginate(user, user_to_fetch)).data) marshal_user = json.loads(UserSchemaWithPostsAndGroups().dumps(user_to_fetch).data) response = dict(user=marshal_user, posts=posts, groups=groups) return Response(True, "User Searched", json.dumps(response)).output() except Exception as exception: return Response(False, str(exception), None).output()
def add_admin_request_impl(args): try: admin = user_from_token(args['token']) group = group_from_id(args['group_id']) is_group_admin(admin, group) for user_id in args['user_ids']: group.admins.append(user_from_id(user_id)) db.session.commit() return Response(True, "Admin Added!", GroupSchema().dumps(group).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def invite_request_impl(args): try: inviter = user_from_token(args['token']) group = group_from_id(args['group_id']) invitee = user_from_id(args['user_id']) invite = Invite(inviter, invitee, group) db.session.add(invite) db.session.commit() invited_for_group.delay(invite, group) return Response(True, "Invitation Made", InviteSchema().dumps(invite).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def approve_join_request_impl(args): try: admin = user_from_token(args["token"]) user_pending = user_from_id(args["user_id"]) group = group_from_id(int(args["group_id"])) is_group_admin(admin, group) approved = bool(args["approved"]) if approved: approve_subscription_of_user(user_pending, group) else: remove_subscription_of_user(user_pending, group) db.session.commit() return Response( True, "Joined Group!" if approved is True else "Cannot Join Group!", GroupSchema().dumps(group).data ).output() except Exception as exception: return Response(False, str(exception), None).output()