def user_profile(id): error = None current_user_id = current_user.get_id() is_current_user = True if current_user_id == id else False user = User.query.filter_by(id=id).first() user_email = user.email profile_pic_url = user.profile_pic reviews = Review.query.filter_by(user_id=id).all() number_reviews = len(reviews) form = PictureForm() if number_reviews == 0: user_reviews = None else: users = [ User.query.filter_by(id=review.user_id).first() for review in reviews ] journals = [ Journal.query.filter_by(id=review.journal_id).first() for review in reviews ] if is_current_user: edit_buttons = [review.id for review in reviews] else: edit_buttons = [None for review in reviews] user_reviews = zip(journals, users, reviews, edit_buttons) if form.validate_on_submit(): if form.picture.data != None: file = form.picture.data filename = secure_filename(file.filename) filename_with_prefix = str(random.randint(1, 10**6)) + filename save_dir = 'app/static/images/profile_pictures/' + filename_with_prefix image = Image.open(file) image = image.resize((200, 200)) image.save(save_dir) dir_for_db = '/static/images/profile_pictures/' + filename_with_prefix user.profile_pic = dir_for_db db.session.commit() if not profile_pic_url.endswith('default_avatar.png'): os.remove('app' + profile_pic_url) return redirect(url_for('user_profile', id=id)) else: error = 'upload avatar pic before submitting' return render_template('user_profile.html', logged_in=current_user.is_authenticated, profile_pic_url=profile_pic_url, user_email=user_email, user_reviews=user_reviews, number_reviews=number_reviews, is_current_user=is_current_user, form=form, error=error)