diff -r 29626bb6071b -r 19ecbbc4f633 web/formwidgets.py --- 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)