Cómo crear un widget de formulario de plone que funcione como multicontenttreefieldwidget pero conserva el orden de los elementos

StackOverflow https://stackoverflow.com/questions/7807693

  •  26-10-2019
  •  | 
  •  

Pregunta

Tengo un comportamiento de destreza que me permite relacionar elementos y almacenar las relaciones como uuids

relatedItems = schema.List(
            title=u"Related Items",
            description=u"Search for content that is related to this item",
            required=False,
            value_type=schema.Choice(
                source=UUIDSourceBinder(navigation_tree_query={'portal_type':
                   TYPES_WITH_TEASERS})))
form.widget(relatedItems='plone.formwidget.contenttree.widget.MultiContentTreeFieldWidget')

Esto funciona muy bien, excepto que si tiene algunas relaciones, cada vez que edita el elemento que cambia su pedido. Estamos mostrando los elementos relacionados en la columna de la derecha de la página (por ejemplo, ver esto Artículo sobre comida) y queremos controlar el orden para que podamos poner primero los teasers más interesantes.

La depuración es probable que este reordenamiento se deba al hecho z3c.formwidget.query.widget.QuerySourceRadioWidget.update Utiliza un conjunto al procesar los parámetros de solicitud. Presumiblemente esto es para evitar duplicados, pero tiene dos efectos secundarios desagradables:

  1. El valor de un campo se actualiza cuando no ha cambiado
  2. El orden se pierde cuando puede ser importante

¿Hay una alternativa a MultiContentTreeFieldWidget ¿Eso funciona de manera similar pero conserva el pedido que agrega elementos? Aún mejor, ¿hay un widget que haga esto y también le permite reordenar los elementos?

¿Fue útil?

Solución

No encontré una alternativa, pero posteriormente z3c.formwidget.Query se ha actualizado para usar una lista en lugar de un conjunto al procesar los parámetros de solicitud. Versión 0.7 corrige esto

http://pypi.python.org/pypi/z3c.formwidget.Query/0.7

Agregue lo siguiente a su sección [versiones] en BuildOut para resolver

z3c.formwidget.query = 0.7
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top