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