def unblock_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.blocked_users.remove(user_from_id(args['user_id'])) db.session.commit() return Response(True, "Unblocked!", GroupSchema().dumps(group).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def anon_posts_request_impl(args): try: admin = user_from_token(args['token']) groups = groups_from_ids(args['group_ids']) posts = [] for group in groups: is_group_admin(admin, group) posts.extend(anon_posts_undefined_paginated(group, page=args['page'], limit=args['limit'])) return Response(True, "Group Created", PostSchema(many=True).dumps(posts).data).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 create_rule_request_impl(args): try: user = user_from_token(args['token']) group = group_from_id(args['group_id']) is_group_admin(user, group) rule = Rule(args['property'], args['operand'] ,args['value'], args['value_type'], group) rule.name = args['name'] db.session.add(rule) db.session.commit() return Response(True, "Rule Created" , RuleSchema().dumps(rule).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def delete_post_request_impl(args): try: deleter = user_from_token(args['token']) post = post_from_id(deleter, args['post_id']) if post.user.id != deleter.id: is_group_admin(deleter, post.group) post.active = False for comment in post.comments: comment.active = False db.session.commit() return Response(True, "Delete Succeded", None).output() except Exception as exception: return Response(False, str(exception), None).output()
def delete_group_request_impl(args): try: admin = user_from_token(args['token']) group = group_from_id(args['group_id']) is_group_admin(admin,group) group.active = False for post in group.posts: post.active = False for comment in post.comments: comment.active = False db.session.commit() return Response(True, "Group Deleted", GroupSchema().dumps(group).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()