Exemple #1
0
def admins(context, request):
    filters = None
    q = request.GET.get('q', None)
    if q:
        filters = {'username': {'$regex': '.*%s.*' % q, '$options': '-i'}}
    admin_users = request.userdb.list_users(filters).sort('username')
    page = create_pagination_mongo_collection(request, admin_users)
    return {'admin_users': admin_users, 'page': page}
Exemple #2
0
def admins(context, request):
    filters = None
    q = request.GET.get('q', None)
    if q:
        filters = {'username': {'$regex': '.*%s.*' % q,
                                '$options': '-i'}}
    admin_users = request.userdb.list_users(filters).sort('username')
    page = create_pagination_mongo_collection(request, admin_users)
    return {'admin_users': admin_users,
            'page': page}
Exemple #3
0
def updates(context, request):
    filters = {}
    q = request.GET.get('q', None)
    if q:
        filters = {'name': {'$regex': '.*%s.*' % q, '$options': '-i'}}

    # Order
    order = request.GET.get('order', None)
    if order:
        if order == "desc":
            ordering = pymongo.DESCENDING
        elif order == "asc":
            ordering = pymongo.ASCENDING
    logger.debug("admins.py ::: updates - order = {}".format(order))

    # Orderby
    sorting = ('timestamp', -1)  # default
    s = request.GET.get('orderby', None)
    if s:
        if s == '_id':
            sorting = ('_id', ordering)
        elif s == 'name':
            sorting = ('name', ordering)
        elif s == 'log':
            sorting = ('timestamp', ordering)

    logger.debug("admins.py ::: updates - sorting = {}".format(sorting))
    count = request.db.updates.count_documents(filters)
    updates = request.db.updates.find(filters).sort([sorting])

    # "format" filter in jinja2 only admits "%s", not "{0}"
    settings = get_current_registry().settings
    controlfile = settings['updates.control'].replace('{0}', '%s')

    latest = "%04d" % (int(getNextUpdateSeq(request.db)) - 1)
    page = create_pagination_mongo_collection(request, updates, count)

    return {
        'updates': updates,
        'latest': latest,
        'controlfile': controlfile,
        'page': page
    }
Exemple #4
0
def updates(context, request):
    filters = None
    q = request.GET.get('q', None)
    if q:
        filters = {'name': {'$regex': '.*%s.*' % q,
                            '$options': '-i'}}

    updates = request.db.updates.find(filters).sort('_id',-1)
    
    # "format" filter in jinja2 only admits "%s", not "{0}"
    settings = get_current_registry().settings
    controlfile = settings['updates.control'].replace('{0}','%s')

    latest =  "%04d" % (int(getNextUpdateSeq(request.db))-1)
    page = create_pagination_mongo_collection(request, updates)
    
    return {'updates': updates,
            'latest': latest,
            'controlfile': controlfile,
            'page': page} 
Exemple #5
0
def updates(context, request):
    filters = {}
    q = request.GET.get('q', None)
    if q:
        filters = {'name': {'$regex': '.*%s.*' % q,
                            '$options': '-i'}}

    # Order
    order = request.GET.get('order', None)
    if order:
        if order == "desc":
            ordering = pymongo.DESCENDING
        elif order == "asc":
            ordering = pymongo.ASCENDING
    logger.debug("admins.py ::: updates - order = {}".format(order))

    # Orderby
    sorting = ('_id', -1) # default
    s = request.GET.get('orderby', None)
    if s:
        if s == '_id':
            sorting = ('_id', ordering)
        elif s == 'name':
            sorting = ('name', ordering)
        elif s == 'log':
            sorting = ('timestamp', ordering)

    logger.debug("admins.py ::: updates - sorting = {}".format(sorting))
    updates = request.db.updates.find(filters).sort([sorting])
    
    # "format" filter in jinja2 only admits "%s", not "{0}"
    settings = get_current_registry().settings
    controlfile = settings['updates.control'].replace('{0}','%s')

    latest =  "%04d" % (int(getNextUpdateSeq(request.db))-1)
    page = create_pagination_mongo_collection(request, updates)
    
    return {'updates': updates,
            'latest': latest,
            'controlfile': controlfile,
            'page': page} 
