Come creare un widget del form Plone che opere come MultiContentTreeFieldWidget ma conserva l'ordine degli elementi
Domanda
Ho un comportamento destrezza che mi permette di mettere in relazione gli elementi e memorizzare le relazioni come UUID
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')
Questa grande opera, tranne che se si dispone di un paio di relazioni, allora ogni volta che si modifica la voce i loro cambiamenti di ordine. Stiamo mostrando gli elementi correlati nella colonna di destra della pagina (ad esempio, vedere questo articolo sul cibo ) e si desidera controllare l'ordine in modo che possiamo mettere occhiolini più interessanti prima.
Debug sembra probabile che questo riordino è giù per il fatto z3c.formwidget.query.widget.QuerySourceRadioWidget.update
utilizza un set durante l'elaborazione di parametri di richiesta. Presumibilmente questo è quello di evitare i duplicati, ma ha due effetti collaterali brutto:
- valore di un campo viene aggiornato quando non è cambiata ??li>
- ordine persa quando potrebbe essere importante
Esiste un'alternativa a MultiContentTreeFieldWidget
che funziona in modo simile, ma conserva l'ordine si aggiungono elementi? Ancora meglio c'è un widget che fa questo e vi permette di elementi di riordino così?
Soluzione
Non ho trovato un'alternativa, ma successivamente z3c.formwidget.query è stato aggiornato per utilizzare un elenco invece di un set durante l'elaborazione di parametri di richiesta. La versione 0.7 corregge questo
http://pypi.python.org/pypi/z3c.formwidget. interrogazione / 0,7
Aggiungere il seguente ai vostri [versioni] sezione buildout per risolvere
z3c.formwidget.query = 0.7