Ejemplo n.º 1
0
def add_news():
    form = NewsForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        news = Posts()
        news.title = form.title.data
        news.content = form.content.data
        news.is_private = form.is_private.data
        current_user.posts.append(news)
        session.merge(current_user)
        session.commit()
        return redirect('/')
    return render_template('news.html', title='Добавление новости', form=form)
Ejemplo n.º 2
0
def add_post():
    # Пост может быть добавлен только администратором
    if current_user.role == 'Admin':
        form = PostsForm()
        if form.validate_on_submit():
            db_sess = db_session.create_session()
            post = Posts()
            post.type = form.type.data
            # Заголовок поста может включать в себя не более 50 символов
            if len(form.title.data) > 50:
                return render_template('addPost.html', title='Adding a post',
                                       form=form,
                                       message="This title is too big, please, enter up to 50 characters")
            post.title = form.title.data
            # Описание поста может включать в себя не более 300 символов
            if len(form.content.data) > 300:
                return render_template('addPost.html', title='Adding a post',
                                       form=form,
                                       message="This content is too big, please, enter up to 300 characters")
            post.content = form.content.data
            # Как это уже было с аватарами, изображение при его наличии сохраняется в папку
            # Если изображение не было загружено - оставляем изображение по умолчанию
            # Путь изображения: static/img/Posts/{Имя картинки поста}
            # Имя картинки имеет вид Post {текущая дата} {id текущего пользователя}
            # Картинка обрабатывается также, как и аватар, имеет аналогичные проверки на подлинность
            if not form.image.data:
                post.image = 'Empty.png'
            else:
                image = form.image.data
                if image.filename.split('.')[-1] not in ['png', 'jpeg', 'jpg', 'ico', 'gif', 'bmp']:
                    return render_template('addPost.html', title='Adding a post',
                                           form=form,
                                           message="This file is not an image")
                filename = 'Post ' + str(datetime.datetime.now()).replace(":", "-") + f' {current_user.id}' + '.' + \
                           image.filename.split('.')[-1]
                image.save("static/img/Posts/" + filename)
                post.image = filename
            post.is_private = form.is_private.data
            current_user.posts.append(post)
            # Заполняем все поля и сохраняем пост в базу данных
            db_sess.merge(current_user)
            db_sess.commit()
            return redirect('/')
        return render_template('addPost.html', title='Adding a post',
                               form=form)
    else:
        abort(404)