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
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
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
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}})