def post(self, slug): form = forms.PostForm(self.request.arguments, locale_code=self.locale.code, status_choices=opts.STATUSES, text_type_choices=opts.get_allowed_text_types()) if form.validate(): if form.data['custom_slug']: slug = form.data['slug'] else: slug = text.get_slug(form.data['title'], stop_words=options.slug_stop_words) html_content, plain_content = text.get_html_and_plain( form.data['content'], form.data['text_type']) post = form.data post.update({ 'slug': slug, 'tags': helpers.remove_duplicates(form.data['tags']), 'html_content': html_content, 'plain_content': plain_content, }) self.db.posts.update({'slug': slug}, {'$set': post}) if post['status'] == 'published': self.redirect(self.reverse_url('post', slug)) else: self.redirect(self.reverse_url('home')) else: self.render('editpost.html', message=form.errors, form=form)
def get(self, slug): post = self.db.posts.find_one({'slug': slug}, {'_id': 0}) if not post: raise tornado.web.HTTPError(404) post['tags'] = ','.join(post['tags']) form = forms.PostForm(locale_code=self.locale.code, status_choices=opts.STATUSES, text_type_choices=opts.get_allowed_text_types(), **post) self.render("editpost.html", form=form)
def post(self): form = forms.PostForm(self.request.arguments, locale_code=self.locale.code, status_choices=opts.STATUSES, text_type_choices=opts.get_allowed_text_types()) if form.validate(): if form.data['custom_slug']: slug = form.data['slug'] else: slug = text.get_slug(form.data['title'], stop_words=options.slug_stop_words) if self.db.posts.find_one({'slug': slug}, {'_id': 1}) or \ slug.strip() == '': self.render('newpost.html', message=constants.POST_IS_ALREADY_REGISTERED, form=form) else: html_content, plain_content = text.get_html_and_plain( form.data['content'], form.data['text_type']) post = form.data post.update({ 'slug': slug, 'date': datetime.datetime.now(), 'tags': helpers.remove_duplicates(form.data['tags']), 'html_content': html_content, 'plain_content': plain_content, 'author': self.current_user['full_name'], 'email': self.current_user['email'], 'votes': 0, 'views': 0 }) self.db.posts.insert(post) if post['status'] == 'published': self.redirect(self.reverse_url('post', post['slug'])) else: self.redirect(self.reverse_url('home')) else: self.render('newpost.html', message=form.errors, form=form)
def get(self): self.render('newpost.html', form=forms.PostForm( locale_code=self.locale.code, status_choices=opts.STATUSES, text_type_choices=opts.get_allowed_text_types()))