# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 ############################################################################### # ScribeEngine - Open Source Blog Software # # --------------------------------------------------------------------------- # # Copyright (c) 2010 Raoul Snyman # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # # Software Foundation; version 2 of the License. # # # # This program is distributed in the hope that it will be useful, but WITHOUT # # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # # more details. # # # # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### import logging from datetime import datetime from scribeengine.lib.base import * from scribeengine.lib import utils from scribeengine.model import Post, Tag from scribeengine.model.meta import Session log = logging.getLogger(__name__) class PostController(BaseController): def __before__(self): BaseController.__before__(self) self._add_javascript(u'jquery.tag.editor.js') self._add_javascript(u'ScribeEngine.Post.js') def index(self): h.redirect_to('/') @authenticate(u'Add Posts') def new(self): c.page_title = 'New Post' return render(u'/post/new.mako') @authenticate(u'Edit My Posts') def edit(self, id=None): if id is None: h.redirect_to('/post/new') c.post = Session.query(Post).get(id) c.page_title = 'Edit Post: %s' % c.post.title return render(u'/post/edit.mako') @authenticate(u'Edit My Posts') def edit_POST(self, id=None): url = utils.generate_url(c.form_values[u'title']) if id is None: post = Post() post.user = c.current_user else: post = Session.query(Post).get(id) post.modified = datetime.now() post.title = c.form_values[u'title'] post.body = c.form_values[u'body'] post.status = u'published' post.url = url tags = c.form_values[u'tags'] tag_list = [tag_name.strip() for tag_name in tags.split(u',')] tag_urls = [utils.generate_url(tag_name) for tag_name in tags.split(u',')] db_tags = Session.query(Tag).filter(Tag.url.in_(tag_urls)).all() post.tags = [] for tag in db_tags: tag_list.remove(tag.name) post.tags.append(tag) for tag in tag_list: post.tags.append(Tag(name=tag, url=utils.generate_url(tag))) Session.add(post) Session.commit() h.redirect_to(str('/archive/%s/%s' % (post.created.strftime('%Y/%m/%d'), post.url)))