示例#1
0
def get_user(username):
    number_of_posts = 10;

    user = session_db.query(User).filter(User.login == username).first()
    if not user:
        return redirect(url_for('index'))



    if request.method == 'POST':
            number_of_posts = int(request.form['number_of_posts']) + 10


    # print(number_of_posts)
    posts = get_last_posts(username, number_of_posts)
    if username != session.get('user', {}).get('login', None):
        subscribed = 'Disabled'
        if 'user' in session:
            subscribed = session_db.query(Subscription).filter(Subscription.follower == session['user']['login'])\
                .filter(Subscription.blog == username).first()
            # print(subscribed)
            subscribed = 'Unsubscribe' if subscribed else 'Subscribe'


        return render_template('user.html',
                           user=user,
                           posts=posts,
                           subscribed=subscribed,
                           disabled='disabled' if subscribed == 'Disabled' else '',
                           number_of_posts=number_of_posts)
    return render_template('main_user.html',
                           user=user,
                           posts=posts,
                           number_of_posts=number_of_posts)
示例#2
0
def unsubscribe():
    # print(request.form['user_login'])
    if 'user' not in session:
        return redirect(url_for('user', username=request.form['user_login']))
    # try:
    sub = Subscription(session['user']['login'], request.form['user_login'])
    # print(sub)
    session_db.query(Subscription).filter(Subscription.follower == sub.follower)\
        .filter(Subscription.blog == sub.blog).delete()
    session_db.commit()
    # except:pass
    return redirect(url_for('get_user', username=request.form['user_login']))
示例#3
0
def login():
    user = get_user_from_session_and_cookies()
    if user:
        return redirect(url_for('index'))

    form = LoginForm(request.form)

    if request.method == 'POST':
        user_md5 = md5()
        user_md5.update(bytearray(form.password.data, 'utf8'))
        user_password = user_md5.hexdigest()
        user = session_db.query(User).filter(User.login == form.login.data).filter(
                                             User.password == user_password).first()
        if user:
            response = make_response(redirect(url_for('get_user', username=user.login)))
            if form.remember_me.data:
                response.set_cookie('user', user.login, max_age=157680000)
                response.set_cookie('password', user.password, max_age=157680000)
            session['user'] = {'login':user.login, 'e_mail':user.e_mail, 'role':user.role}
            flash('Hi, %s' % (user.login))
            return response
        flash('User %s does not exists or password is wrong' % form.login.data)
        return redirect(url_for('login'))
    return render_template('login.html',
                           method = request.method,
                           title='Log In',
                           form=form,
                           page='login')
示例#4
0
def sign_up():
    #print(request.cookies.get('user', 'нету'))
    form = LoginForm(request.form)
    user = get_user_from_session_and_cookies()
    if user:
        return redirect(url_for('index'))


    if request.method == 'POST' and form.validate():

        try:
            user_md5 = md5()
            user_md5.update(bytearray(form.password.data, 'utf8'))
            user_password = user_md5.hexdigest()
            user = User(form.login.data, user_password, None)
            session_db.add(user)
            session_db.commit()
            flash('Login requested by login="******", remember me=' + str(form.remember_me.data))
            session['user'] = {'login':user.login, 'e_mail':user.e_mail, 'role':user.role}
            response = make_response(redirect(url_for('get_user', username=user.login)))
            if form.remember_me.data:
                response.set_cookie('user', user.login, max_age=157680000)
                response.set_cookie('password', user.password, max_age=157680000)

            return response
        except:
            session_db.rollback()
            flash('The user is already exists, ' + str(session_db.query(User).filter(User.role == 1).all()))
            return redirect(url_for('sign_up'))

    return render_template('login.html',
                           method=request.method,
                           title='Sign Up',
                           form=form,
                           page = '/signup')
示例#5
0
def index():
    posts = session_db.query(Post).order_by(Post.id.desc()).all()
    posts = posts[:10:]
    user = get_user_from_session_and_cookies()
    return render_template('index.html',
                           title='Home',
                           posts=posts)
示例#6
0
def change_info():
    if 'user' not in session:
        return redirect(url_for('index'))
    user = session_db.query(User).filter(User.login == session['user']['login']).first()
    user.info = request.form['info']
    #print(user.info)
    session_db.commit()
    return redirect(url_for('get_user', username=session['user']['login']))
示例#7
0
def get_users():
    users = session_db.query(User).order_by(User.login).all()
    number_of_posts = 10
    if request.method == 'POST':
        number_of_posts = int(request.form['number_of_posts']) + 10
    users = users[:number_of_posts]
    return render_template('users.html',
                           users=users,
                           number_of_posts=number_of_posts)
示例#8
0
def subs(username):
     if 'user' not in session:
        return redirect(url_for('index'))
     users_subscriptions = session_db.query(User)\
         .select_from(Subscription)\
         .filter(Subscription.follower == username)\
         .join(User, Subscription.blog == User.login).all()
     return render_template('subscriptions.html',
                            users=users_subscriptions)
示例#9
0
def feed():
    if 'user' not in session:
        return redirect(url_for('index'))
    number_of_posts = 10
    if request.method == 'POST':
        number_of_posts = int(request.form['number_of_posts']) + 10
    users_subscriptions = session_db.query(Subscription.blog)\
        .filter(Subscription.follower == session['user']['login'])\
        .all()
    # print(users_subscriptions[0][0])
    # users_subscriptions = [user[0] for user in users_subscriptions]
    # print(users_subscriptions)
    posts = session_db.query(Post)\
        .filter(Post.user_login.in_(users_subscriptions))\
        .order_by(Post.id.desc())\
        .all()
    # print('posts ', posts)
    posts = posts[:number_of_posts]
    return render_template('feed.html',
                           posts=posts,
                           number_of_posts=number_of_posts)
示例#10
0
def get_user_from_session_and_cookies():
    user = None
    if 'user' in session:
        user = session['user']

    if 'user' in request.cookies:
        user_in_database = session_db.query(User).filter(User.login == request.cookies['user']).first()
        if user_in_database.password == request.cookies['password']:
            session['user'] = {'login':user_in_database.login,
                                'e_mail':user_in_database.e_mail,
                                'role':user_in_database.role,
                                'info':user_in_database.info}
            user = request.cookies['user']


    # print(user)
    return user
示例#11
0
def change_password():
    if 'user' not in session:
        return redirect(url_for('index'))
    user_md5 = md5()
    user_md5.update(bytearray(request.form['old_password'], 'utf8'))
    old_password = user_md5.hexdigest()
    user = session_db.query(User).filter(User.login == session['user']['login']).first()
    if old_password != user.password:
        flash('Password is wrong!')
        return redirect(url_for('settings'))
    new_password = request.form['new_password']
    if new_password != request.form['new_password_again']:
        flash('Repeat new password, please!')
        return redirect(url_for(settings))
    user_md5.update(bytearray(new_password, 'utf8'))
    user.password = user_md5.hexdigest()
    session_db.commit()
    flash('Successfully!')
    response = make_response(url_for('settings'))
    response.set_cookie('password', user.password, max_age=157680000)
    return response
示例#12
0
def delete_post():
    if 'user' not in session:
        return redirect(url_for('index'))
    session_db.query(Post).filter(Post.id == request.form['id']).delete()
    session_db.commit()
    return redirect(url_for('get_user', username=session['user']['login']))
示例#13
0
def get_last_posts(username, number):
    posts = session_db.query(Post).filter(Post.user_login==username).order_by(Post.id.desc()).all()
    posts = posts[:number:]
    for post in posts:
        post.delete_tag_chars()
    return posts