Example #1
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
Example #2
0
def update_page_attr(
    page_id,
    access_token,
    profile_photo=None,
    cover_photo=None,
    about=None,
    description=None,
    website=None,
    phone=None,
    hours=None,
):
    url = page_id
    api = GraphAPI(access_token)
    dict = {}
    if about is not None:
        dict["about"] = about
    if description is not None:
        dict["description"] = description
    if website is not None:
        dict["website"] = website
    if phone is not None:
        dict["phone"] = phone
    if hours is not None:
        pass

    data = api.request(url, post_args=dict)
Example #3
0
def update_fb_event(event_id, page, state, title, description, start_time, end_time):
    datetime_now = datetime.datetime.utcnow().isoformat("T")
    event = FBEvent.collection().find_one({"event_id": event_id})
    event["fields"]["name"] = title
    event["fields"]["description"] = description
    event["updated_time"] = datetime_now

    if start_time is not None:
        event["fields"]["start_time"] = isoformat(start_time)
    if end_time is not None:
        event["fields"]["end_time"] = isoformat(end_time)

    if state == CampaignState.PUBLISHED:
        api = GraphAPI(page["access_token"])
        url = event_id

        dict = {
            "name": title,
            "start_time": isoformat(start_time) + "Z",
            "description": strip_tags(replace_newline(description)),
        }

        if end_time is not None:
            dict["end_time"] = isoformat(end_time) + "Z"

        api.request(url, post_args=dict)
        event_data = api.request(event_id)
        event = save_fb_event(event_data, page["id"])
    else:
        FBEvent.collection().update({"event_id": event_id}, {"$set": {event}})
        event = FBEvent.unserialize(FBEvent.collection().find_one({"event_id": event_id}))

    return event
Example #4
0
def put_fb_event(page, fb_id, state, title, description, start_time, end_time, media_file=None):
    datetime_now = datetime.datetime.utcnow().isoformat("T")
    event = FBEvent()
    event.page_id = page["id"]
    event.owner = {"id": fb_id}
    event.fields = {"name": title, "description": description}
    event.created_time = datetime_now
    event.updated_time = datetime_now

    if start_time is not None:
        event.fields["start_time"] = isoformat(start_time)
    if end_time is not None:
        event.fields["end_time"] = isoformat(end_time)

    if state == CampaignState.PUBLISHED:
        api = GraphAPI(page["access_token"])
        url = "%s/%s" % (page["id"], "events")

        # todo : note the start and end UTC time formats, currently hard-coded +0000
        dict = {
            "name": title,
            "start_time": isoformat(start_time) + "Z",
            "description": strip_tags(replace_newline(description)),
        }

        if end_time is not None:
            dict["end_time"] = isoformat(end_time) + "Z"

        if media_file:
            dict["source"] = media_file
            dict["access_token"] = page["access_token"]
            event.event_id = api.put_event(dict)["id"]
        else:
            event.event_id = api.request(url, post_args=dict)["id"]

        event_data = api.request(event.event_id)
        print "event data"
        print event_data
        event = save_fb_event(event_data, page["id"])
    else:
        event._id = FBEvent.collection().insert(event.serialize())

    return event
Example #5
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