def create_post(): form = PostForm() db_sess = db_session.create_session() categories = db_sess.query(Category).all() # заполнение комбобокса категориями form.category.choices = [(c.id, c.name) for c in categories] if form.validate_on_submit(): post = Post() post.title = form.title.data post.content = form.content.data post.author_id = current_user.id path = 'static/img/thumbnails' filename = f'post_{uuid.uuid4().hex}.jpg' if form.icon.data: # если прикреплённый файл является изображением if form.icon.data.content_type.startswith('image'): image: Image.Image = Image.open(form.icon.data) image.thumbnail((350, 350)) image = image.convert('RGB') image.save(os.path.join(path, filename)) post.icon = filename else: return render_template('add_edit_post.html', title='Добавление поста', message='Надо прекреплять изображение', form=form) categories = db_sess.query(Category).filter( Category.id.in_(form.category.data)).all() post.add_categories(categories) db_sess.add(post) db_sess.commit() return redirect('/') return render_template('add_edit_post.html', title='Добавление поста', form=form, categories=categories)
def add_post(): if not current_user.is_authenticated: return redirect('/login') form = AddPostForm() content = form.content.data if request.method == 'POST' and content: session = db_session.create_session() post = Post(user=session.query(User).get(current_user.id)) post.content = content hash_tags = extract_hash_tags(content) for hash_tag in hash_tags: tag = Tag() tag.tag = hash_tag tag.post_id = post.id tag.post = post session.add(tag) session.add(post) # TODO: TO USE API IN FUTURE session.commit() return render_template('add_post.html', form=form)
def add_post(): """ Обработчик страницы создания поста """ form = PostForm() if form.validate_on_submit(): session = db_session.create_session() post = Post() post.title = form.title.data post.content = form.content.data post.string_created_date = str(datetime.datetime.now())[0:16] current_user.posts.append(post) session.merge(current_user) session.commit() if bool(form.attachment.data): session = db_session.create_session() post = session.query(Post).order_by(Post.id.desc()).first() f = form.attachment.data type = f.filename.split('.')[-1] filename = f'post_attachment_{post.id}.{type}' path = os.path.join('static', 'attachments', filename) f.save(path) post.attachment = path session.commit() post_id = session.query(Post).order_by(Post.id.desc()).first().id # Параллельным процессом запускаем рассыку новости всем зарегистрированным пользователям thread.start_new_thread( os.system, (f'python send_news_emails.pyw --id {post_id}', )) return redirect('/blog') return render_template('post.html', title='Новый пост', form=form, css=url_for('static', filename='css/post_style.css'))