예제 #1
0
파일: likes.py 프로젝트: mrakhman/matcha
def create_like(user_id):
    liked_user = User.get_by_id(user_id)  # Check if user exists
    has_photo = Like.able_to_like(
        g.current_user.id)  # Check if user has profile image
    is_blocked = User.user_is_blocked(g.current_user.id,
                                      user_id)  # Check if user was blocked

    if is_blocked:
        abort(http.HTTPStatus.FORBIDDEN)

    if not has_photo:
        abort(http.HTTPStatus.FORBIDDEN)

    if liked_user and has_photo:
        Like.like(g.current_user.id, user_id)

        # If user is not blocked [blocked, blocker]
        # Notification
        if not is_blocked:
            text = Notification.notification_text('like', g.current_user)
            notification = Notification.from_dict({
                "user_id": user_id,
                "text": text,
                "type": "like"
            })
            notification.create()

        return jsonify(ok=True)
    abort(http.HTTPStatus.BAD_REQUEST)
예제 #2
0
파일: likes.py 프로젝트: mrakhman/matcha
def remove_like(user_id):
    liked_user = User.get_by_id(user_id)  # Check if user exists
    if liked_user:
        Like.unlike(g.current_user.id, user_id)

        # If user is not blocked [blocked, blocker]
        # Notification
        if not User.user_is_blocked(g.current_user.id, user_id):
            text = Notification.notification_text('unlike', g.current_user)
            notification = Notification.from_dict({
                "user_id": user_id,
                "text": text,
                "type": "like"
            })
            notification.create()

        return jsonify(ok=True)
    abort(http.HTTPStatus.BAD_REQUEST)
예제 #3
0
def get_user_by_id(user_id):
    user = User.get_by_id(user_id)
    if user:
        payload = user.get_view("public")
        if request.args.get('with_images'):
            user_images = Image.get_user_images(user.id)
            payload['images'] = []
            if user_images:
                payload['images'] = [{
                    "src": i.image_src,
                    "id": i.id
                } for i in user_images]
        if request.args.get('with_like'):
            has_like = Like.is_liked(g.current_user.id, user_id)
            likes_me = Like.is_liked(user_id, g.current_user.id)
            payload['has_like'] = has_like
            payload['likes_me'] = likes_me

        # If I blocked this user [blocked, blocker]
        if User.user_is_blocked(user_id, g.current_user.id):
            u_is_blocked = True
        else:
            u_is_blocked = False
        if request.args.get('with_block'):
            payload['is_blocked'] = u_is_blocked

        # If user didn't block me [blocked, blocker]
        # Send notification
        if not User.user_is_blocked(g.current_user.id, user_id):
            if g.current_user.id != user_id:
                text = Notification.notification_text('view', g.current_user)
                notification = Notification.from_dict({
                    "user_id": user_id,
                    "text": text,
                    "type": "view"
                })
                notification.create()

        # View history
        if g.current_user.id != user_id:
            History.add_to_history(g.current_user.id, user_id)

        return jsonify(user=payload)
    abort(404)
예제 #4
0
파일: messages.py 프로젝트: mrakhman/matcha
def create_message():
    req_data = request.get_json()
    print(req_data)
    form_values = {
        "text": {
            'required': False,
            'default': None,
            'type': str,
            'validator': None
        },
        "receiver_id": {
            'required': False,
            'default': None,
            'type': int,
            'validator': None
        }
    }
    check_fields(req_data, form_values)
    sender_id = g.current_user.id
    receiver_id = int(req_data["receiver_id"])
    if (Like.is_liked(sender_id, receiver_id) and Like.is_liked(receiver_id, sender_id)) \
      and (not User.user_is_blocked(sender_id, receiver_id) and not User.user_is_blocked(receiver_id, sender_id)):
        message = Message.from_dict({
            "sender_id": sender_id,
            "receiver_id": receiver_id,
            "text": req_data["text"]
        })
        message.create()
        text = Notification.notification_text('message', g.current_user)
        notification = Notification.from_dict({
            "user_id": receiver_id,
            "text": text,
            "type": "message"
        })
        notification.create()

        return jsonify(ok=True)
    abort(http.HTTPStatus.FORBIDDEN)