Exemple #1
0
def new_post():
    form = NewPostForm()
    if form.validate_on_submit():
        f = form.audio_field.data
        if f.filename[-3:] != 'mp3':
            return render_template('new_post.html',
                                   form=form,
                                   error_message='Only mp3 files supports')
        post = Posts()
        post.title = form.title.data
        sess = db_session.create_session()
        posts = sess.query(Posts).all()
        try:
            num = posts[-1].audio_file
        except IndexError:
            num = 0
        num = str(int(num) + 1)
        post.audio_file = num
        post.author = current_user.id
        post.creation_date = datetime.datetime.now()

        f.save(
            os.path.join('C:\\Projects\\AudioNetwork', 'static', 'audio',
                         'mp3', num + '.mp3'))

        sess.add(post)
        sess.commit()

    return render_template('new_post.html', form=form)
Exemple #2
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)
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)