# Dada una ip, busca el nodo de origen y el usuario asociado (unico) def auth_step1(database, ipAddress, called): session = sa.create_session() query = session.query(ORIGIN).select( sa.and_( USER.c.enabled == True, USER.c.deleted == False, UserOrigin.c.id_user == USER.c.id, UserOrigin.c.id_node == ORIGIN.c.id, ORIGIN.c.ip == ipAddress, ORIGIN.c.enabled == True, ORIGIN.c.deleted == False)) assert len(query) == 1 assert len(query[0].UserOrigin) == 1 origin = query[0] user = query[0].UserOrigin[0].USER query[0].RwOrigin result = database.text( "SELECT * FROM " + RwOrigin.__name__+ " WHERE "\ " id_node=" + str(origin.id) + " AND "\ " enabled=1 AND deleted=0 AND ('" + called + "' LIKE \ CONCAT(matching, '%%') OR matching IS NULL)ORDER BY LENGTH(matching) DESC" ).execute() if result.rowcount==0: rewrite = RwOrigin() else: rewrite = result.fetchone()['rewrite'] return user, origin, rewrite