示例#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
示例#2
0
def put_tweet(text, tw_id, key, secret, state, media_file):
    datetime_now = datetime.datetime.utcnow().isoformat('T')
    tw = TWTweet()
    tw.tw_id = tw_id
    tw.text = text
    tw.created_at = datetime_now

    if state == CampaignState.PUBLISHED:
        if media_file is None:
            api = get_api(key, secret)[0]
            data = api.update_status(text)
            tw = save_tweet(status=data, tw_id=tw_id)
        else:
            api = Twython(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, key, secret)
            data = api.update_status_with_media(media=open(media_file, 'rb'), status=text)
            tw = save_tweet(status_json=data, tw_id=tw_id)
    else:
        tw._id = TWTweet.collection().insert(tw.serialize())

    return tw
示例#3
0
def save_tweet(status=None, status_json=None, tw_id=None):
    if status is not None:
        status_dict = json.loads(status.json)
    else:
        status_dict = status_json
    tweet_obj = TWTweet()
    tweet_obj.tweet_id = status_dict["id_str"]
    tweet_obj.tw_id = tw_id
    tweet_obj.user = status_dict["user"]
    tweet_obj.text = status_dict["text"]
    tweet_obj.fields = status_dict
    tweet_obj.created_at = datetime.datetime.utcnow()

    if TWTweet.collection().find_one({"tweet_id": tweet_obj.tweet_id, "tw_id": tweet_obj.tw_id}) is None:
        tweet_obj._id = TWTweet.collection().insert(tweet_obj.serialize())
    else:
        TWTweet.collection().update({"tweet_id": tweet_obj.tweet_id, "tw_id": tweet_obj.tw_id}, tweet_obj.serialize())
        tweet_obj = TWTweet.unserialize(TWTweet.collection().find_one({"tweet_id": tweet_obj.tweet_id, "tw_id": tweet_obj.tw_id}))

    return tweet_obj
示例#4
0
def del_tweet(id_str, obj_id, key, secret):
    if id_str is not None:
        api = get_api(key, secret)[0]
        data = api.destroy_status(id=long(id_str))
        print data
    TWTweet.collection().update({"_id": coerce_bson_id(obj_id)}, {"$set": {"is_deleted": 1}})