<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
body {
  margin: 5px 5px 5px 5px;
  background-color: #ffffff;
}
/* ========== Text Styles ========== */
hr { color: #000000}
body, table /* Normal text */
{
 font-size: 9pt;
 font-family: 'Courier New';
 font-style: normal;
 font-weight: normal;
 color: #000000;
 text-decoration: none;
}
span.rvts1 /* Heading */
{
 font-size: 10pt;
 font-family: 'Arial';
 font-weight: bold;
 color: #0000ff;
}
span.rvts2 /* Subheading */
{
 font-size: 10pt;
 font-family: 'Arial';
 font-weight: bold;
 color: #000080;
}
span.rvts3 /* Keywords */
{
 font-size: 10pt;
 font-family: 'Arial';
 font-style: italic;
 color: #800000;
}
a.rvts4, span.rvts4 /* Jump 1 */
{
 font-size: 10pt;
 font-family: 'Arial';
 color: #008000;
 text-decoration: underline;
}
a.rvts5, span.rvts5 /* Jump 2 */
{
 font-size: 10pt;
 font-family: 'Arial';
 color: #008000;
 text-decoration: underline;
}
span.rvts6
{
 font-size: 11pt;
 font-family: 'tahoma';
 font-weight: bold;
 color: #ffffff;
 background-color: #0000ff;
}
span.rvts7
{
 font-size: 11pt;
 font-family: 'tahoma';
}
span.rvts8
{
 font-family: 'arial';
}
span.rvts9
{
 font-size: 8pt;
 font-family: 'arial';
 font-style: italic;
 color: #c0c0c0;
}
a.rvts10, span.rvts10
{
 font-size: 8pt;
 font-family: 'arial';
 color: #0000ff;
 text-decoration: underline;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{
 text-align: left;
 text-indent: 0px;
 padding: 0px 0px 0px 0px;
 margin: 0px 0px 0px 0px;
}
.rvps1 /* Centered */
{
 text-align: center;
}
--></style>
</head>
<body>

<p>Hello Jesper,</p>
<p><br></p>
<p>That should be solved already. Look for z3c.widget.country.</p>
<p>svn://svn.zope.org/repos/main/z3c.widget/trunk/src/z3c/widget/country</p>
<p><br></p>
<p>Saturday, September 15, 2007, 6:08:19 PM, you wrote:</p>
<p><br></p>
<div><table border=0 cellpadding=1 cellspacing=2>
<tr valign=top>
<td width=12 style="background-color: #0000ff;">
<p><span class=rvts6>&gt;</span></p>
</td>
<td width=684 style="background-color: #ffffff;">
<p><span class=rvts7>Hello!</span></p>
<p><span class=rvts7>I'm trying to implement a DropdownWidget for my country list. In my app i'd like to have a dropdown menu where a user can choose a country (for my main content object, a job). My vocabulary is created from a list of strings, and stored in a local utility:&nbsp;</span></p>
<p><br></p>
<p><span class=rvts7>&nbsp;</span></p>
<p><span class=rvts7>SimpleVocabulary.fromValues( [u'AD', u'AE', 'AF', ...] )</span></p>
<p><br></p>
<p><span class=rvts7>&nbsp;</span></p>
<p><span class=rvts7>But in my dropdown widget i want to display the country name for each option too.. and not just the same value on both the value attribute and inside the element:&nbsp;</span></p>
<p><br></p>
<p><span class=rvts7>&lt;option value="AD"&gt;Andorra&lt;/option&gt;</span></p>
<p><br></p>
<p><span class=rvts7>So i send in a different vocabulary.. one that looks like this:&nbsp;</span></p>
<p><br></p>
<p><span class=rvts7>[(u'AD', u'Andorra'),...]</span></p>
<p><br></p>
<p><span class=rvts7>So i coded this:</span></p>
<p><br></p>
<p><span class=rvts7>---------------------------------</span></p>
<p><span class=rvts7>&nbsp;class CountryDropDown(DropdownWidget):</span></p>
<p><br></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp;def __init__(self, field, request):</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#This returns a dict: {'countrycode':'countryname'}&nbsp;</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;territories = request.locale.displayNames.territories</span></p>
<p><span class=rvts7>&nbsp;</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Invert the territories dict: keys=names, values=ccodes</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.territories = sorted(territories.items (), key=itemgetter(1))</span></p>
<p><br></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#not using this any longer..</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#voc = getUtility(IVocabularyFactory, u'Country codes')</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;voc = SimpleVocabulary.fromItems(self.territories)</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;super(CountryDropDown, self).__init__(field, voc, request)</span></p>
<p><span class=rvts7>&nbsp;</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp;def textForValue(self, term):</span></p>
<p><span class=rvts7>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return term.value</span></p>
<p><span class=rvts7>---------------------------------</span></p>
<p><br></p>
<p><span class=rvts8>But it seems like when i choose a country, e.g Andorra, the constraint fails. I think it is because my modified vocabulary that i sent in which it is now checking constraints against fails.&nbsp;</span></p>
<p><br></p>
<p><span class=rvts8>I want the constraints to be checked in my ordinary vocabulary but i want to use a different one when populating the dropdown.. any ideas?</span></p>
<p><br></p>
<p><br></p>
<p><span class=rvts8>----------</span></p>
<p><span class=rvts8>Instant Foo - Naturally Flavoured</span></p>
</td>
</tr>
</table>
</div>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><span class=rvts9>--&nbsp;</span></p>
<p><span class=rvts9>Best regards,</span></p>
<p><span class=rvts9>&nbsp;Adam &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><a class=rvts10 href="mailto:agroszer@gmail.com">mailto:agroszer@gmail.com</a></p>

</body></html>