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 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}})
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
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}})
def save_obj(post): return FBPost.collection().save(post.serialize())
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