Example #1
0
def confirmed_unkeen(aid, unkeener_id):
    try:
        activity = Activity.objects.get(id = aid)
    except Activity.DoesNotExist:
        return
    
    #Just make sure
    if unkeener_id in activity.get_confirmed_keener_ids():
        return
    
    suggester = User.objects.get(_id = activity.suggester_id)
    unkeener = User.objects.get(_id = unkeener_id)
    
    store_message = [
        '@' + unkeener.first_name + ' ' + unkeener.last_name,
        ' isnt keen anymore'
    ]
    pic_url = get_fb_profile_pic_link(unkeener._id)
    store_data = {
        'aid'    : activity.id,
        'pic' : pic_url 
    }
    
    badge_num = add_notification(suggester._id, settings.UNKEEN_FROM_CONFIRMED, store_message, pic_url, store_data)
    
    data =  {
        'type'      : settings.UNKEEN_FROM_CONFIRMED,
        'ticker'    : 'Keen',
        'msg'   : 'Sorry dude, ' + unkeener.first_name + ' ' + unkeener.last_name + ' isnt keen anymore',
    }
    send(data, [suggester.device_gcm_token], [suggester.device_pns_token], [badge_num])
Example #2
0
def new_comment(aid, cid):
    try:
        activity = Activity.objects.get(id = aid)
    except Activity.DoesNotExist:
        return
    
    comment = activity.get_comment(cid)
    if not comment:
        return
    
    user_posting_id = comment.user_id
    followers = [follower for follower in activity.get_followers() if follower != user_posting_id]
    add_comment_nofification(followers, aid)
    pic_url = get_fb_profile_pic_link(user_posting_id)
    store_data = {
        'uid': user_posting_id,
        'aid':aid,
        'pic': pic_url   
    }
    
    store_message = [
        '@' + comment.first_name + ' ' +comment.last_name,
        ' posted a new comment'    
    ]
    if activity.keyword != Activity.DEFAULT_KEYWORD:
        store_message = [
            '@' + comment.first_name + ' ' +comment.last_name,
            ' posted a new comment on ',
            '#' + activity.keyword    
        ]
    
    data =  {
        'title'     : 'Comment on #' + activity.keyword if activity.keyword != Activity.DEFAULT_KEYWORD else 'New comment',
        'type'      : settings.NOTIF_ACTIVITY_COMMENT,
        'ticker'    : 'New comment',
        'aid'       : activity.id,
        'uid'       : user_posting_id,
        'msg'   : comment.text
    }
    
    users = User.objects.filter(_id__in = followers)
    android_ids = []
    apple_ids = []
    badge_nums = []
    for user in users:
        badge_num = add_notification(user._id, settings.NOTIF_ACTIVITY_COMMENT, store_message, pic_url, store_data)
        android_ids.append(user.device_gcm_token)
        apple_ids.append(user.device_pns_token)
        badge_nums.append(badge_num)
    i_data = {
        'msg'  : comment.first_name + ' added a comment on #' + activity.keyword,
        'aid'  : activity.id,
        'cid'  : cid,
        'type' : settings.NOTIF_ACTIVITY_COMMENT,
    }
    send(data, android_ids, apple_ids, badge_nums, i_data=i_data)
