def update(self): super(ObjectEntryView, self).update() for group in self.groups: for widget in group.widgets.values(): if IDataGridField.providedBy(widget): widget.auto_append = False widget.allow_reorder = True alsoProvides(widget, IFormWidget) for widget in self.widgets.values(): if IDataGridField.providedBy(widget) or IAjaxSelectWidget.providedBy(widget): widget.auto_append = False widget.allow_reorder = True alsoProvides(widget, IFormWidget)
def update(self): super(TaxonomieView, self).update() for group in self.groups: for widget in group.widgets.values(): if IDataGridField.providedBy(widget): widget.auto_append = False widget.allow_reorder = True alsoProvides(widget, IFormWidget) for widget in self.widgets.values(): if IDataGridField.providedBy( widget) or IAjaxSelectWidget.providedBy(widget): widget.auto_append = False widget.allow_reorder = True alsoProvides(widget, IFormWidget)
def _load_widget_data(self): _marker = object() data = aq_base(self.context).data groups = dict((g.__name__, g) for g in self.groups) groupnames = [''] + groups.keys() for groupname in groupnames: group_data = data.get(groupname, None) if groupname is '': group = self else: group = groups.get(groupname) fieldgroup = self.definition[groupname] # # plone.autoform binds groups really, really late, so # # we are stuck with a GroupFactory object, we need to # # call it to get the actual group, then replace the # # group factory with it once we have manipulated # # any widget values: if IGroupFactory.providedBy(group): idx = self.groups.index(group) actual_group = group(self.context, self.request, self) self.groups[idx] = group = actual_group group.update() # will populate group.widgets if group_data and fieldgroup.group_usage == 'grid': data_widget = group.widgets.values()[0] data_widget.value = getattr(group_data, 'data', []) continue if group_data is not None: for formfield in group.fields.values(): schema_field = formfield.field widgetname = formfield.__name__ fieldname = schema_field.__name__ v = getattr(group_data, fieldname, _marker) if v is not _marker: widget = group.widgets.get(widgetname) conv = getMultiAdapter( (schema_field, widget), IDataConverter, ) if not IDataGridField.providedBy(widget): v = conv.toWidgetValue(v) widget.value = v if hasattr(widget, 'update'): # may be necessary to copy value to other state, # as is the case with radio button widgets widget.update() # multiple collection like set/list (multi-choice) # has issues where SequenceWidget wants to reset # widget.value during update... so we have to # check the value (ugly hack) and also re-set the # value for the display widget: if ICollection.providedBy(schema_field): widget.value = v if v: term_item = [ t for t in widget.items if t.get('value') == v[0] ][0] term_item['checked'] = True
def update(self): super(EditForm, self).update() for group in self.groups: for widget in group.widgets.values(): if IDataGridField.providedBy(widget): widget.auto_append = False widget.allow_reorder = True alsoProvides(widget, IFormWidget)