示例#1
0
def history_delete():
    """
    Delete searches/sessions/tweets
    
    @searches = list of search ids
    @sessions = list of session ids
    """
    try:
        search_ids = request.args.getlist('searches[]')        
        session_ids = set(request.args.getlist('sessions[]'))
        
        cursor = _session.find({'search_id': {'$in': search_ids}}, {'_id': 1})
        session_ids.update([str(r['_id']) for r in cursor])
        session_ids = list(session_ids)
                  
        _tweets.remove(
            {'session_id': {'$in': session_ids}})
        _session.remove(
            {'_id': {'$in': [bson.ObjectId(x) for x in session_ids]}})
        _search.remove(
            {'_id': {'$in': [bson.ObjectId(x) for x in search_ids]}})
         
        return _jsonify(deleted=session_ids)
    except Exception, e:
        traceback.print_exc()
        return _jsonify(error=str(e))
示例#2
0
def history_delete():
    """
    Delete searches/sessions/tweets

    @searches = list of search ids
    @sessions = list of session ids
    """
    try:
        search_ids = request.args.getlist('searches[]')
        session_ids = set(request.args.getlist('sessions[]'))

        cursor = _session.find({'search_id': {'$in': search_ids}}, {'_id': 1})
        session_ids.update([str(r['_id']) for r in cursor])
        session_ids = list(session_ids)

        _tweets.remove(
            {'session_id': {'$in': session_ids}})
        _session.remove(
            {'_id': {'$in': [bson.ObjectId(x) for x in session_ids]}})
        _search.remove(
            {'_id': {'$in': [bson.ObjectId(x) for x in search_ids]}})

        return _jsonify(deleted=session_ids)
    except Exception, e:
        traceback.print_exc()
        return _jsonify(error=str(e))
示例#3
0
def clean_database(n_days):
    """Clean database"""
    print 'settings: %s' % settings_module

    print 'Clean database: %d days' % n_days
    dt = datetime.datetime.utcnow() - datetime.timedelta(days=n_days)
    dt_str = dt.isoformat()

    print 'Removing sessions before %s' % dt_str
    removed = 0

    session_list = list(
        _session.find({
            'saved': {
                '$ne': 1
            },
            'dt': {
                '$lt': dt_str
            }
        }, {
            'saved': 1,
            'dt': 1
        }))
    for session_r in session_list:
        # Delete tweets associated with session
        _tweets.remove({'session_id': str(session_r['_id'])})

        # Delete session
        _session.remove({'_id': session_r['_id']})

        removed += 1
        if (removed % 100) == 0:
            print '...removed %d sessions...' % removed
    print 'Removed %d sessions' % removed

    print 'Removing orphan searches'
    removed = 0

    search_id_list = _session.distinct('search_id')

    for search_id in _search.distinct('_id'):
        if not str(search_id) in search_id_list:
            _search.remove({'_id': search_id})

            removed += 1
            if (removed % 100) == 0:
                print '...removed %d sessions...' % removed
    print 'Removed %d orphan searches' % removed
示例#4
0
def _get_saved_results(params=None):
    """
    Get saved results matching params, grouped by search
    """
    search_by_query = []
    search_by_list = []
    
    list_map = _get_list_map()
        
    search_q = {'username': session['username']}
    search_q.update(params or {})
    
    search_cursor = _search.find(search_q, sort=[('query', pymongo.ASCENDING)])
    for search_r in search_cursor:
        search_r['_id'] = str(search_r['_id'])
        search_r['sessions'] = []
        
        if 'list_id' in search_r:
            search_r['list_name'] = list_map.get(search_r['list_id']) \
                or search_r.get('list_name') \
                or '[unknown]'
                 
        session_cursor = _session.find(
            {'search_id': search_r['_id'], 'saved': 1},
            fields=['_id', 'dt', 'shared'],
            sort=[('dt', pymongo.DESCENDING)]
        )
        for session_r in session_cursor:
            session_r['_id'] = str(session_r['_id'])
            session_r['dt'] = datetime.datetime \
                .strptime(session_r['dt'], '%Y-%m-%dT%H:%M:%S.%f') \
                .strftime('%b %d %Y %H:%M:%S')
                                
            search_r['sessions'].append(session_r)
            
        if search_r['sessions']:
            if 'list_id' in search_r:
                search_by_list.append(search_r)
            else:
                search_by_query.append(search_r)
   
    return (search_by_query, search_by_list)
示例#5
0
def _get_saved_results(params=None):
    """
    Get saved results matching params, grouped by search
    """
    search_by_query = []
    search_by_list = []

    list_map = _get_list_map()

    search_q = {'username': session['username']}
    search_q.update(params or {})

    search_cursor = _search.find(search_q, sort=[('query', pymongo.ASCENDING)])
    for search_r in search_cursor:
        search_r['_id'] = str(search_r['_id'])
        search_r['sessions'] = []

        if 'list_id' in search_r:
            search_r['list_name'] = list_map.get(search_r['list_id']) \
                or search_r.get('list_name') \
                or '[unknown]'

        session_cursor = _session.find(
            {'search_id': search_r['_id'], 'saved': 1},
            fields=['_id', 'dt', 'shared'],
            sort=[('dt', pymongo.DESCENDING)]
        )
        for session_r in session_cursor:
            session_r['_id'] = str(session_r['_id'])
            session_r['dt'] = datetime.datetime \
                .strptime(session_r['dt'], '%Y-%m-%dT%H:%M:%S.%f') \
                .strftime('%b %d %Y %H:%M:%S')

            search_r['sessions'].append(session_r)

        if search_r['sessions']:
            if 'list_id' in search_r:
                search_by_list.append(search_r)
            else:
                search_by_query.append(search_r)

    return (search_by_query, search_by_list)
示例#6
0
def clean_database(n_days):
    """Clean database"""
    print 'settings: %s' % settings_module
    
    print 'Clean database: %d days' % n_days    
    dt = datetime.datetime.utcnow() - datetime.timedelta(days=n_days)
    dt_str = dt.isoformat()
    
    print 'Removing sessions before %s' % dt_str
    removed = 0
    
    session_list = list(_session.find(
        {'saved': {'$ne': 1}, 'dt': {'$lt': dt_str}},
        {'saved': 1, 'dt': 1}
    ))
    for session_r in session_list:
        # Delete tweets associated with session
        _tweets.remove({'session_id': str(session_r['_id'])})
        
        # Delete session
        _session.remove({'_id': session_r['_id']})
        
        removed += 1        
        if (removed % 100) == 0:
            print '...removed %d sessions...' % removed
    print 'Removed %d sessions' % removed
    
    print 'Removing orphan searches'
    removed = 0
    
    search_id_list = _session.distinct('search_id')
    
    for search_id in _search.distinct('_id'):
        if not str(search_id) in search_id_list:
            _search.remove({'_id': search_id})
            
            removed += 1           
            if (removed % 100) == 0:
                print '...removed %d sessions...' % removed    
    print 'Removed %d orphan searches' % removed