Example #1
0
def page_realtime_update(entry):
    print entry
    for e in entry:
        if FBPage.collection().find_one({"page_id": e["id"]}) is None:
            continue
        for change in e["changes"]:
            if change["field"] == "feed" and change["value"]["item"] == "comment" and change["value"]["verb"] == "add":
                comment_dict = get_comment_from_fb(change["value"]["comment_id"], e["id"])
                post_id = "%s_%s" % (e["id"], change["value"]["parent_id"])
                save_fb_post_comment(comment_dict, post_id)
                update_post_time(post_id, comment_dict["created_time"])
            elif change["field"] == "feed" and change["value"]["item"] == "post" and change["value"]["verb"] == "add":
                post_dict = get_post_from_fb(change["value"]["post_id"], e["id"])
                save_fb_post(post_dict, e["id"])
Example #2
0
 def save_obj(page):
     return FBPage.collection().save(page.serialize())
Example #3
0
def put_fb_page(fb_user_obj, brand_name, page_obj):
    url = "%s" % (page_obj["id"])
    page_data = GraphAPI(page_obj["access_token"]).request(url)

    fb_page = FBPage()
    fb_page.page_id = page_data["id"]
    fb_page.name = page_data["name"]
    page_data.pop("id", None)
    page_data.pop("name", None)
    fb_page.fields = page_data

    def save_obj(page):
        return FBPage.collection().save(page.serialize())

    dupe_obj = FBPage.collection().find_one({"page_id": page_obj["id"]})
    if dupe_obj is None:
        fb_page._id = save_obj(fb_page)
    else:
        FBPage.collection().update({"page_id": page_obj["id"]}, fb_page.serialize())
        fb_page = FBPage.unserialize(FBPage.collection().find_one({"page_id": page_obj["id"]}))

    update_brand_mapping(fb_user_obj.u_id, brand_name, "facebook", page_obj["id"], page_obj["access_token"])

    t = Thread(target=load_fb_page_to_db, args=(page_obj["id"], page_obj["access_token"]))
    t.setDaemon(False)
    t.start()

    return fb_page