def __call__(self): context = aq_inner(self.context) fieldname = self.request.get('fieldname') portal_type = self.request.get('portal_type') fti = zope.component.getUtility(IDexterityFTI, name=portal_type) schema = fti.lookupSchema() field = schema.get(fieldname) if field is None: # The field might be defined in a behavior schema behavior_assignable = IBehaviorAssignable(context, None) for behavior_reg in behavior_assignable.enumerateBehaviors(): behavior_schema = IFormFieldProvider(behavior_reg.interface, None) if behavior_schema is not None: field = behavior_schema.get(fieldname) if field is not None: break vname = field.vocabularyName factory = zope.component.getUtility(IVocabularyFactory, vname) tree = factory(context) # XXX: "selected" is not set in input.pt, so does it make sense to check # for it here? Only if this json view is called elsewhere, which # doesn't seem to be the case... selected = self.request.get('selected', '').split('|') return JSONWriter().write(dict2dynatree(tree, selected, True, False))
def __call__(self): context = aq_inner(self.context) fieldname = self.request.get('fieldname') portal_type = self.request.get('portal_type') fti = zope.component.getUtility(IDexterityFTI, name=portal_type) schema = fti.lookupSchema() field = schema.get(fieldname) if field is None: for behaviorname in fti.behaviors: behavior = resolve(behaviorname) field = behavior.get(fieldname.split('.')[1]) if field is not None: break if IList.providedBy(field) or ISet.providedBy(field): vname = field.value_type.vocabularyName else: vname = field.vocabularyName factory = zope.component.getUtility(IVocabularyFactory, vname) tree = factory(context) leafsOnly = getattr(tree, 'leafsOnly', True) tree = dict2dynatree( self.context, tree, [], # selected not needed here, this is done at js side leafsOnly, False ) return json.dumps(tree)
def __call__(self): fieldname = self.request.get('fieldname') field = self.context.Schema()[fieldname] tree = lookupVocabulary(self.context, field) selected = self.request.get('selected', []).split('|') return JSONWriter().write(dict2dynatree(tree, selected, field.widget.leafsOnly, field.widget.showKey))
def __call__(self): fieldname = self.request.get('fieldname') field = self.context.Schema()[fieldname] tree = lookupVocabulary(self.context, field) selected = self.request.get('selected', '').split('|') return JSONWriter().write( dict2dynatree(tree, selected, field.widget.leafsOnly, field.widget.showKey))
def __call__(self): fieldname = self.request.get('fieldname') #field = self.context.schema[fieldname] # TODO: This is hardcoded, Incredibly stupid, needs to change. atv = NamedVocabulary('staralliance.productcategories') tree = atv.getVocabularyDict(self.context) selected = self.request.get('selected', []).split('|') return JSONWriter().write(dict2dynatree(tree, selected, True, False))
def __call__(self): fieldname = self.request.get('fieldname') field = self.context.Schema()[fieldname] tree = lookupVocabulary(self.context, field) selected = self.request.get('selected', '').split('|') return json.dumps( dict2dynatree( self.context, tree, selected, field.widget.leafsOnly, field.widget.showKey ) )