예제 #1
0
 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'})
예제 #2
0
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="")
예제 #3
0
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)