def add_news(): if 'username' not in session: return redirect('/login') form = AddNewsForm() if form.back.data: return redirect('/index') elif form.validate_on_submit(): title = form.title.data content = form.content.data nm = NewsModel(db.get_connection()) nm.insert(title, content, session['user_id'], data_return()) return redirect("/index") user = UsersModel(db.get_connection()) position = user.return_position(session['user_id']) # Если пользователь случайно вбил, проверяется, имеет ли он права if not position: return render_template('indifferent/not_for_admin.html', title='У вас недостаточно прав!') else: return render_template('add_news.html', title='Добавление новости', form=form, username=session['username'], about_page='', session=session)
def add_topic(): if 'username' not in session: return redirect('/login') form = AddTopicForm() if form.back.data: return redirect('/topics') elif form.validate_on_submit(): title = form.title.data content = form.content.data nm = TopicModel(db.get_connection()) nm.insert(title, content, session['user_id'], data_return()) return redirect("/topics") user = UsersModel(db.get_connection()) position = user.return_position(session['user_id']) # Проверка, имеет ли пользователь права if not position: return render_template('indifferent/not_for_admin.html', title='У вас недостаточно прав!', session=session) else: return render_template('add_topic.html', title='Добавление темы', form=form, username=session['username'], about_page='', session=session)
def login(): global recent recent = '/login' form = LoginForm() # Переход к регистрации if form.reg.data: return redirect("/registration") elif form.validate_on_submit(): user_name = form.username.data password = form.password.data user_model = UsersModel(db.get_connection()) # Проверка, существует ли аккаунт exists = user_model.exists(user_name, password) if exists[0]: session['username'] = exists[2] session['user_id'] = exists[1] else: return render_template( 'login.html', title='Авторизация', form=form, err='Проверьте правильность введенных данных', session=session) # Переход к новостям return redirect("/index") return render_template('login.html', title='Авторизация', form=form, about_page='', session=session)
def popular(period): global recent recent = '/popular/' + period news = NewsModel(db.get_connection()) # + сортировка по дате. За последнюю неделю, месяц, все время if period == 'week': if 'username' not in session: return redirect('/login') news = news.get_popular_week(session['user_id']) return render_template('all_news.html', title='Популярное', news=news, session=session) return 'week' elif period == 'month': if 'username' not in session: return redirect('/login') news = news.get_popular_month(session['user_id']) return render_template('all_news.html', title='Популярное', news=news, session=session) elif period == 'all_time': if 'username' not in session: return redirect('/login') news = news.get_popular_alltime(session['user_id']) return render_template('all_news.html', title='Популярное', news=news, session=session)
def registration(): global recent recent = 'registration' form = RegistrationForm() user_model = UsersModel(db.get_connection()) if form.back.data: return redirect('/login') elif form.validate_on_submit(): user_name = form.username.data password = form.password.data email = form.email.data about = form.about.data user_model.insert(user_name, password, email, about) # Проверка, точно ли все в базе exists = user_model.exists(user_name, password) if exists[0]: session['username'] = user_name session['user_id'] = exists[1] # Переход к новостям return redirect('/index') return render_template('registration.html', title='Регистрация', form=form, err='', about_page='Расскажите нам немного о себе!', session=session)
def topics(): global recent recent = '/topics' if 'username' not in session: return redirect('/login') if request.method == 'POST': if 'perenap' in request.form: return redirect('/add_topic') user = UsersModel(db.get_connection()) position = user.return_position(session['user_id']) topics = TopicModel(db.get_connection()) topics = topics.get_all() return render_template('topics.html', title='Наиболее актуальные и волнующие темы', topics=topics, position=position, session=session)
def for_adm(): if 'username' not in session: return redirect('/login') um = UsersModel(db.get_connection()) user = um.return_position(session['user_id']) # Проверка, есть ли права if user: nm = NewsModel(db.get_connection()) news = nm.get_all_likes() print(news) return render_template('for_admin.html', mas=news, title='Информация о лайках', session=session) else: return render_template('indifferent/not_for_admin.html', title='У вас недостаточно прав!', session=session)
def index(): global recent recent = '/index' if 'username' not in session: return redirect('/login') if request.method == 'POST': # Добавление новости. Только для админа if 'perenap' in request.form: return redirect('/add_news') user = UsersModel(db.get_connection()) # Проверка. User или adm (пользователь или админ) position = user.return_position(session['user_id']) news = NewsModel(db.get_connection()) news = news.get_all(session['user_id']) return render_template('all_news.html', title='Новости', news=news, position=position, session=session)
def lk(): global recent recent = '/lk' if 'username' not in session: return redirect('/login') news = NewsModel(db.get_connection()) news = news.get_my(session['user_id']) return render_template('all_news.html', title='Сохраненные новости', news=news, session=session)
def validate_user_email(form, field): if len(field.data) == 0: raise ValidationError('Поле не заполнено') user_model = UsersModel(db.get_connection()) if user_model.user_email_exists(field.data): raise ValidationError("Email уже занят")
def validate_user_name(form, field): if len(field.data) == 0: raise ValidationError('Поле не заполнено') user_model = UsersModel(db.get_connection()) if user_model.user_name_exists(field.data): raise ValidationError("Пользователь существует")
def delete_topic(topic_id): if 'username' not in session: return redirect('/login') nm = TopicModel(db.get_connection()) nm.delete(topic_id) return redirect("/topics")
def delete_news(news_id): if 'username' not in session: return redirect('/login') nm = NewsModel(db.get_connection()) nm.delete(news_id) return redirect("/index")
def delete_like(id): if 'username' not in session: return 'not ok' nm = NewsModel(db.get_connection()) nm.delete_like(session['user_id'], id) return 'ok'
def add_like(id): if 'username' not in session: return 'not ok' nm = NewsModel(db.get_connection()) nm.add_like(session['user_id'], id, data_return()) return 'ok'