Foros del Web » Programando para Internet » Python »

Problemas con las propiedades

Estas en el tema de Problemas con las propiedades en el foro de Python en Foros del Web. Buenas a todos. Estoy creando una plantilla en zope que me muestra un listado de las carpetas que hay contenidas en otra. El caso es ...
  #1 (permalink)  
Antiguo 28/05/2010, 02:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Pregunta Problemas con las propiedades

Buenas a todos.

Estoy creando una plantilla en zope que me muestra un listado de las carpetas que hay contenidas en otra. El caso es que dichas carpetas pueden tener un codigo o no (una propiedad añadida desde zope a las carpetas interiores).

En mi plantilla tengo el siguiente código:

Código HTML:
<tal:c tal:define="fisicalPath here/getPhysicalPath;
        contentFilter python:{'review_state':'published','sort_on':'sortable_title'};
        items python:here.getFolderContents(contentFilter);
        items python: [(obj) for obj in items if obj.portal_type=='Folder'];">
    <ul>
        <tal:c1 tal:condition="items" tal:repeat="item items">
            <li class="uslistitem"><tal:cod tal:content="item/codigo|nothing" /> - <a href="" tal:content="item/Title" tal:attributes="href item/getId"></a></li>
        </tal:c1>
    </ul>
</tal:c> 
Cuando pinto cada uno de los item (cada carpeta) item/Title y item/getId no me dan problemas pero item/codigo me da un error

Este sitio encontró un error intentando completar su petición. Los errores fueron:
Tipo de Error
KeyError
Valor del Error
'cod_centro'

Alguien sabe como puedo obtener dicha propiedad ???
  #2 (permalink)  
Antiguo 28/05/2010, 08:08
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Problemas con las propiedades

Checa bien el diccionario que estés usando.

KeyError es una excepcion lanzada cuando en un diccionario no se encuentra una llave.

Por ejemplo:
Código Python:
Ver original
  1. frutas = {'manzana':10, 'platano':15, 'uva':5, 'naranja':7}
  2. frutas['tomate']
  3. #Esto lanzara la siguiente excepcion
  4. #KeyError: 'tomate'
  #3 (permalink)  
Antiguo 01/06/2010, 08:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Pregunta Respuesta: Problemas con las propiedades

Ya encontre cual era el problema, aun así el código no hacía lo que yo quería. He generado un nuevo código pero no se que hacer.

Os pongo en situacion, a la misma altura de mi index, tengo una serie de carpetas que simulan las aulas y dentro de dichas carpetas, un objeto por cada alumno. Ahora lo que pretendo es obtener en item2 todo el listado completo de alumnos.

Código HTML:
<div metal:fill-slot="main">        
					
	<h1 class="documentFirstHeading">Listado completo de alumnos</h1>
	<tal:mfolder tal:define="contentFilter python:{'review_state':'published'};
		contentFilter2 python:{'review_state':'published','portal_type':'Alumno'};
		items python:here.getFolderContents(contentFilter,full_objects=True);
		items2 python: [(obj.getFolderContents(contentFilter2,full_objects=True)) for obj in items if obj.getFolderContents(contentFilter2,full_objects=True)];">
		<p tal:content="items2">Items</p>
	</tal:mfolder>
	
</div> 
El caso es que quiero que items2 contenga un listado de todos los alumnos para mostrar un listado completo.

Con este código, lo que consigo es que si items tiene la siguiente forma
items = [elem1,elem2,elem3]
en items2 se me guarda algo como esto
items2 = [[subelem11,subelem12,subelem13],[subelem21,subelem22],[subelem31,subelem32,subelem33]]

es decir, un array bidimensional donde cada fila esta formada por todos los alumnos que hay dentro de cada carpeta.

mi idea era aplicar a este listado la funcion sequence.sort y con este formato no puedo hacerlo.

¿Como puedo conseguir dicho listado?

Última edición por diablo_jr; 01/06/2010 a las 09:24

Etiquetas: propiedades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:52.