def user_profile():
    if request.method == 'GET':
        submit_url = url_for('.user_profile', _method='POST')
        return render_template('profile_form.html', submit_url=submit_url)
    else:
        session = Session()
        try:
            form = request.form
            username = form['username']

            if username_already_used(session, username):
                return "Username %s is already used. Click on <a href='%s'>Back</a> to go back" \
                       % (username, url_for(user_profile))

            prof = Profile()
            prof.userid = gen_random_uid()
            prof.username = username
            prof.created = str(int(time.time() * 1000))
            prof.firstname = form['firstname']
            prof.lastname = form['lastname']
            prof.age = form['age']
            prof.bio = form['biography']
            prof.gender = form['gender']

            file = request.files['image']
            img_filename = secure_filename(file.filename)
            prof.image = img_filename

            try:
                file.save(
                    os.path.join(app.config['UPLOAD_FOLDER'],
                                 prof.userid + '_' + img_filename))
            except Exception:
                pass

            session.add(prof)
            session.commit()
        except Exception:
            session.rollback()

        return "Profile submitted. Click on <a href='%s'>Back</a> to go back" % url_for(
            '.user_profile')