コード例 #1
0
ファイル: handlers.py プロジェクト: Anks/copy-edit
    def post(self):
        user = users.get_current_user()
        
        title = self.request.get('title')
        body = db.Text(self.request.get('body'))

        post_id = self.request.get('post_id')

        if post_id:
            post = Post.get_by_id(int(post_id))
            if post.author != user:
                self.generate('error.html', {
                    'error_message': 'You don’t have permission to edit that post',
                    'page_title': 'Error'})
                return
            post.title = title
            post.body = body
        else:
            post = Post(title=title, body=body, author=user)

        post.html = Markdown(post.body.encode('utf-8')).decode('utf-8')
        post.put()

        self.redirect('/home')
コード例 #2
0
ファイル: api.py プロジェクト: messense/YaBlog
    def post(self):
        """
        Create new post
        """
        json = {}
        if not self.current_user:
            json = {
                'error': 1,
                'msg': self._('Access denied')
            }
            self.write(json)
            return
        type = self.get_argument('type', Post.TYPE_POST)
        title = self.get_argument('title', None)
        content = self.get_argument('content', '')
        slug = self.get_argument('slug', None)
        format = self.get_argument('format', 'standard')
        excerpt = self.get_argument('excerpt', '')
        thumbnail = self.get_argument('thumbnail', '')
        category_id = self.get_argument('category', None)
        tags = self.get_argument('tags', '')
        date = self.get_argument('date', None)
        comment_open = bool(int(self.get_argument('comment_open', '1')))
        if type not in [Post.TYPE_POST, Post.TYPE_PAGE]:
            type = Post.TYPE_POST
        if format not in ['standard', 'aside', 'gallery', 'link', 'image', 'quote', 'status', 'video', 'audio', 'chat']:
            format = 'standard'
        # valid arguments
        if not slug:
            json = {
                'error': 1,
                'msg': self._('Slug field can not be empty')
            }
            self.write(json)
            return
        elif self.get_post_by_slug(slug):
            json = {
                'error': 1,
                'msg': self._('Slug already exists')
            }
            self.write(json)
            return
        if type == Post.TYPE_POST and not category_id:
            json = {
                'error': 1,
                'msg': self._('Category field can not be empty')
            }
            self.write(json)
            return
        if type == Post.TYPE_POST:
            category = self.get_category_by_id(category_id)
            if not category:
                json = {
                    'error': 1,
                    'msg': self._('No such category')
                }
                self.write(json)
                return
        if date:
            if validators.date(date):
                date = datetime.strptime(date, '%Y-%m-%d')
            elif validators.datetime(date):
                date = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
            else:
                date = datetime.utcnow()
        else:
            date = datetime.utcnow()
        # now create post
        post = Post()
        post.type = type
        post.created = date
        post.title = title
        post.slug = slug
        post.content = content
        post.html = wrap_content(content)
        post.format = format
        post.excerpt = excerpt
        post.thumbnail = thumbnail
        post.comment_open = comment_open
        if type == Post.TYPE_POST:
            post.category_id = category.id
        else:
            post.category_id = 1  # default category
        # update category post count
        if type == Post.TYPE_POST:
            category.post_count += 1
            self.db.add(category)
        # commit
        self.db.add(post)
        self.db.commit()
        # create tags
        if type == Post.TYPE_POST and tags:
            post.tag_ids = self.create_tags(tags.split(','), post.id)
            self.db.add(post)
            self.db.commit()
        # delete cache
        keys = ['PostList:1', 'CategoryPostList:%s:1' %
                category.id, 'SystemStatus', 'ArchiveHTML', 'TagCloud']
        self.cache.delete_multi(keys)

        json = {
            'error': 0,
            'msg': self._('Successfully created'),
            'post': {
                'post': {
                'id': post.id,
                'title': post.title,
                'slug': post.slug,
                'format': post.format,
                'excerpt': post.excerpt,
                'thumbnail': post.thumbnail,
                'created': post.created.strftime('%Y-%m-%d %H:%M'),
                'updated': post.updated.strftime('%Y-%n-%d %H:%M'),
                'views': post.views,
                'permalink': post.permalink
                }
            }
        }
        if type == Post.TYPE_POST:
            json['category'] = {
                'id': category.id,
                'title': category.title,
                'slug': category.slug,
                'description': category.description,
                'permalink': category.permalink,
                'post_count': category.post_count
            }
        self.write(json)