Пример #1
0
def get_user_search_info(owner_email, user_nickname):
    try:
        user = session.query(User).filter(
            User.nickname.like(f"{user_nickname}%")).all()
    except SQLAlchemyError:
        session.rollback()
        return abort(418, "db_error")

    return {
        "users": [{
            "email":
            user_info.email,
            "img":
            user_info.img,
            "nickname":
            user_info.nickname,
            "listening":
            session.query(Listen).filter(
                Listen.listeningEmail == user_info.email).count(),
            "listener":
            session.query(Listen).filter(
                Listen.listenerEmail == user_info.email).count(),
            "isListening":
            True if session.query(Listen).filter(
                Listen.listenerEmail == owner_email).filter(
                    Listen.listeningEmail == user_info.email).first() else
            False
        } for user_info in user]
    }
Пример #2
0
def listening(owner_email, listening_email):

    if owner_email == listening_email:
        return abort(400, "can't listen yourself")

    listening_state = session.query(Listen).\
                        filter(Listen.listeningEmail == listening_email).\
                        filter(Listen.listenerEmail == owner_email).first()

    if listening_state:
        return abort(400, "already listening")

    listening_user = session.query(User).filter(
        User.email == listening_email).first()

    if listening_user:
        try:
            new_listening = Listen(listeningEmail=listening_email,
                                   listenerEmail=owner_email)

            session.add(new_listening)
            session.commit()

            return {"message": "Success"}

        except SQLAlchemyError:
            session.rollback()
            return abort(418, "db_error")

    else:
        return abort(404, "No such user")
Пример #3
0
def get_post_detail(post_id):
    post_detail = session.query(Posts).filter(Posts.id == post_id).first()
    if post_detail:
        return {
            "title": post_detail.title,
            "content": post_detail.content,
            "created_at": str(post_detail.created_at)
        }
    else:
        return abort(404, 'There is no post you looking for')
Пример #4
0
def delete_post(post_id):
    del_data = session.query(Posts).filter(Posts.id == post_id).first()

    if del_data:
        session.delete(del_data)

        session.commit()

        return {'message': 'Delete post successfully'}
    else:
        return abort(404, 'There is no post you looking for')
Пример #5
0
def update_post(post_id, title, content):
    udt_post = session.query(Posts).filter(Posts.id == post_id).first()

    if udt_post:
        udt_post.title = title
        udt_post.content = content

        session.commit()

        return {'message': 'Update post successfully'}
    else:
        return abort(404, 'There is no post you looking for')
Пример #6
0
def logout(email):
    user = session.query(User).filter(User.email == email).first()

    if user:
        user.refresh_token = None

        session.commit()

        return {"message": "logout successfully"}

    else:
        return abort(401, "cannot find token user")
Пример #7
0
def get_posts():
    posts = session.query(Posts).all()
    if posts:
        return {
            "posts": [{
                "title": post.title,
                "content": post.content,
                "created_at": str(post.created_at)
            } for post in posts]
        }
    else:
        return abort(404, 'There is not any post')
Пример #8
0
def withdrawal(email):
    del_user = session.query(User).filter(User.email == email).first()

    if del_user:
        token = Redis.get(email)
        if token:
            Redis.delete(email)
        session.delete(del_user)
        session.commit()
        return {"message": "success"}, 204
    else:
        abort(401, 'could not find user')
Пример #9
0
def get_profile_timeline(user_email, profile_user_email, page):
    limit = 7

    try:
        user = session.query(User).filter(User.email == profile_user_email).first()
    except SQLAlchemyError:
        session.rollback()
        return abort(418, "db_error")

    page = (page - 1) * limit

    if user is None:
        return abort(404, "User not Found")

    try:
        posts = session.query(Post) \
                   .filter(Post.userEmail == profile_user_email) \
                   .order_by(Post.createdAt.desc()) \
                   .all()[page:page + limit]
    except SQLAlchemyError:
        session.rollback()
        return abort(418, "db_error")

    return {
        "posts": [{
            "id": post.id,
            "user": {
                "email": user.email,
                "nickname": user.nickname,
                "img": user.img
            },
            "content": post.content,
            "sound": post.sound,
            "img": post.img,
            "yally": session.query(Yally).filter(Yally.postId == post.id).count(),
            "comment": session.query(Comment).filter(Comment.postId == post.id).count(),
            "isYally": True if session.query(Yally).filter(Yally.userEmail == user_email).filter(Yally.postId == post.id).first() else False,
            "createdAt": str(post.createdAt)
        }for post in posts]
    }
Пример #10
0
def get_notice_list(off_set, limit_num):
    notice_list = session.query(Notice, User)\
        .filter(Notice.user_email == User.email)\
        .order_by(Notice.created_at.desc())\
        .offset(off_set).limit(limit_num)

    next_notice = session.query(Notice).offset(off_set + limit_num).first()
    next_page = False
    if next_notice:
        next_page = True

    return {
        "notice": [{
            "id": n.id,
            "title": n.title,
            "content": n.content,
            "user_name": u.name,
            "created_at": str(n.created_at)
        } for n, u in notice_list],
        "next_page":
        next_page
    }, 200
