def post(self): args = self.parser.parse_args() if not current_user.is_authenticated: return JSON_abort(401, message="You should login first.") if not check_title(args["title"]): return JSON_abort(400, message="Forbidden symbols") editors = "" if args["editors"]: for nickname in args["editors"].split(", "): user = session.query(User).filter( User.nickname == nickname).first() if not user: return JSON_abort( 400, message=f"Nickname {nickname} not exist.") editors += str(user.id) + "," forum = Forum() forum.title = args["title"] forum.private = args["private"] forum.editors = editors forum.admin_id = current_user.id session.add(forum) session.commit() current_user.follow += str( session.query(Forum).order_by(Forum.id.desc()).first().id) + "," session.commit() return jsonify({'success': 'OK'})
def create_forum(): form = ForumForm() if form.validate_on_submit(): if not check_title(form.title.data): return render_template( 'create_forum.html', title='Создать форум', form=form, message=f"Название содержит недопустимые символы.") editors = "" if form.editors.data: for nickname in form.editors.data.split(", "): user = session.query(User).filter( User.nickname == nickname).first() if not user: return render_template( 'create_forum.html', title='Создать форум', form=form, message= f"Пользователя с ником {nickname} не существует.") editors += str(user.id) + "," forum = Forum() forum.title = form.title.data forum.private = form.private.data forum.editors = editors forum.admin_id = current_user.id session.add(forum) session.commit() current_user.follow += str( session.query(Forum).order_by(Forum.id.desc()).first().id) + "," session.commit() return redirect('/forums') return render_template('create_forum.html', title='Создать форум', form=form, message="")
def register(token): form = RegisterForm() try: email = serializer.loads(token, salt="email_confirmation", max_age=3600) except Exception: return render_template( 'register.html', title='Регистрация', form=form, message="Время вышло. Попробуйте зарегистрироваться еще раз.") if session.query(User).filter(User.email == email).first(): return render_template('register.html', title='Регистрация', form=form, message="Такая электронная почта уже есть", email=email) if form.validate_on_submit(): if form.password.data != form.repeat_password.data: return render_template('register.html', title='Регистрация', form=form, message="Пароли не совпадают", email=email) if not check_password(form.password.data): return render_template( 'register.html', title='Регистрация', form=form, message= "Пароль должен быть больше 7 символов, и состоять только из цифр, букв латинского алфавита и символов _.!#$%^&*-+=", email=email) if not check_nick(form.nickname.data): return render_template( 'register.html', title='Регистрация', form=form, message="Никнейм содержит недопустимые символы", email=email) if session.query(User).filter( User.nickname == form.nickname.data).first(): return render_template('register.html', title='Регистрация', form=form, message="Такой пользователь уже есть", email=email) user = User() user.nickname = form.nickname.data user.email = email user.set_password(form.password.data) session.add(user) session.commit() forum = Forum() forum.title = form.nickname.data forum.personal = True forum.admin_id = session.query(User).order_by( User.id.desc()).first().id forum.editors = f"{forum.admin_id}," session.add(forum) session.commit() user = session.query(User).filter(User.id == forum.admin_id).first() user.forum_id = session.query(Forum).order_by( Forum.id.desc()).first().id user.follow = f"{user.forum_id}," session.commit() return redirect('/login') return render_template('register.html', title='Регистрация', form=form, message="", email=email)