예제 #1
0
def message(id):
    if not UserConnect.is_friend(id):
        return redirect(url_for('app.home'))
    form = MessageForm(request.form)
    # 自分と相手のやり取りのメッセージを取得
    messages = Message.get_friend_messages(current_user.get_id(), id)
    user = User.select_user_by_id(id)
    # まだ読まれていないが、新たに読まれるメッセージ
    read_message_ids = [message.id for message in messages if (not message.is_read) and (message.from_user_id == int(id))]
    # すでに読まれていて、かつまだチェックしていない自分のメッセージをチェック
    not_checked_message_ids = [message.id for message in messages if message.is_read and (not message.is_checked) and (message.from_user_id == int(current_user.get_id()))]
    if not_checked_message_ids:
        with db.session.begin(subtransactions=True):
            Message.update_is_checked_by_ids(not_checked_message_ids)
        db.session.commit()
    # read_message_idsのis_readをTrueに変更
    if read_message_ids:
        with db.session.begin(subtransactions=True):
            Message.update_is_read_by_ids(read_message_ids)
        db.session.commit()
    if request.method == 'POST' and form.validate():
        new_message = Message(current_user.get_id(), id, form.message.data)
        with db.session.begin(subtransactions=True):
            new_message.create_message()
        db.session.commit()
        return redirect(url_for('app.message', id=id))
    return render_template(
        'message.html', form=form,
        messages=messages, to_user_id=id,
        user=user
    )
예제 #2
0
def journal():
    users = User.query.all()
    journals = Journal.query.all()
    comments = Comment.query.all()
    like_journals = LikeJournal.query.all()

    user_id = current_user.get_id()
    user = User.select_user_by_id(user_id)

    form = LikeJournalForm(request.form)
    form_c = CommentForm(request.form)

    if request.method == 'POST' and form.validate():
        new_like = LikeJournal(user_id, form.to_journal_id.data)
        with db.session.begin(subtransactions=True):
            if new_like.is_liked(form.to_journal_id.data) == False:
                new_like.add_like()
            else:
                liked_items = LikeJournal.query.filter_by(
                    from_user_id = user_id,
                    to_journal_id = form.to_journal_id.data
                ).all()
                for liked_item in liked_items:
                    liked_item.delete_like()
        db.session.commit()
        return redirect(url_for('user.user'))

    # if request.method == 'POST' and form_c.validate():
    #     new_comment = Comment(user_id, form_c.to_journal_id.data, form_c.comment.data)
    #     with db.session.begin(subtransactions=True):
    #         new_comment.create_comment()
    #     db.session.commit()
    #     flash("Your comment has been added!", "success")
    return render_template('journal/journal.html',  users=users, journals=journals, comments=comments, like_journals=like_journals, form=form, form_c=form_c)
예제 #3
0
def add_journal():
    user_id = current_user.get_id()
    user = User.select_user_by_id(user_id)
    form = JournalForm(request.form)
    if request.method == 'POST' and form.validate():
        journal = Journal(
            from_user_id=form.from_user_id.data,
            start_date=form.start_date.data,
            end_date=form.end_date.data,
            country=form.country.data,
            city=form.city.data,
            title=form.title.data,
            comment=form.comment.data,
            picture_path=form.picture_path.data,
        )
        with db.session.begin(subtransactions=True):
            file = request.files[form.picture_path.name].read()
            if file:
                file_name = user_id + '_' + \
                    str(int(datetime.now().timestamp())) + '.jpg'
                picture_path = 'flaskr/static/image_journal/' + file_name
                open(picture_path, 'wb').write(file)
                journal.picture_path = 'image_journal/' + file_name
            journal.create_new_journal()
        db.session.commit()
        return redirect(url_for('journal.journal'))
    return render_template('add_journal/add_journal.html',
                           user=user,
                           form=form)
예제 #4
0
def history():
    albums = Album.query.join(Age, Age.id == Album.from_age_id).add_columns(
        Age.age, Age.info.label('age_info'), Album.id, Album.year, Album.name,
        Album.name_j, Album.title, Album.title_j, Album.info,
        Album.album_picture_path, Album.artist_picture_path).all()
    artists = Artist.query.all()
    like_albums = LikeAlbum.query.all()

    user_id = current_user.get_id()
    user = User.select_user_by_id(user_id)

    form = LikeAlbumForm(request.form)

    if request.method == 'POST' and form.validate():
        new_like = LikeAlbum(user_id, form.to_album_id.data)
        with db.session.begin(subtransactions=True):
            if new_like.is_liked(form.to_album_id.data) == False:
                new_like.add_like()
            else:
                liked_items = LikeAlbum.query.filter_by(
                    from_user_id=user_id,
                    to_album_id=form.to_album_id.data).all()
                for liked_item in liked_items:
                    liked_item.delete_like()
        db.session.commit()
        return redirect(url_for('history.history'))
    return render_template('history/history.html',
                           albums=albums,
                           artists=artists,
                           like_albums=like_albums,
                           user=user,
                           form=form)
