<br><br><div><span class="gmail_quote">On 9/17/07, <b class="gmail_sendername">Hermann Himmelbauer</b> <<a href="mailto:dusty@qwer.tk">dusty@qwer.tk</a>> wrote:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
Am Samstag, 15. September 2007 18:08 schrieb Jesper Petersen:<br>> Hello!I'm trying to implement a DropdownWidget for my country list. In my<br>> app i'd like to have a dropdown menu where a user can choose a country (for
<br>> my main content object, a job). My vocabulary is created from a list of<br>> strings, and stored in a local utility:<br>><br>><br>> SimpleVocabulary.fromValues( [u'AD', u'AE', 'AF', ...] )
<br>><br>><br>> But in my dropdown widget i want to display the country name for each<br>> option too.. and not just the same value on both the value attribute and<br>> inside the element:<br>><br>> <option value="AD">Andorra</option>
<br><br>Perhaps I misunderstand your question, but AFAIK vocabulary support this<br>scenario. In my application, I also have a country drop-down that is in my<br>case filled from a relational database. The vocabulary looks like this:
<br><br>def landVocabulary(obj):<br> """Get ktoids and ktonrs from session"""<br> session = zalchemy.getSession()<br> laender = session.query(Land)<br> laender_terms = []<br> for n, land in enumerate(laender):
<br> laender_terms.append(vocabulary.SimpleVocabulary.\<br> createTerm(land.landid,<br> n,<br> <a href="http://land.name">
land.name</a>))<br> return vocabulary.SimpleVocabulary(laender_terms)<br><br># Make function a vocabulary factory<br>alsoProvides(landVocabulary, IVocabularyFactory)<br><br>and in my configuration:<br><br> <utility
<br> component=".utils.landVocabulary"<br> name="landVocabulary"<br> /><br><br>Now I can use this vocabulary from any interface.<br><br>Best regards,<br>Hermann<br></blockquote>
</div><div><br class="khtml-block-placeholder"></div>Hello Hermann!<div style="">Since the country names depend on the locale I don't want to save the countryname on my object, only the country code. Hence, my utility contains only country codes, ['AD', 'AF', ...].
</div><div style=""><br style=""></div><div style="">If, in my DropdownWidget, I provide a vocabulary on the form [('AD', 'Andorra'), ('Af', 'Afghanistan'), ...] instead of the one in my utility, the constraint will obviously fail when the form is submitted ('AD' does not equal ('AD,'Andorra)).
</div><div style=""><br style=""></div><div style="">In my case you can say that the countrynames are "dynamic" and merealy a UI thing, whereas in your app you are retrieving a constant list of countrynames, right?
</div><div style="">Perhaps this should remove any misunderstandings you might have about my earlier post. (This problem _can_ be solved with z3c.widget but it'd be nice to get this working on my own)</div><div style="">
<br style=""></div><div style="">My current solution is a quick hack: I save a list in DropdownWidget.territories on the form [('AD', 'Andorra'), ('Af', 'Afghanistan'), ...] and then tal:repeat over it setting the <option>-value attribute to countrycode and put countryname inside <option>..</option>.
</div><div style=""><br style=""></div><div style="">Regards</div><span class="sg"><div style=""><font class="Apple-style-span" color="#888888">/Jesper</font></div></span><br>