Пример #1
0
def get_records(request, max_records, action_verb='export'):
    ids, excl_ids = get_ids(request)
    sess_query = request.session.get('query_conn')
    filters = [User.id.in_(ids)] if ids else user_where_from_query({'query': sess_query})
    if excl_ids:
        filters.append(User.id.notin_(excl_ids))
    if not request.user.is_admin:
        filters.append(User.activated == True)
    type_from_mdict = urlparse(request.referer).path[1:]
    if type_from_mdict:
        user_type_str = get_user_typestr(type_from_mdict)
        if user_type_str:
            filters.append(User.roles.any(Role.title == user_type_str))

    if not (ids or (request.session.get('select_all_conn') and sess_query is not None)):
        request.session.flash('We didn\'t find anything to %s' % action_verb, 'error')
        return False
    if len(ids) > max_records:
        request.session.flash('You cannot %s more than %s contact' % (action_verb, max_records), 'error')
        return False

    records = DBSession.query(User).outerjoin(User.companies_rel).filter(*filters).limit(max_records + 1).all()
    if len(records) > max_records:
        request.session.flash('You cannot %s more than %s contacts' % (action_verb, max_records), 'error')
        return False
    return records
Пример #2
0
def get_filters(request):
    filters = []
    if not request.user.is_admin:
        filters.append(User.activated == True)
    type_from_mdict = request.matchdict.get('type')

    if 'connections' not in request.path and type_from_mdict:
        user_type_str = get_user_typestr(type_from_mdict)
        filters.append(User.roles_rel.any(and_(RoleXUser.role_name == user_type_str, RoleXUser.is_primary == True)))
    elif 'connections' in request.path:
        filters.append(User.roles_rel.any(RoleXUser.is_primary == True))

    where = user_where_from_query(request.params)
    filters.append(and_(*where))
    return filters