예제 #1
0
파일: unblock.py 프로젝트: rafagonc/share
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()
예제 #2
0
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()
예제 #3
0
파일: add_admin.py 프로젝트: rafagonc/share
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()
예제 #4
0
파일: create.py 프로젝트: rafagonc/share
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()
예제 #5
0
파일: delete.py 프로젝트: rafagonc/share
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()
예제 #6
0
파일: delete.py 프로젝트: rafagonc/share
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()
예제 #7
0
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()