Exemple #6
0
def admin_maintenance(_context, request):

    schemaMaintenance = Maintenance()
    form = MaintenanceForm(schema=schemaMaintenance, request=request)

    data = {}
    settings = get_current_registry().settings
    instance = request.db.settings.find_one({'key': 'maintenance_message'})
    if '_submit' in request.POST:
        data = list(request.POST.items())
        try:
            postdata = form.validate(data)
            logger.debug("admins_log ::: admin_maintenance  = %s" % (postdata))
            form.save(postdata)
            return HTTPFound(location='')
        except ValidationFailure as e:
            form = e

    if instance and not data:
        instance['maintenance_message'] = instance.get('value')
        form_render = form.render(instance)
    else:
        form_render = form.render()

    # Query String: maintenance mode ON/OFF
    mode = request.GET.get('mode', None)
    logger.info("admin_maintenance ::: mode = %s" % mode)
    obj = request.db.settings.find_one({'key': 'maintenance_mode'})
    if obj is None:
        obj = {
            'key': 'maintenance_mode',
            'value': mode == 'true',
            'type': 'string'
        }
        request.db.settings.insert_one(obj)

    else:
        if mode is not None:
            request.db.settings.update_one({'key': 'maintenance_mode'},
                                           {'$set': {
                                               'value': mode == 'true'
                                           }})
            logger.info("admin_maintenance ::: obj = %s" % (obj))
            if mode == 'false':
                request.db.settings.delete_one({'key': 'maintenance_message'})

    # Active users
    sessions = [
        pickle.loads(session['value'])
        for session in request.db.backer_cache.find({}, {
            '_id': 0,
            'value': 1
        })
    ]
    logger.info("admin_maintenance ::: sessions = %s" % sessions)
    last_action = int(time.time()) - int(settings.get('idle_time', 15 * 60))
    logger.info("admin_maintenance ::: last_action = %s" % last_action)
    active_users = [
        session['auth.userid'] for session in sessions
        if session.get('auth.userid', None)
        and int(session['_accessed_time']) > last_action
    ]
    logger.info("admin_maintenance ::: active_users = %s" % active_users)

    filters = {'username': {'$in': active_users}}
    count = request.userdb.count_users(filters)
    admin_users = request.userdb.list_users(filters).sort('username')
    page = create_pagination_mongo_collection(request, admin_users, count)

    return {
        'admin_users': admin_users,
        'page': page,
        'maintenance': obj['value'],
        'form_maintenance': form_render
    }
Exemple #7
0
            'value': 1
        })
    ]
    logger.info("admin_maintenance ::: sessions = %s" % sessions)
    last_action = int(time.time()) - int(settings.get('idle_time', 15 * 60))
    logger.info("admin_maintenance ::: last_action = %s" % last_action)
    active_users = [
        session['auth.userid'] for session in sessions
        if session.get('auth.userid', None)
        and int(session['_accessed_time']) > last_action
    ]
    logger.info("admin_maintenance ::: active_users = %s" % active_users)

    filters = {'username': {'$in': active_users}}
    admin_users = request.userdb.list_users(filters).sort('username')
    page = create_pagination_mongo_collection(request, admin_users)

    return {
        'admin_users': admin_users,
        'page': page,
        'maintenance': obj['value'],
        'form_maintenance': form_render
    }


@view_config(route_name='statistics',
             permission='edit',
             renderer="templates/admins/statistics.jinja2")
def statistics(context, request):

    object_counters = []
Exemple #8
0
            request.db.settings.update({'key':'maintenance_mode'},{'$set':{ 'value': mode == 'true' }})
            logger.info("admin_maintenance ::: obj = %s" % (obj))
            if mode == 'false':
                request.db.settings.remove({'key':'maintenance_message'})

    # Active users
    sessions = [pickle.loads(session['value']) for session in request.db.backer_cache.find({},{'_id':0, 'value':1})]
    logger.info("admin_maintenance ::: sessions = %s" % sessions)
    last_action = int(time.time()) - int(settings.get('idle_time',15*60))
    logger.info("admin_maintenance ::: last_action = %s" % last_action)
    active_users = [ session['auth.userid'] for session in sessions if session.get('auth.userid',None) and int(session['_accessed_time']) > last_action ]
    logger.info("admin_maintenance ::: active_users = %s" % active_users)

    filters = {'username':{'$in': active_users }}
    admin_users = request.userdb.list_users(filters).sort('username')
    page = create_pagination_mongo_collection(request, admin_users)

    return {
       'admin_users': admin_users,
       'page': page,
       'maintenance': obj['value'],
       'form_maintenance': form_render
    }



@view_config(route_name='statistics', permission='edit', renderer="templates/admins/statistics.jinja2")
def statistics(context, request):

    object_counters = []
    policy_counters = []