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 )
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)
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)
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)
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))
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)
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)
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)
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)
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)
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)