2016-12-08 5 views
1

Ich habe eine Python-App auf Pylons und Jinja2 basiert. Es ist ein Widget:@ colander.deferred Widget Datenaktualisierung

@colander.deferred 
def deferred_last_results_widget(node, kw): 
""" 
Widget for last results widget 
Empty choice is added to list by default. 

:param node: name of the node 
:param kw: key/value dictionary 
:return: Selectable widget 
""" 
choices = kw.get('choices', dict()).get(node.name) 
value_id = kw.get('choices', dict()).get('value_id') 
without_empty = kw.get('no_empty_value') 
disabled = kw.get('disabled', {}) 
if disabled and node.name in disabled: 
    disabled = 'disabled' 
return LastResultsWidget(values=choices, 
         value_id=value_id, 
         css_class=kw.get('css_class', None), 
         required=False, id=kw.get('select_id'), 
         disabled=disabled, 
         onchange_action=kw.get('onchange_action', None)) 

Es wird verwendet, um die Daten mit einem SchemaNode anzuzeigen:

assessments = SchemaNode(String(), widget=deferred_last_results_widget, 
         title='Assessment:', missing='') 

Erwähnt SchemaNode ist ein Element eines Formulars. Nach dem Neustart der App klicke ich auf eine Datenzeile, um detaillierte Daten anzuzeigen. Das Formular wird korrekt gerendert und das Widget zeigt korrekte Daten an (in dieser Form zweimal verwendet - sowohl korrekt als auch unterschiedlich). Wenn ich zu der Liste zurückkehre und auf eine andere Datenzeile klicke, zeigt das Widget dieselben Daten an wie für die Zeile, auf die ich zuerst geklickt habe. Es verhält sich so, bis ich die App neu starte.

Frage: Ist @ colander.deferred (oder vielleicht etw sonst) machen das Widget so zu verhalten? Leider ist es nicht mein Code, aber ich muss herausfinden, warum es nicht korrekte Daten anzeigt und an den ersten Anfangswerten festhielt.

Vielen Dank im Voraus für alle Vorschläge.

Antwort

0

Es war ein Fehler mit dieser bestimmten Colader-Version. Es zwang das Widget dazu, sich Singleton-ähnlich zu verhalten.

Verwandte Themen