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