Beispiel #1
0
def del_campaign():
    """
    (DELETE: /campaign)
    """
    from campaigns.campaign.model import Campaign
    from unifide_backend.action.social.facebook.model import FBPost, FBEvent
    from unifide_backend.action.social.twitter.model import TWTweet
    from unifide_backend.action.social.foursquare.model import FSQPageUpdate
    from unifide_backend.action.mapping.action import del_mapping, get_brand_mapping, get_mapping
    from unifide_backend.action.social.facebook.action import del_fb_post, del_fb_event
    from unifide_backend.action.social.twitter.action import del_tweet
    from unifide_backend.action.social.foursquare.action import del_fsq_update

    user_id = request.args.get("user_id")
    brand_name = request.args.get("brand_name")
    campaigns = request.args.get("campaign_list")

    brand_obj = get_brand_mapping(user_id, brand_name)

    campaign_list = campaigns.split(',')
    for c in campaign_list:
        mapping_obj = get_mapping(c)

        # delete facebook post / event
        if mapping_obj.facebook is not None:
            id = mapping_obj.facebook
            post = FBPost.collection().find_one({"_id": coerce_bson_id(id)})
            try:
                if post is not None:
                    del_fb_post(post["post_id"], id, brand_obj.facebook["access_token"])
                event = FBEvent.collection().find_one({"_id": coerce_bson_id(id)})
                if event is not None:
                    del_fb_event(event["event_id"], id, brand_obj.facebook["access_token"])
            except Exception, err:
                print traceback.format_exc()
                print id

        # delete twitter status
        if mapping_obj.twitter is not None:
            id = mapping_obj.twitter
            tweet = TWTweet.collection().find_one({"_id": coerce_bson_id(id)})
            try:
                del_tweet(tweet["fields"]["id_str"] if tweet["fields"] is not None else None, id, brand_obj.twitter["access_token"]["key"], brand_obj.twitter["access_token"]["secret"])
            except Exception, err:
                print traceback.format_exc()
                print id
Beispiel #2
0
def del_fb_post(post_id, obj_id, access_token):
    if post_id is not None:
        data = GraphAPI(access_token).delete_object(post_id)
        print data
    FBPost.collection().update({"_id": coerce_bson_id(obj_id)}, {"$set": {"is_deleted": 1}})
Beispiel #3
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
Beispiel #4
0
def update_post_time(post_id, updated_time):
    print "post_id: " + str(post_id)
    print "updated_time: " + str(updated_time)
    FBPost.collection().update({"post_id": post_id}, {"$set": {"updated_time": updated_time}})
Beispiel #5
0
 def save_obj(post):
     return FBPost.collection().save(post.serialize())
Beispiel #6
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