Comment créer un widget forme qui fonctionne comme Plone MultiContentTreeFieldWidget mais conserve l'ordre des éléments
Question
J'ai un comportement de dextérité qui me permet de relier les éléments et stocker les relations que 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')
Cela fonctionne très bien, sauf que si vous avez quelques relations alors chaque fois que vous modifiez l'élément de leurs modifications de commande. Nous affichons les articles connexes dans la colonne de droite de la page (par exemple le voir article sur la nourriture ) et que vous souhaitez contrôler l'ordre afin que nous puissions mettre teasers les plus intéressants d'abord.
Débogage il semble probable que ce réordonnancement est en baisse à la z3c.formwidget.query.widget.QuerySourceRadioWidget.update
de fait utilise un ensemble lors du traitement des paramètres de demande. On peut supposer que cela est d'éviter les doublons, mais a deux effets secondaires désagréables:
- la valeur d'un champ est mis à jour quand il n'a pas changé
- ordre est perdu quand il pourrait être important
Y at-il une alternative à MultiContentTreeFieldWidget
qui fonctionne d'une manière similaire, mais conserve l'ordre que vous ajoutez des éléments? Mieux encore est-il un widget qui fait cela, et vous permet aussi aux articles Réorganiser ainsi?
La solution
Je ne trouve pas une alternative, mais par la suite a z3c.formwidget.query été mis à jour pour utiliser une liste au lieu d'un ensemble lors du traitement des paramètres de demande. Version 0.7 corrige ce
http://pypi.python.org/pypi/z3c.formwidget. requête / 0,7
Ajoutez ce qui suit à votre section [versions] à buildout à résoudre
z3c.formwidget.query = 0.7