web/formwidgets.py
branchstable
changeset 4901 19ecbbc4f633
parent 4858 8c886610e5ee
child 4975 35b0dd80dc06
--- a/web/formwidgets.py	Fri Mar 12 16:15:33 2010 +0100
+++ b/web/formwidgets.py	Fri Mar 12 16:21:13 2010 +0100
@@ -604,6 +604,34 @@
     wdgtype = 'RestrictedSuggestField'
 
 
+class LazyRestrictedAutoCompletionWidget(RestrictedAutoCompletionWidget):
+    """remote autocomplete """
+    wdgtype = 'LazySuggestField'
+
+    def values_and_attributes(self, form, field):
+        self.add_media(form)
+
+        """override values_and_attributes to handle initial displayed values"""
+        values, attrs = super(LazyRestrictedAutoCompletionWidget, self).values_and_attributes(form, field)
+        assert len(values) == 1, "multiple selection is not supported yet by LazyWidget"
+        if not values[0]:
+            values = form.cw_extra_kwargs.get(field.name,'')
+            if not isinstance(values, (tuple, list)):
+                values = (values,)
+        try:
+            values = list(values)
+            values[0] = int(values[0])
+            attrs['cubicweb:initialvalue'] = values[0]
+            values = (self.display_value_for(form, values[0]),)
+        except (TypeError, ValueError):
+            pass
+        return values, attrs
+
+    def display_value_for(self, form, value):
+        entity =form._cw.entity_from_eid(value)
+        return entity.view('combobox')
+
+
 class AddComboBoxWidget(Select):
     def values_and_attributes(self, form, field):
         values, attrs = super(AddComboBoxWidget, self).values_and_attributes(form, field)