def update_posts()

in bedrock/wordpress/models.py [0:0]


    def update_posts(self, blog_slug, posts):
        update_count = 0
        del_count = 0
        post_ids = []
        posts_to_update = []
        for post in posts:
            modified = make_datetime(post["modified_gmt"])
            post_ids.append(post["id"])
            try:
                obj = self.get(wp_id=post["id"], wp_blog_slug=blog_slug)
            except BlogPost.DoesNotExist:
                posts_to_update.append((None, post))
            else:
                if obj.modified != modified:
                    posts_to_update.append((obj, post))

        if not posts_to_update:
            return 0, 0

        complete_posts_data(blog_slug, posts_to_update)
        for obj, post in posts_to_update:
            post = post_to_dict(blog_slug, post)
            if not post:
                continue

            try:
                if obj:
                    for key, value in post.items():
                        setattr(obj, key, value)
                    obj.save()
                else:
                    self.create(**post)
            except DatabaseError:
                capture_exception()
                raise

            update_count += 1

        # clean up after changes
        if update_count:
            expired_posts = self.filter_by_blogs(blog_slug).exclude(wp_id__in=post_ids)
            del_count = expired_posts.count()
            expired_posts.delete()

        return update_count, del_count