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
def find_connections_suggestions(q, limit, request): show_type = should_show_types(request) where = [(User.firstname + ' ' + User.lastname).ilike('%' + q + '%')] if not request.user.is_admin: where.append((User.activated == True)) if show_type: from alchemist.connections.grid import get_user_typestr where.append(User.roles.any(Role.title == get_user_typestr(show_type))) query = DBSession.query(User).filter(*where).limit(limit) return [transform([row.id, row.nicename, row.primary_type], 'connection', True, row.primary_type) for row in query.all()]