예제 #1
0
    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))
예제 #2
0
    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)
예제 #3
0
 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))
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
 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
         )
     )