Example #3
0
def cancel_activity(aid):
    try:
        activity = Activity.objects.get(id = aid)
    except Activity.DoesNotExist:
        return

    if not activity.is_cancelled():
        return
    
    #Send notification to all keeners
    users = User.objects.filter(_id__in = [keen.user_id for keen in activity.keens if keen.user_id != activity.suggester_id])
    suggester = User.objects.get(_id = activity.suggester_id)
    
    message_store = [
        'Activity',
        ' with ',
        '@' + suggester.first_name + ' ' + suggester.last_name,
        ' is cancelled'
    ]

    message = activity.keyword+' with '+suggester.first_name + ' ' + suggester.last_name + ' is cancelled'
    if activity.keyword != Activity.DEFAULT_KEYWORD:
        message = '#' + message
        message_store[0] = '#' + activity.keyword
    
    pic_url = get_fb_profile_pic_link(suggester._id)
    store_data = {
        'aid' : aid,
        'uid' : suggester._id              
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    for user in users:
        android_ids.append(user.device_gcm_token)
        apple_ids.append(user.device_pns_token)
        badge_num = add_notification(user._id, settings.NOTIF_ACTIVITY_CANCEL, message_store, pic_url, store_data)
        badge_nums.append(badge_num)
    
    data =  {
        'title'     : '#' + activity.keyword + ' with ' + suggester.first_name + ' ' + suggester.last_name,
        'type'      : settings.NOTIF_ACTIVITY_CANCEL,
        'ticker'    : '#' + activity.keyword + ' cancelled',
        'aid'       : aid,
        'msg'   : 'Cancelled',
    }
    if activity.keyword.lower() != settings.ACTIVITY_TEST_KEYWORD:
        send(data, android_ids, apple_ids, badge_nums)
Example #4
0
def update_activity_details(aid):
    logger.info('update_activity_details aid:%s' % str(aid))
    activity = Activity.get_by_id(aid)
    suggester_id = activity['suggester_id']
    keens = activity['keens']
    suggester = User.get_by_id(suggester_id)
    keeners = User.get_by_ids_type(ids = [keen['user_id'] for keen in keens], extra_fields=['device_gcm_token', 'device_pns_token'])
    message_store = [
        '@' + suggester['first_name'] + ' ' + suggester['last_name'],
        ' has chucked a curve ball at ',
        activity['keyword']
    ]
    logger.info('update_activity_details aid:%s message:%s' % (str(aid), ''.join(message_store)))
    title = 'Details of #' + activity.get('keyword') + ' with ' + suggester['first_name'] + ' ' + suggester['last_name']
    message = 'was updated :'
    if activity.get('when'):
        message = message + ' ' + activity.get('when').strftime('%I:%M%p %b %d')
    message = message + ' ' + activity.get('where')
    pic_url = get_fb_profile_pic_link(suggester_id)
    store_data = {
        'uid'   : suggester_id,
        'aid'   : str(aid),
        'pic': pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    for user in keeners:
        #Don't send to suggester
        if user['_id'] == suggester_id:
            continue
        android_ids.append(user.get('device_gcm_token'))
        apple_ids.append(user.get('device_pns_token'))
        badge_num = add_notification(user['_id'], settings.NOTIF_ACTIVITY_UPDATE, message_store, pic_url, store_data)
        badge_nums.append(badge_num)
    
    data =  {
        'type'     : settings.NOTIF_ACTIVITY_UPDATE,
        'title'    : title,
        'msg'  : message,
        'ticker'   : '#' + activity.get('keyword') + ' details updated',
        'aid'      : aid,
    }
    logger.info('update_activity_details aid:%s keeners:%s' % (str(aid), str(keeners)))
    if activity.get('keyword', '').lower() != settings.ACTIVITY_TEST_KEYWORD:
        send(data, android_ids, apple_ids, badge_nums)
Example #5
0
def new_user_interests(uid, new_interests):
    logger.info('Starting new user interests for %s and %s' % (str(uid), str(new_interests)))
    user = User.objects.get(_id = uid)
    friend_store = user.get_friend_store()
    friends = User.objects.filter(_id__in = friend_store.get_friend_ids())
    interests_hash, others = _get_formatted_interests(new_interests)
    gender_prefix = 'his' if user.gender == 'male' else 'her'
    if not others.endswith(' '):
        others = others + ' '
    others = others + 'to ' + gender_prefix + ' Active Interests'
    pic_url = get_fb_profile_pic_link(user._id)
    message = [
        '@' + user.name,
        ' added ',
    ]
    message.extend(interests_hash)
    message.append(others)
    
    notification_text = user.name
    for part in message[1:]:
        if part.startswith('#') and not notification_text.endswith(' '):
            part = ' ' + part
        notification_text = notification_text + part
    
    store_data = {
        'uid'       : user._id,
        'firstName' : user.first_name,
        'lastName'  : user.last_name,
        'network'   : user.network,
        'pic'    : pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    for friend in friends:
        badge_num = add_notification(friend._id, settings.NEW_INTERESTS, message, pic_url, store_data)
        android_ids.append(friend.device_gcm_token)
        apple_ids.append(friend.device_pns_token)
        badge_nums.append(badge_num)
    logger.info('Sending new user interests notif for %s to %s' % (str(uid), str(friends)))
    data =  {
        'type'      : settings.NEW_INTERESTS,
        'ticker'    : 'Keen',
        'msg'   : notification_text,
    }
    send(data, android_ids, apple_ids, badge_nums)
Example #6
0
def new_user(user_id):
    if user_id in ['597971160', '782415557', '597040706']:
        return
    user = User.objects.get(_id = user_id)
    user_friend_store = user.get_friend_store()
    friends = User.objects.filter(_id__in = user_friend_store.get_friend_ids())
    friends = [friend for friend in friends if friend.type == 'active' and friend.network==user.network]
    
    pic_url = get_fb_profile_pic_link(user._id)
    message = [
        '@' + user.name,
        ' has just joined Keen, always keen for '
    ]
    interests_hash, others = _get_formatted_interests(user.interests)
    message.extend(interests_hash)
    message.append(others)
    store_data = {
        'uid'       : user._id,
        'firstName' : user.first_name,
        'lastName'  : user.last_name,
        'network'   : user.network,
        'pic'    : pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    for friend in friends:
        android_ids.append(friend.device_gcm_token)
        apple_ids.append(friend.device_pns_token)
        badge_num = add_notification(friend._id, settings.NOTIF_FRIEND_JOINED, message, pic_url, store_data)
        badge_nums.append(badge_num)
    
    notification_text = user.name
    for part in message[1:]:
        if part.startswith('#') and not notification_text.endswith(' '):
            part = ' ' + part
        notification_text = notification_text + part

    data =  {
        'type'      : settings.NOTIF_FRIEND_JOINED,
        'ticker'    : 'Keen',
        'msg'   : notification_text,
    }
    
    send(data, android_ids, apple_ids, badge_nums)
Example #7
0
def new_follower(user_ids, follower_id):
    logger.info("new_follower user_ids:%s follower_id:%s" % (str(user_ids), follower_id))
    try:
        follower = User.objects.get(_id = follower_id)
    except:
        logger.info("User %s doesnt exist yet, retrying task in 5mins" % follower_id)
        new_follower.apply_async(args=[user_ids, follower_id], eta=get_eta(300))
        
    pic_url = get_fb_profile_pic_link(follower._id)
    message = [
        '@' + follower.name,
        ' is following you on KEEN. Follow ',
        '@' + follower.name,
        '?'
    ]
    
    store_data = {
        'uid'       : follower._id,
        'firstName' : follower.first_name,
        'lastName'  : follower.last_name,
        'network'   : follower.network,
        'pic'    : pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    
    for user_id in user_ids:
        user = User.objects.get(_id = user_id)
        android_ids.append(user.device_gcm_token)
        apple_ids.append(user.device_pns_token)
        badge_num = add_notification(user._id, settings.NOTIF_FRIEND_FOLLOW, message, pic_url, store_data)
        badge_nums.append(badge_num)

    data =  {
        'type'      : settings.NOTIF_FRIEND_FOLLOW,
        'title'     : follower.name,
        'ticker'    : 'New follower',
        'uid'       : follower._id,
        'msg'       : follower.first_name + ' is now following you on KEEN.',
    }
    logger.info('new_follower Sending new follower %s to the ids %s' % (str(follower_id), str(user_ids)))
    send(data, android_ids, apple_ids, badge_nums)
Example #8
0
def activity_invite(aid, uids):
    activity = Activity.get_by_id(aid)
    suggester_id = activity['suggester_id']
    suggester = User.get_by_id(suggester_id, extra_fields=['gender'])
    himher = 'him' if suggester.get('gender') == 'male' else 'female'
    message = [
        "@" + suggester.get('first_name') + ' ' + suggester.get('last_name'),
        " is invited you to join " + himher + " for #" + activity.get('keyword') + ". Keen?"
    ]
    pic_url = get_fb_profile_pic_link(suggester.get('_id'))
    store_data = {
        'uid'       : suggester.get('_id'),
        'firstName' : suggester.get('first_name'),
        'lastName'  : suggester.get('last_name'),
        'network'   : suggester.get('network'),
        'pic'    : pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    
    for user_id in uids:
        user = User.get_by_id(user_id, extra_fields=['device_gcm_token', 'device_pns_token', 'type'])
        if user.get('type') == User.ACTIVE:
            android_ids.append(user.get('device_gcm_token'))
            apple_ids.append(user.get('device_pns_token'))
            badge_num = add_notification(user.get('_id'), settings.NOTIF_ACTIVITY_INVITE, message, pic_url, store_data)
            badge_nums.append(badge_num)

    data =  {
        'type'      : settings.NOTIF_ACTIVITY_INVITE,
        'title'     : suggester.get('first_name') + ' ' + suggester.get('last_name') + ' is wondering if',
        'msg'   : "you'd be keen for #" + activity.get('keyword'),
        'ticker'    : 'Activity invite',
        'aid'       : aid,
        'uid'       : suggester_id,
    }
    
    send(data, android_ids, apple_ids, badge_nums)
Example #9
0
def activity_confirm(aid, confirmed_ids):
    try:
        activity = Activity.objects.get(id = aid)
    except Activity.DoesNotExist:
        return
    
    for confirmed_id in confirmed_ids:
        if confirmed_id not in activity.get_confirmed_keener_ids():
            del confirmed_id
    
    suggester = User.objects.get(_id = activity.suggester_id) 
    confirmed_users = User.objects.filter(_id__in = confirmed_ids)
    
    if len(confirmed_ids) == 1:
        """Just the suggester and another"""
        others = ' has been confirmed'
    elif len(confirmed_ids) == 2:
        """The suggester and one other than self"""
        others = ' and 1 other has been confirmed'
    elif len(confirmed_ids) > 2:
        others = ' and ' + str(len(confirmed_ids) - 1) + ' others has been confirmed'
    logger.info('activity_confirm aid:%s ids:%s' % (str(aid), str(confirmed_ids)))
    message_store = [
        'Activity',
        ' with ',
        '@' + suggester.first_name + ' ' + suggester.last_name,
        others
    ]
    message = activity.keyword+' with '+suggester.first_name + ' ' + suggester.last_name + ' has been confirmed'
    if activity.keyword != Activity.DEFAULT_KEYWORD:
        message = '#' + message
        message_store[0] = '#' + activity.keyword
        
    pic_url = get_fb_profile_pic_link(suggester._id)
    store_data = {
        'uid'   : suggester._id,
        'aid'   : aid,
        'pic': pic_url
    }
    android_ids = []
    apple_ids = []
    badge_nums = []
    for user in [user for user in confirmed_users if user._id != suggester._id]:
        android_ids.append(user.device_gcm_token)
        apple_ids.append(user.device_pns_token)
        badge_num = add_notification(user._id, settings.NOTIF_ACTIVITY_CONFIRM, message_store, pic_url, store_data)
        badge_nums.append(badge_num)
    
    when = activity.when.strftime('%I:%M%p %b %d') if activity.when else ''
    where = activity.where if activity.where else ''
    details = activity.details if activity.details else ''
#    logger.info('Confirming %s when, where, details are %s, %s, %s' % (str(aid), when, where, details))
    msg = ' '.join([when, where, details]) + '"' if when or where or details else '"' + activity.text
    data =  {
        'type'     : settings.NOTIF_ACTIVITY_CONFIRM,
        'aid'      : aid,
        'ticker'   : 'Confirm! #' + activity.keyword +' with ' + suggester.first_name + ' ' + suggester.last_name,
        'title'    : suggester.first_name + "'s confrirmed",
        'msg'      :  msg,
#        'pic_link' : get_fb_profile_pic_link(suggester._id)
    }
    logger.info('Sending dict to %s of %s' % (str(aid), str(data)))
    send(data, android_ids, apple_ids, badge_nums)
Example #10
0
def new_keen(aid, keener_id):
    try:
        activity = Activity.objects.get(id = aid)
    except Activity.DoesNotExist:
        return
    if activity.status == Activity.MASTER:
        logger.info('new_keen aid:%s master activity, returning' % str(aid))
        return
    logger.info('new_keen aid:%s user:%s' % (str(aid), str(activity.suggester_id)))
    suggester = User.objects.get(_id = activity.suggester_id)
    logger.info('new_keen aid:%s user:%s' % (str(aid), str(keener_id)))
    keener = User.objects.get(_id = keener_id)
    add_keener_notification(suggester._id, aid, keener_id)
    pic_url = get_fb_profile_pic_link(keener._id)
    store_data = {
        'uid': keener._id,
        'aid':aid,
        'pic': pic_url
    }
    
    if activity.status == Activity.MASTER:
        logger.info('Activity %s is a MASTER activity, will notify followers of the keener' % str(aid))
        keener_followers = User.get_by_ids_type(ids = keener.following_me, extra_fields=['device_gcm_token', 'device_pns_token'])
        store_message = [
            "@" + keener.first_name + ' ' + keener.last_name,
            " has keen'd #" + activity.keyword + ". Join " + keener.first_name + "?"
        ]
        
        android_ids = []
        apple_ids = []
        badge_nums = []
        
        for follower in keener_followers:
            android_ids.append(follower.get('device_gcm_token'))
            apple_ids.append(follower.get('device_pns_token'))
            badge_num = add_notification(follower['_id'], settings.NOTIF_FOLLOWING_KEEN, store_message, pic_url, store_data)
            badge_nums.append(badge_num)
        
        data =  {
            'type'      : settings.NOTIF_FOLLOWING_KEEN,
            'ticker'    : ''.join(store_message),
            'msg'       : activity.text,
        }
        send(data, android_ids, apple_ids, badge_nums)
        logger.info('Master activity %s: sent notification to %s ' % (str(aid), str(keener.following_me)))
        return
    
    store_message = [
        '@' + keener.first_name + ' ' + keener.last_name,
        ' is keen'
    ]
    notif_message = keener.first_name + ' ' + keener.last_name + ' is keen'
    if activity.keyword != Activity.DEFAULT_KEYWORD:
        notif_message = notif_message + ' for #' + activity.keyword
        store_message = [
            '@' + keener.first_name + ' ' + keener.last_name,
            ' is keen for ',
            '#' + activity.keyword
        ]

    badge_num = add_notification(suggester._id, settings.NOTIF_ACTIVITY_KEEN, store_message, pic_url, store_data)
    
    data =  {
        'type'      : settings.NOTIF_ACTIVITY_KEEN,
        'title'     : keener.first_name + ' ' + keener.last_name,
        'msg'       : 'is keen for #' + activity.keyword,
        'ticker'    : keener.first_name + ' ' + keener.last_name + ' is keen',
        'aid'       : activity.id,
        'uid'       : keener_id
    }
    i_data = {
        'msg' : keener.first_name + ' wants to join you for #' + activity.keyword,
        'aid'       : activity.id,
        'uid'       : keener_id,
        'type'      : settings.NOTIF_ACTIVITY_KEEN,
    }
    send(data, [suggester.device_gcm_token], [suggester.device_pns_token], [badge_num], i_data=i_data)
Example #11
0
def new_activity(aid):
    try:
        activity = Activity.objects.get(id = aid)
        if activity.is_cancelled():
            return
    except Activity.DoesNotExist:
        return
    
    not_master = activity.status != Activity.MASTER
    
    interests_to_notify = activity.interest_notified
    follower_ids_to_notify = activity.followers_notified
    add_activity_notification(follower_ids_to_notify, aid)
    logger.info('new_activity aid:%s status:%s interests_to_notify:%s' % (str(activity.id), activity.status, str(interests_to_notify)))
    logger.info('new_activity aid:%s status:%s followers_to_notify:%s' % (str(activity.id), activity.status, str(follower_ids_to_notify)))
    
    if not_master:
        suggester = User.objects.get(_id = activity.suggester_id)
        logger.info('new_activity aid:%s suggester:%s' % (str(activity.id), str(suggester)))
#        suggester_friend_store = suggester.get_friend_store()
#        following_ids = suggester.following_me
#        friend_ids = suggester_friend_store.get_friend_ids()
#        fof_ids = FriendOfFriendStore.get_fof_ids_raw(suggester._id) if activity.visibility == 'fof' else []
#        interests_to_notify = col_get(USER_, {"_id" : {"$in" : fof_ids + friend_ids }, "interest" : activity.keyword, "network" : suggester.network}, list_=True)
#        followers_to_notify = col_get(USER_, {"_id" : {"$in" : following_ids }, "network" : suggester.network}, list_=True)
        pic_url = get_fb_profile_pic_link(suggester._id)
#        logger.info('new_activity aid:%s %s interests to notify from friends:%s fofs:%s' % (str(activity.id), str(len(interests_to_notify)), str(friend_ids), str(fof_ids)))
#        logger.info('new_activity aid:%s followers:%s' % (str(activity.id), str(followers_to_notify)))
        message = [
            '@' + suggester.name,
            ' is keen to #',
            activity.keyword,
            '. Join ',
            '@' + suggester.name
        ]
        
    else:
#        logger.info('new_activity aid:%s status==master' % str(activity.id))
#        interests_to_notify = []
#        followers_to_notify = col_get(USER_, {"interest" : activity.keyword}, list_=True)
#        logger.info('new_activity aid:%s followers:%s' % (str(activity.id), str(followers_to_notify)))
        message = [
            'Join #',
            activity.keyword,
            ' : "',
            activity.text,
            '"'
        ]
        pic_url = ''
    interests_to_notify = col_get(USER_, {"_id" : {"$in" : interests_to_notify }}, list_=True)
    followers_to_notify = col_get(USER_, {"_id" : {"$in" : follower_ids_to_notify }}, list_=True)
    
    store_data = {
        'uid'    : suggester._id if not_master else '',
        'aid'    : activity.id,
        'pic'    : pic_url 
    }
    logger.info('new_activity aid:%s status:%s message:%s' % (str(activity.id), activity.status, str(message)))
    android_ids = []
    apple_ids = []
    badge_nums = []
 
    for follower in followers_to_notify:
        android_ids.append(follower.get('device_gcm_token'))
        apple_ids.append(follower.get('device_pns_token'))
        badge_num = add_notification(follower['_id'], settings.NOTIF_ACTIVITY_NEW, message, pic_url, store_data)
        badge_nums.append(badge_num)
        Activity.add_to_set(activity.id, 'followers_notified', follower['_id'])
    data =  {
        'title'     : suggester.name if not_master else 'Join #' + activity.keyword,
        'msg'       : activity.text,
        'aid'       : activity.id,
        'ticker'    : 'New activity',
        'uid'       : suggester._id if not_master else '',
#        'type'      : settings.NOTIF_FOLLOWING_POST,
        'type'      : settings.NOTIF_ACTIVITY_NEW,
    }
    i_data = {
        'msg'  : suggester.name + ' posted: "' + activity.text + '"' if not_master else 'Join #' + activity.keyword,
        'aid'  : activity.id,
        'uid'  : suggester._id,
        'type' : settings.NOTIF_ACTIVITY_NEW,
    }
    follower_androids = set(android_ids)
    follower_apples = set(apple_ids)
    logger.info('new_activity aid:%s sending to followers data:%s, android_ids:%s, apple_ids:%s' % (str(activity.id), str(data), str(android_ids), str(apple_ids)))
    send(data, android_ids, apple_ids, badge_nums, i_data=i_data)
    
#    android_ids = set()
#    apple_ids = set()
#    badge_nums = []
#    
#    if not_master:
#        message = [
#            '@' + suggester.name,
#            ' posted a snip with #',
#            activity.keyword,
#            '. Join ',
#            '@' + suggester.name
#        ]
#    
#    for interested in interests_to_notify:
#        android_ids.add(interested.get('device_gcm_token'))
#        apple_ids.add(interested.get('device_pns_token'))
#        badge_num = add_notification(interested['_id'], settings.NOTIF_INTEREST_POST, message, pic_url, store_data)
#        badge_nums.append(badge_num)
#        Activity.add_to_set(activity.id, 'interest_notified', interested['_id'])
#    android_ids = list(android_ids - follower_androids)
#    apple_ids = list(apple_ids - follower_apples)
#    
#    data =  {
#        'title'     : '#' + activity.keyword + ' posted by ' + suggester.name if not_master else 'Join #' + activity.keyword,
#        'msg'   : activity.text,
#        'ticker'    : 'New activity',
#        'aid'       : activity.id,
#        'uid'       : suggester._id if not_master else '',
#        'type'      : settings.NOTIF_INTEREST_POST,
#    }
#    logger.info('new_activity aid:%s data:%s android_ids:%s apple_ids:%s' % (str(activity.id), str(data), str(android_ids), str(apple_ids)))
#    send(data, android_ids, apple_ids, badge_nums)
    logger.info('new_activity aid:%s finished' % str(activity.id))