[Grok-dev] Entity Relations and Forms

Martijn Faassen faassen at startifact.com
Fri Aug 22 20:57:50 EDT 2008


Hey,

My apologies that nobody replied to you for so long. We organize a 
"reply group" that makes sure every posting to the list (except spam!) 
gets a reply!

rmoskal wrote:
> I'm new to Grok (and Zope 3). 

Welcome!

> ... I could accomplish the same thing by creating a
> vocabulary out the my container full of Contributors.
> 
> Which method is preferable? What's the common pattern for doing something
> like this?

I think the best library to look at is zc.sourcefactory:

http://pypi.python.org/pypi/zc.sourcefactory/

you can include this as a dependency in your project's setup.py. Perhaps 
you may want to lock it down to a particular version in a [versions] 
list in buildout.cfg as well.

You'd use it something like this:

class IFoo(Interface):
     contributor = schema.Choice(
         title=u'object',
         required=True,
         source=ContributorSource())

Off the top of my head, your ContributorSource could be implemented 
something like this:

class ContributorSource(BasicSourceFactory):
    def getValues(self):
        # assuming 'contributors' is a subfolder in your site...
        return grok.getSite()['contributors'].values()

    def getTitle(self, value):
        return value.name_attributge_of_contributor

A late answer, but I hope this helps!

Regards,

Martijn



More information about the Grok-dev mailing list