Example #1
0
    def put(self, _id):
        data = Post.parser.parse_args()

        if len(data['title']) > Configuration.MAX_POST_TITLE_SIZE:
            return {
                'message':
                'A title\'s length is more than {}'.format(
                    Configuration.MAX_POST_TITLE_SIZE)
            }
        category = data['category_id']
        if category:
            if not CM.query.filter(CM.id == category).first():
                return {
                    'message':
                    'There is no such category: \'{}\''.format(category)
                }

        tag_names = data['tags']
        if tag_names:
            tags = get_tags(tag_names)
        else:
            tags = []

        comments_id = data['comments']
        if comments_id:
            comments = get_comments(comments_id)
        else:
            comments = []

        del data['tags']
        del data['category_id']
        del data['comments']

        post = PostModel.find_by_id(_id)
        if not post:
            post = PostModel(**data)
            if tags:
                post = get_item_tags(tags, post)
            if comments:
                post = get_item_comments(comments, post)
        else:
            post.title = data['title']
            post.body = data['body']
            post.user_id = data['user_id']
            post.is_published = data['is_published']
            post.category_id = category
            post.tags = []
            post.comments = []
            if tags:
                post = get_item_tags(tags, post)
            if comments:
                post = get_item_comments(comments, post)

        try:
            post.save_to_db()
        except SQLAlchemyError as e:
            err = str(e.__class__.__name__)
            return {'message': '{}'.format(err)}, 500
        return post.get_json(), 201
Example #2
0
 def put(self, name):
     data = Post.parser.parse_args()
     post = PostModel.find_by_title(name)
     if post is None:
         post = PostModel(data['title'], data['desc'])
     else:
         post.title = data['title']
         post.desc = data['desc']
     post.save_to_db()
     return post.json()
Example #3
0
    def put(self, post_id):
        data = Post.parser.parse_args()

        post = PostModel.find_by_id(post_id)

        if post is None:
            post = PostModel(post_id, data['title'])
        else:
            post.title = data['title']

        post.save_to_db()
        return post.json()