示例#1
0
def anon_posts_request_impl(args):
    try:
        user = user_from_token(args['token'])
        posts = anon_posts_undefined_for_user_paginated(user, page=int(args['page']), limit=int(args['limit']))
        return Response(True, "Anon Posts For User Searched", PostSchema(many=True).dumps(posts).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#2
0
文件: search.py 项目: rafagonc/share
def search_posts_request_impl(args):
    try:
        user = user_from_token(args['token'])
        posts = search_posts_with_string(user ,args['search_string'], page=int(args['page']), limit=int(args['limit']))
        return Response(True, "Posts Searched", PostSchema(many=True).dumps(posts).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#3
0
文件: comment.py 项目: rafagonc/share
def comment_request_impl(args):
    try:
        author = user_from_token(args['token'])
        post = post_from_id(author, args['post_id'])
        comment = Comment(args['content'])
        post.comments.append(comment)
        author.comments.append(comment)
        post.add_hot(5, None)
        if args.has_key("picture") and args['picture'] is not None:
            output = s3_upload(args['picture'])
            url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output)
            comment.pic = url
        db.session.commit()

        #send notification to author
        send_notification_for_user_commenting_on_post(device_token=post.user.device_token,
                                                        user_id=author.id,
                                                        user_pic=author.pic,
                                                            comment_id=comment.id,
                                                            nickname=author.nickname,
                                                            post_id=post.id,
                                                            platform=post.user.platform)

        return Response(True, "Comment Succeded", CommentSchema().dumps(comment).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#4
0
文件: deletes.py 项目: rafagonc/share
def deletes_request_impl(args):
    try:
        user = user_from_token(args['token'])
        date  = dateutil.parser.parse(args['date'])
        deleted_groups = []
        deleted_posts = []
        deleted_comments = []

        #comments
        comments = deleted_comments_since_date(date)
        for comment in comments:
            deleted_comments.append(comment.id)

        #posts
        posts = deleted_posts_since_date(date)
        for post in posts:
            deleted_posts.append(post.id)

        #groups
        groups = deleted_groups_since_date(user, date)
        for group in groups:
            deleted_groups.append(group.id)

        deleted_dict = {'groups' : deleted_groups , 'posts' : deleted_posts, 'comments' : deleted_comments}
        return Response(True, "Deleteds Searched", json.dumps(deleted_dict)).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
def users_pending_join_approval_request_impl(args):
    try:
        admin = user_from_token(args['token'])
        page = args.pop('page', 1)
        users = admin_pending_subscriptions_to_approve(admin, page=int(page), limit=50)
        return Response(True, "Subscriptions Fetched", UserSchema(many=True).dumps(users).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#6
0
def comments_request_impl(args):
    try:
        user = user_from_token(args['token'])
        post = post_from_id(user ,args['post_id'])
        comments = comments_from_post_paginated(post, int(args['page']), int(args['limit']))
        return Response(True, "Comments Searched", CommentSchema(many=True).dumps(comments).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#7
0
def __add_nickname_request_impl(args):
    try:
        user = user_from_token(args['token'])
        user.nickname = args['nickname']
        db.session.commit()
        return Response(True, "Nickname Added", UserSchema().dumps(user).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#8
0
文件: login.py 项目: rafagonc/share
def login_request_impl(args):
    try:
        user = user_from_facebook_id(args['facebook_id'])
        delete_last_token_from_facebook_id(args['facebook_id'])
        if user is not None:
            __set_values_for_user_from_args(user, args)
            __generate_token_for_user(user)

            #needs to call it to assign to builtin, we need to use it later on group hybrid property.
            user_from_token(user.user_token.token)

            user_groups = json.loads(GroupSchema(many=True).dumps(groups_from_user(user)).data)
            user_data = json.loads(MyselfSchema().dumps(user).data)
            return Response(True, "Login Succeed", json.dumps(dict(groups=user_groups, myself=user_data))).output()
        else:
            return signup_request_impl(args)
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#9
0
def search_users_and_groups_request_impl(args):
    try:
        user = user_from_token(args['token'])
        groups = json.loads(GroupSchema(many=True).dumps(group_with_title(args['search'])).data)
        users = json.loads(UserSchema(many=True).dumps(users_from_nickname_or_name(args['search'])).data)
        response_dict = dict(groups=groups, users=users)
        return Response(True, "Search Complete!", json.dumps(response_dict)).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#10
0
文件: report.py 项目: rafagonc/share
def report_request_impl(args):
    try:
        user = user_from_token(args['token'])
        report = Report(user, args['type'], args['id'], args['reason'])
        db.session.add(report)
        db.session.commit()
        return Response(True, "Report Submitted!", ReportSchema().dumps(report).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#11
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()
示例#12
0
def screenshot_post_request_impl(args):
    try:
        user = user_from_token(args['token'])
        post = post_from_id(user, args['post_id'])
        if post.user != user:
            post_screenshot_notification.delay(post, user)

        return Response(True, "Screenshot Sent", None).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#13
0
文件: delete.py 项目: rafagonc/share
def delete_comment_request_impl(args):
    try:
        author = user_from_token(args['token'])
        comment = comment_from_id(args['comment_id'])
        if author.id != comment.user_id:
            raise NoPermissionException()
        comment.active = False
        db.session.commit()
        return Response(True, "Comment Deleted", None).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#14
0
文件: fetch.py 项目: rafagonc/share
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()
示例#15
0
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()
示例#16
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()
示例#17
0
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()
示例#18
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()
示例#19
0
文件: join.py 项目: rafagonc/share
def join_group_request_impl(args):
    try:
        joiner = user_from_token(args['token'])
        group = group_from_id(int(args['group_id']))
        is_blocked_from_group(joiner, group)
        user_can_join_group(joiner, group)
        group.subscriptions.append(joiner)
        if group.needs_approval_to_join is False:
                approve_subscription_of_user(joiner, group)
        db.session.commit()
        return Response(True, "Joined Group!", GroupSchema().dumps(group).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#20
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()
示例#21
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()
示例#22
0
文件: posts.py 项目: rafagonc/share
def group_post_request_impl(args):
    try:
        user = user_from_token(args["token"])
        group = group_from_id(int(args["group_id"]))
        user_is_a_approved_subscriber(user, group)
        return Response(
            True,
            "Posts Searched",
            PostSchema(many=True)
            .dumps(posts_from_group_paginate(user, group, int(args["page"]), int(args["limit"])))
            .data,
        ).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#23
0
文件: leave.py 项目: rafagonc/share
def leave_group_request_impl(args):
    try:
        leaver = user_from_token(args['token'])
        group = group_from_id(int(args['group_id']))
        if user_has_subscribed(leaver, group) is False:
            raise UserCannotDoThisBecuaseIsNotSubscripted
        if is_group_admin_returning_bool(leaver, group):
            if len(group.admins) == 1:
                raise UserCannotLeaveBecauseIsTheLastAdmin
            else:
                group.admins.remove(leaver)
        group.subscriptions.remove(leaver)
        db.session.commit()
        return Response(True, "Leaved Group", None).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#24
0
文件: update.py 项目: rafagonc/share
def update_user_request_impl(args):
    try:
        user = user_from_token(args['token'])

        #name
        if args.has_key("picture") and args['picture'] is not None:
            user.name = args['name']

        #friends
        if args.has_key("friends") and args['friends'] is not None:
            user.friends = args['friends']

        #email
        if args.has_key("email") and args['email'] is not None:
            user.email = args['email']

        #gender
        if args.has_key("gender") and args['gender'] is not None:
            user.gender = args['gender']

        #device_token
        if args.has_key("device_token") and args['device_token'] is not None:
            user.device_token = args['device_token']

        #platform
        if args.has_key("platform") and args['platform'] is not None:
            user.platform = args['platform']

        #nickname
        if args.has_key("nickname") and args['nickname'] is not None:
            user.nickname = args['nickname']

        #birthday
        if args.has_key("birthday") and args['birthday'] is not None:
            user.birthday = dateutil.parser.paser(args['birthday'])

        #picture
        if args.has_key("picture") and args['picture'] is not None:
            output = s3_upload(args['picture'])
            url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output)
            user.pic = url

        db.session.commit()
        return Response(True,"User Updated.", MyselfSchema().dumps(user).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#25
0
文件: explore.py 项目: rafagonc/share
def explore_request_impl(args):
    try:
        update_keywords()
        user = user_from_token(args["token"])
        hottests_groups_result = json.loads(GroupSchema(many=True).dumps(hottest_groups(user)).data)
        lastest_groups_created_result = json.loads(GroupSchema(many=True).dumps(lastest_groups_created(user)).data)
        hottest_users_result = json.loads(UserSchema(many=True).dumps(hottest_users()).data)
        keywords_result = json.loads(KeywordSchema(many=True).dumps(query_availble_keywords()).data)
        result = dict(
            hottest_groups=hottests_groups_result,
            lastest_groups=lastest_groups_created_result,
            hottest_users=hottest_users_result,
            trending=keywords_result,
        )
        return Response(True, "Explore!", json.dumps(result)).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#26
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()
示例#27
0
def anon_action_request_impl(args):
    try:
        user = user_from_token(args['token'])
        post = post_from_id(user, args['post_id'])
        group = group_from_id(args['group_id'])
        status = int(args['status'])
        post.approved = status
        if status == UNDEFINED:
            raise CannotAssignValueException
        elif status == APPROVED:
            post_auth_approved_request_notification.delay(post)
        elif status == REMOVED:
            post_auth_removed_request_notification.delay(post)


        db.session.commit()
        return Response(True, "Action taken", PostSchema().dumps(post).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#28
0
文件: post.py 项目: rafagonc/share
def post_request_impl(args):
    try:
        poster = user_from_token(args['token'])
        group = group_from_id(args['group_id'])

        user_is_a_approved_subscriber(poster, group)

        new_post = Post(args['content'], args['anon'])
        if args.has_key("picture") and args['picture'] is not None:
            output = s3_upload(args['picture'])
            url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output)
            new_post.pic = url
        group.posts.append(new_post)
        poster.posts.append(new_post)
        db.session.add(new_post)
        db.session.commit()

        #notifications
        if new_post.anon == 1:
            post_auth_request_notification.delay(new_post)

        return Response(True, "Posted Successfully", PostSchema().dumps(new_post).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()
示例#29
0
文件: create.py 项目: rafagonc/share
def create_group_request_impl(args):
    new_group = Group()
    try:
        admin = user_from_token(args['token'])
        new_group.title = args['title']
        new_group.description = args['description']
        new_group.admins.append(admin)
        new_group.subscriptions.append(admin)
        new_group.needs_approval_to_join = bool(args['needs_approval'])
        db.session.add(new_group)
        db.session.commit()

        approve_subscription_of_user(admin, new_group)

        #add rules
        if args.has_key('rules') and args['rules'] is not None:
            for rule_dict in args['rules']:
                new_rule = Rule(rule_dict['property'], int(rule_dict['operand']), rule_dict['value'], rule_dict['value_type'], new_group)
                new_rule.name = rule_dict['name']
                db.session.add(new_rule)
                new_group.rules.append(new_rule)
        db.session.commit()

        user_can_join_group(admin, new_group)

        #invite users
        if args.has_key('invited_user_ids') and args['invited_user_ids'] is not None:
            for invite_user_id in args['invited_user_ids']:
                args = {'token': admin.user_token.token, 'group_id': new_group.id, 'user_id': int(invite_user_id)}
                invite_request_impl(args)

        db.session.commit()
        return Response(True, "Group Created", GroupSchema().dumps(new_group).data).output()
    except Exception as exception:
        new_group.active = False
        return Response(False, str(exception), None).output()
示例#30
0
文件: get.py 项目: rafagonc/share
def get_group_request_impl(args):
    try:
        user_from_token(args['token'])
        return Response(True, "Group Created", GroupSchema().dumps(group_from_id(args['group_id'])).data).output()
    except Exception as exception:
        return Response(False, str(exception), None).output()