示例#1
0
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)
示例#2
0
def my_profile_upload_picture():
    form = PictureForm()
    # TODO: Is it possible for 'X-Upload-Too-Big' to be in request.headers,
    # and if so, should we deal with it?
    if form.validate():
        if form.picture.has_file():
            set_user_picture(current_user, form.picture)
            db.session.add(current_user)
            db.session.commit()
            return ('', 204)
    abort(400)
示例#3
0
文件: views.py 项目: tekd/noi2
def my_profile_upload_picture():
    form = PictureForm()
    # TODO: Is it possible for 'X-Upload-Too-Big' to be in request.headers,
    # and if so, should we deal with it?
    if form.validate():
        if form.picture.has_file():
            set_user_picture(current_user, form.picture)
            db.session.add(current_user)
            db.session.commit()
            return ('', 204)
    abort(400)
示例#4
0
文件: views.py 项目: GovLab/noi2
def my_profile_upload_picture():
    form = PictureForm()
    # TODO: Is it possible for 'X-Upload-Too-Big' to be in request.headers,
    # and if so, should we deal with it?
    if form.validate():
        if form.picture.has_file():
            set_user_picture(current_user, form.picture)
            db.session.add(current_user)
            db.session.commit()
            signals.user_changed_profile.send(
                current_app._get_current_object(),
                user=current_user._get_current_object(),
                avatar_changed=True
            )
            return ('', 204)
    abort(400)