[Grok-dev] Values from another document before rendering

Kathy Manwaring kathy at perfectnotes.com.au
Fri Feb 12 06:54:13 EST 2010


Souheil,

There may be a number of 'site' entries:
app['details'][site_Id]
It determines which of the branches controls the values returned.

Is it possible?

Kathy

P.S. Sorry - bed time on Fri night. I will look at this tomorrow - hoping
someone can help me. :-)

> Using this code, the context given to the vocabulary will be the
> context on which the form is called.
> You won't be able to access the form object from there.
>
> What is this "site" attribute, and what impact does it have on the
> vocabulary ?
>
> 2010/2/12 Kathy Manwaring <kathy at perfectnotes.com.au>:
>> OK - here is what I need to have happen:
>>
>> interface:
>>    country = schema.Choice(
>>        title=u'Country',
>>        description=u"The seller's Country.",
>>        vocabulary=u'CountryChoices',
>>        required=True
>>    )
>>
>> vocabulary:
>> class CountryChoicesSource(grok.GlobalUtility):
>>    grok.implements(schema.interfaces.IVocabularyFactory)
>>    grok.name('CountryChoices')
>>
>>    def __call__(self, context):
>>        #get the entries
>>        #return a vocabulary of the types
>>        terms = self.get_country_choices(context)
>>        return SimpleVocabulary(terms)
>>
>>    def get_country_choices(self, context):
>>        print 'context:',
>>        print context #this is a grok.Container
>>        print 'name:',
>>        print context.__name__ # this gives the form name as expected
>>        print 'hasattr?',
>>        if hasattr(context, 'site'): # and context.site is not None:
>>            print 'site:',
>>            print context.site
>>        else:
>>            print 'no' #prints this line
>>        list_Of_Vals = []
>>        vals = grok.getSite()['eBayCountries']
>>        item_List = vals.keys()
>>        if item_List is not None:
>>            for key in item_List:
>>                value = vals[key]
>>                term = value.desc
>>                val = key.encode('utf-8')
>>                val += u' - ' + term
>>              
>>  list_Of_Vals.append(UnicodeVocabulary.createUnicodeTerm(val,
>>                                                                      
>>  val,
>>                                                                      
>>  val))
>>        return list_Of_Vals
>>
>> My issue is that my context above does not have the attribute that I
>> need
>> it to have - I need to know what the site value on the form is - but it
>> does not seem to be present.
>>
>> Thanks,
>>
>> Kathy



More information about the Grok-dev mailing list