Пример #11
0
def send_email(email, codetype):
    user = session.query(User).filter(User.email == email).first()

    if codetype == 'auth':
        if user:
            return abort(409, "This email is already sign up")

        return send_auth_code_email(email)

    elif codetype == 'reset':
        if user:
            return send_reset_code_email(email)

        return abort(404, "User not found")
Пример #12
0
def delete_notice(notice_id, user_email):
    del_notice = session.query(Notice).filter(Notice.id == notice_id).first()

    if del_notice:
        if del_notice.user_email == user_email:
            session.delete(del_notice)

            session.commit()

            return {"message": "success"}, 204
        else:
            abort(403, 'could not delete notice created by others')
    else:
        abort(404, 'could not find notice matching this id')
Пример #13
0
def send_email_code(email):
    user = session.query(User).filter(User.email == email).first()

    if user:
        abort(409, 'this email is already in use')

    code = f"{random.randint(111111, 999999):04d}"
    title = "GRAMO 이메일 인증 메일"
    content = f"이메일 인증 코드는 {code}입니다."

    send_email(title=title, content=content, adress=email)

    Redis.setex(name=email, value=code, time=180)

    return {"message": "success"}, 200
Пример #14
0
def change_password(email, code, password):

    if check_reset_code(email, code):
        user = session.query(User).filter(User.email == email).first()

        if user:
            user.password = generate_password_hash(password)
            session.commit()

            return {"message": "Successfully password changed"}

        else:
            return abort(404, "The email is incorrect")
    else:
        return abort(401, "The verification code is not correct")
Пример #15
0
def sign_up(email, password, name, major):
    origin_user = session.query(User).filter(User.email == email).first()

    if origin_user:
        abort(409, "this email is already in use")
    else:
        add_user = User(email=email,
                        password=generate_password_hash(password),
                        name=name,
                        major=major,
                        email_status=1)
        session.add(add_user)
        session.commit()

        return {"message": "success"}, 201
Пример #16
0
def sign_up(email, password, name, phone_number, gender):

    user = session.query(User).filter(User.email == email).first()

    if user:
        return abort(409, 'This email already signed up')

    add_user = User(email=email,
                    password=generate_password_hash(password),
                    name=name,
                    phone_number=phone_number,
                    gender=gender)
    session.add(add_user)
    session.commit()

    return {'message': 'Sign up successfully'}, 201
Пример #17
0
def get_detail_notice(notice_id):
    notice = session.query(Notice, User).\
        filter(Notice.user_email == User.email).\
        filter(Notice.id == notice_id).all()

    if notice:
        return {
            "notice": {
                "name": notice[0][1].name,
                "created_at": str(notice[0][0].created_at),
                "title": notice[0][0].title,
                "content": notice[0][0].content
            }
        }, 200

    else:
        abort(404, 'could not find notice matching this id')
Пример #18
0
def login(email, password):
    user = session.query(User).filter(User.email == email).first()
    check_user_pw = check_password_hash(user.passward,
                                        password) if user else None

    if check_user_pw:
        access_token = create_access_token(identity=email)
        refresh_token = create_refresh_token(identity=email)

        user.refresh_token = refresh_token

        session.commit()

        return {"access_token": access_token, "refresh_token": refresh_token}

    else:
        return abort(400, "The email or password is incorrect")
Пример #19
0
def sign_up(email, password, nickname, age):

    user = session.query(User).filter(User.email == email).first()

    if user:
        return abort(409, "This email is already sign up")

    try:
        create_new_user(email, password, nickname, age)

        return {
            "message": "Successfully signed up"
        }, 201

    except SQLAlchemyError:
        session.rollback()
        return abort(418, "db_error")
Пример #20
0
def login(email, password):

    user = session.query(User).filter(User.email == email).first()

    if user:
        user_pw = check_password_hash(user.password, password)

        if user_pw:
            access_token = create_access_token(identity=email)
            refresh_token = create_refresh_token(identity=email)

            return {
                "accessToken": access_token,
                "refreshToken": refresh_token
            }

        else:
            return abort(400, "The password is incorrect")
    else:
        return abort(404, "The email is incorrect")
Пример #21
0
def login(email, password):
    user = session.query(User).filter(User.email == email).first()

    if user:
        check_user_pw = check_password_hash(user.password, password)
        if check_user_pw:
            access_token = create_access_token(identity=email)
            refresh_token = create_refresh_token(identity=email)

            Redis.setex(name=email, value=refresh_token, time=604800)

            return {
                "name": user.name,
                "major": user.major,
                "access_token": access_token,
                "refresh_token": refresh_token
            }, 201
        else:
            abort(404, 'email and password does not match')

    else:
        abort(404, 'email and password does not match')