Esempio n. 1
0
def save_fb_post(post, page_id):
    post_obj = FBPost()
    post_obj.post_id = post["id"]
    post_obj.page_id = page_id
    post_obj.owner = post["from"]
    post_obj.created_time = post["created_time"]
    post_obj.updated_time = post["updated_time"]
    comments_list = post.pop("comments", None)
    post_obj.fields = post

    def save_obj(post):
        return FBPost.collection().save(post.serialize())

    dupe_obj = FBPost.collection().find_one({"post_id": str(post["id"])})

    if dupe_obj is None:
        post_obj._id = save_obj(post_obj)
    else:
        FBPost.collection().update({"post_id": post["id"]}, post_obj.serialize())
        post_obj = FBPost.unserialize(FBPost.collection().find_one({"post_id": post["id"]}))

    if comments_list is not None:
        for comment in comments_list["data"]:
            save_fb_post_comment(comment, post_obj.post_id)

    return post_obj
Esempio n. 2
0
def put_fb_post(page, fb_id, state, message, media_file=None):
    datetime_now = datetime.datetime.utcnow().isoformat("T")
    post = FBPost()
    post.page_id = page["id"]
    post.owner = {"id": fb_id}
    post.fields = {"message": message}
    post.created_time = datetime_now
    post.updated_time = datetime_now

    if state == CampaignState.PUBLISHED:
        api = GraphAPI(page["access_token"])
        if media_file is None:
            post.post_id = api.put_wall_post(message, profile_id=page["id"])["id"]
        else:
            data = api.put_photo(media_file, message=message)
            post.post_id = data["id"]
        url = "%s" % post.post_id
        post_data = api.request(url)
        post = save_fb_post(post_data, page["id"])
    else:
        post._id = FBPost.collection().insert(post.serialize())

    return post