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)
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)