예제 #5
0
def load_old_messages():
    user_id = request.args.get('user_id', -1, type=int)
    offset_value = request.args.get('offset_value', -1, type=int)
    if user_id == -1 or offset_value == -1:
        return
    messages = Message.get_friend_messages(current_user.get_id(), user_id, offset_value * 100)
    user = User.select_user_by_id(user_id)
    return jsonify(data=make_old_message_format(user, messages))
예제 #6
0
def change_password():
    form = ChangePasswordForm(request.form)
    if request.method == 'POST' and form.validate():
        user = User.select_user_by_id(current_user.get_id())
        password = form.password.data
        with db.session.begin(subtransactions=True):
            user.save_new_password(password)
        db.session.commit()
        flash('パスワードの更新に成功しました')
        return redirect(url_for('app.user'))
    return render_template('change_password.html', form=form)
예제 #7
0
def reset_password(token):
    form = ResetPasswordForm(request.form)
    reset_user_id = PasswordResetToken.get_user_id_by_token(token)
    if not reset_user_id:
        abort(500)
    if request.method == 'POST' and form.validate():
        password = form.password.data
        user = User.select_user_by_id(reset_user_id)
        with db.session.begin(subtransactions=True):
            user.save_new_password(password)
            PasswordResetToken.delete_token(token)
        db.session.commit()
        flash('パスワードを更新しました。')
        return redirect(url_for('app.login'))
    return render_template('reset_password.html', form=form)
예제 #8
0
def user():
    form = UserForm(request.form)
    if request.method == 'POST' and form.validate():
        user_id = current_user.get_id()
        user = User.select_user_by_id(user_id)
        with db.session.begin(subtransactions=True):
            user.username = form.username.data
            user.email = form.email.data
            file = request.files[form.picture_path.name].read()
            if file:
                file_name = user_id + '_' + \
                    str(int(datetime.now().timestamp())) + '.jpg'
                picture_path = 'flaskr/static/user_image/' + file_name
                open(picture_path, 'wb').write(file)
                user.picture_path = 'user_image/' + file_name
        db.session.commit()
        flash('ユーザ情報の更新に成功しました')
    return render_template('user.html', form=form)
예제 #9
0
def message_ajax():
    user_id = request.args.get('user_id', -1, type=int)
    # まだ読んでいない相手からのメッセージを取得
    user = User.select_user_by_id(user_id)
    not_read_messages = Message.select_not_read_messages(user_id, current_user.get_id())
    not_read_message_ids = [message.id for message in not_read_messages]
    if not_read_message_ids:
        with db.session.begin(subtransactions=True):
            Message.update_is_read_by_ids(not_read_message_ids)
        db.session.commit()
    # すでに読まれた自分のメッセージでまだチェックしていないものを取得
    not_checked_messages = Message.select_not_checked_messages(current_user.get_id(), user_id)
    not_checked_message_ids = [not_checked_message.id for not_checked_message in not_checked_messages]
    if not_checked_message_ids:
        with db.session.begin(subtransactions=True):
            Message.update_is_checked_by_ids(not_checked_message_ids)
        db.session.commit()
    return jsonify(data=make_message_format(user, not_read_messages), checked_message_ids = not_checked_message_ids)
예제 #10
0
def user():
    journals = Journal.query.all()
    like_journals = LikeJournal.query.all()
    form = UserForm(request.form)

    if request.method == 'POST' and form.validate():
        user_id = current_user.get_id()
        user = User.select_user_by_id(user_id)
        with db.session.begin(subtransactions=True):
            file = request.files[form.picture_path.name].read()
            if file:
                file_name = user_id + '_' + \
                    str(int(datetime.now().timestamp())) + '.jpg'
                picture_path = 'flaskr/static/image_user/' + file_name
                open(picture_path, 'wb').write(file)
                user.picture_path = 'image_user/' + file_name
        db.session.commit()
        flash('User info update completed.')
    return render_template('user/user.html',
                           like_journals=like_journals,
                           journals=journals,
                           form=form)
예제 #11
0
def user():
    like_albums = LikeAlbum.query.all()
    like_songs = LikeSong.query.all()

    albums = Album.query.all()
    artists = Artist.query.all()

    form = UserForm(request.form)
    if request.method == 'POST' and form.validate():
        user_id = current_user.get_id()
        user = User.select_user_by_id(user_id)
        with db.session.begin(subtransactions=True):
            file = request.files[form.picture_path.name].read()
            if file:
                file_name = user_id + '_' + \
                    str(int(datetime.now().timestamp())) + '.jpg'
                picture_path = 'flaskr/static/image_user/' + file_name
                open(picture_path, 'wb').write(file)
                # Upload
                storage.child(f"image_user/{file_name}").put(
                    f"flaskr/static/image_user/{file_name}")
                # Download
                user.picture_path = storage.child(
                    f"image_user/{file_name}").get_url(
                        f"flaskr/static/image_user/{file_name}")
                print("---------------")
                print(user.picture_path)
        db.session.commit()
        return redirect(url_for('user.user'))
        flash('User info update completed.')
    return render_template('user/user.html',
                           like_albums=like_albums,
                           like_songs=like_songs,
                           albums=albums,
                           artists=artists,
                           form=form)