def get_ttw_fields(obj): """Returns names of the fields that were added to obj through the web""" fti = getUtility(IDexterityFTI, name=obj.portal_type) full_schema = fti.lookupSchema() all_fields = schema.getFieldsInOrder(full_schema) schema_policy = getUtility(ISchemaPolicy, name=fti.schema_policy) original_schema = schema_policy.bases(None, None)[0] original_fields = schema.getFieldsInOrder(original_schema) new_fields = [field[0] for field in all_fields if field[0] not in dict(original_fields).keys()] for behavior_id in fti.behaviors: behavior = getUtility(IBehavior, behavior_id).interface if behavior == IContactDetails or not IFormFieldProvider.providedBy(behavior): continue try: default_fieldset_fields = non_fieldset_fields(behavior) behavior_name = behavior_id.split('.')[-1] # @TODO: get generic method to get widget id new_fields.extend(['%s.%s' % (behavior_name, field_name) for field_name in default_fieldset_fields]) except: pass return new_fields
def get_ttw_fields(obj): """Returns names of the fields that were added to obj through the web""" fti = getUtility(IDexterityFTI, name=obj.portal_type) full_schema = fti.lookupSchema() all_fields = schema.getFieldsInOrder(full_schema) schema_policy = getUtility(ISchemaPolicy, name=fti.schema_policy) original_schema = schema_policy.bases(None, None)[0] original_fields = schema.getFieldsInOrder(original_schema) new_fields = [ field[0] for field in all_fields if field[0] not in dict(original_fields).keys() ] for behavior_id in fti.behaviors: behavior = getUtility(IBehavior, behavior_id).interface if behavior in IGNORED_BEHAVIORS or not IFormFieldProvider.providedBy( behavior): continue try: default_fieldset_fields = non_fieldset_fields(behavior) behavior_name = behavior_id.split('.')[-1] # @TODO: get generic method to get widget id new_fields.extend([ '%s.%s' % (behavior_name, field_name) for field_name in default_fieldset_fields ]) except: pass return new_fields
def add(self, field): context = self.context schema = IEditableSchema(context.schema) # move it after the last field that is not in a fieldset # or at top if there is no field yet in "default" fieldset ordered_fields = [name for (name, f) in sortedFields(context.schema)] default_fields = non_fieldset_fields(context.schema) if len(default_fields) > 0: position = ordered_fields.index(default_fields[-1]) + 1 else: position = 0 try: schema.addField(field) except ValueError: raise WidgetActionExecutionError('__name__', Invalid( u'Please select a field name that is not already used.' )) schema.moveField(field.__name__, position) notify(ObjectAddedEvent(field, context.schema)) notify(FieldAddedEvent(context, field)) IStatusMessage(self.request).addStatusMessage( _(u"Field added successfully."), type='info')
def add(self, field): context = self.context schema = IEditableSchema(context.schema) # move it after the last field that is not in a fieldset # or at top if there is no field yet in "default" fieldset ordered_fields = [name for (name, f) in sortedFields(context.schema)] default_fields = non_fieldset_fields(context.schema) if len(default_fields) > 0: position = ordered_fields.index(default_fields[-1]) + 1 else: position = 0 try: schema.addField(field) except ValueError: raise WidgetActionExecutionError('__name__', Invalid(u'Please select a field name that is not already used.')) schema.moveField(field.__name__, position) notify(ObjectAddedEvent(field, context.schema)) notify(FieldAddedEvent(context, field)) self.status = _(u"Field added successfully.")