Пример #1
0
def post_get_content(id):
    """ 
        Retrieves/sets post content
        Returns post data in its native XHTML format, or 404 if post not found

        GET: Retrieve the content
        PUT: Updates content
    """
    from ghostwriter.Post import Post, PostManager
    pm = PostManager()
    post = pm.getPostbyID(id)

    if post is None:
        return '', 404

    if request.method == 'GET':
        return post.getContent()

    if request.method == 'PUT':
        if not current_user.is_authenticated:
            return login_manager.unauthorized()

        post.setContent(request.form['content'])
        pm.updatePostContent(post)
        return '', 200
Пример #2
0
def posts_search(userid=None):
    """
        Search for posts, by date or title
    """
    vsearch = {}
    title = request.args.get('title')
    if not (title is None):
        vsearch['title'] = title

    cdate = request.args.get('cdate')
    if not (cdate is None):
        vsearch['creation_date'] = cdate

    from ghostwriter.Post import Post, PostManager
    pm = PostManager()

    posts = pm.filterPosts(**vsearch)
    if posts is None:
        return jsonify({'error', 'No filter specified'
                        }), 404  # TODO: think of a better error code

    if len(posts) <= 0:
        return jsonify({'error': 'No posts found'}), 404

    return jsonify(post_array_to_dictionary(posts))
Пример #3
0
    def create_post(self, title, body, author, cdate=None):
        from ghostwriter.Post import Post, PostManager

        po = Post(author.uid, title, cdate)
        po.setContent(body)

        pm = PostManager()
        pm.addPost(po)
Пример #4
0
def posts_get():
    """
        Gets all posts

        Returns a JSON with their information, without content data
    """
    from ghostwriter.Post import Post, PostManager
    pm = PostManager()
    posts = pm.getAllPosts()
    if len(posts) <= 0:
        return jsonify({'error': 'No posts found'}), 404

    return jsonify(post_array_to_dictionary(posts))
Пример #5
0
def posts_author_search(userid):
    """
        Search for posts, by author
    """
    from ghostwriter.Post import Post, PostManager
    pm = PostManager()

    posts = pm.filterPosts(author_id=userid)

    if len(posts) <= 0:
        return jsonify({'error': 'No posts found'}), 404

    return jsonify(post_array_to_dictionary(posts))
Пример #6
0
    def test_delete_blog_post(self):
        self.authenticate()
        from ghostwriter.Post import Post, PostManager
        from flask import json

        p = Post(1, 'Get Content Test')
        p.setContent('Post content')
        pm = PostManager()
        pm.addPost(p)

        res = self.app.delete('/api/post/' + str(p.ID) + '/',
                              follow_redirects=True)
        self.assertEqual(res.status, '200 OK')
        res = self.app.delete('/api/post/' + str(p.ID) + '/',
                              follow_redirects=True)
        self.assertEqual(res.status, '404 NOT FOUND')
Пример #7
0
    def test_get_content(self):
        self.authenticate()
        from ghostwriter.Post import Post, PostManager
        from flask import json

        p = Post(1, 'Get Content Test')
        p.setContent('Post content')
        pm = PostManager()
        pm.addPost(p)

        res = self.app.get('/api/post/' + str(p.ID) + '/content',
                           follow_redirects=True)
        self.assertEqual(res.status, '200 OK')
        post_data = res.data
        self.assertEqual(b'Post content', post_data)

        self.deauthenticate()
Пример #8
0
def post_create():
    """
        Creates post
        Returns post metadata, with ID
    """
    from ghostwriter.Post import Post, PostManager
    pm = PostManager()

    post = Post(current_user.uid, request.form['title'])
    pm.addPost(post)
    jdata = {
        'id': post.ID,
        'title': post.title,
        'creation_date': post.creation_date.isoformat(),
        'summary': post.getSummary(),
        'owner': {
            'id': post.getOwner().uid,
            'name': post.getOwner().name
        }
    }
    return jsonify(jdata), 200
Пример #9
0
    def test_set_and_get_metadata(self):
        self.authenticate()
        from ghostwriter.Post import Post, PostManager
        from flask import json

        p = Post(1, 'Get Meta Test')
        p.setContent('Post content')
        pm = PostManager()
        pm.addPost(p)

        res = self.app.put('/api/post/' + str(p.ID) + '/',
                           data={'title': 'New Meta Test'},
                           follow_redirects=True)
        self.assertEqual(res.status, '200 OK')

        res = self.app.get('/api/post/' + str(p.ID) + '/',
                           follow_redirects=True)
        self.assertEqual(res.status, '200 OK')
        post_data = json.loads(res.data)
        self.assertEqual('New Meta Test', post_data['title'])
        self.deauthenticate()
Пример #10
0
def post_get(id):
    """
        Manage the post
        If post not found, give a 404 Not Found error

        GET: Retrieve post metadata, in JSON format
        PUT: Update any field of post metadata. Return it in JSON format
        DELETE: Delete the post
    """
    from ghostwriter.Post import Post, PostManager
    pm = PostManager()
    post = pm.getPostbyID(id)

    if post is None:
        return jsonify({'error': 'The post could not be found'}), 404

    if request.method == 'GET':
        jdata = {
            'id': post.ID,
            'title': post.title,
            'creation_date': post.creation_date.isoformat(),
            'summary': post.getSummary(),
            'owner': {
                'id': post.getOwner().uid,
                'name': post.getOwner().name
            }
        }
        return jsonify(jdata), 200
    elif request.method == 'DELETE':
        #TODO: check parmissions
        if current_user.uid != post.getOwner().uid:
            return jsonify({'error': 'Not authorized to delete the pos'}), 401

        pm.removePost(post)
        return "", 200
    elif request.method == 'PUT':
        title = request.form['title']
        post.title = title
        pm.updatePostMetadata(post)
        jdata = {
            'id': post.ID,
            'title': post.title,
            'creation_date': post.creation_date.isoformat(),
            'summary': post.getSummary(),
            'owner': {
                'id': post.getOwner().uid,
                'name': post.getOwner().name
            }
        }
        return jsonify(jdata), 200
    else:
        return "", 405
Пример #11
0
def posts_author_search_filter(userid):
    """
        Search for posts, by author
    """
    vsearch = {}
    title = request.args.get('title')
    if not (title is None):
        vsearch['title'] = title

    cdate = request.args.get('cdate')
    if not (cdate is None):
        vsearch['creation_date'] = cdate

    vsearch['author_id'] = userid

    from ghostwriter.Post import Post, PostManager
    pm = PostManager()

    posts = pm.filterPosts(**vsearch)

    if len(posts) <= 0:
        return jsonify({'error': 'No posts found'}), 404

    return jsonify(post_array_to_dictionary(posts))