#!/usr/bin/python # coding=utf-8 from gxml import String """ Country Code: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html """ COUNTRY_CODES = { 'AF':'AFGHANISTAN', 'AX':'ÅLAND ISLANDS', 'AL':'ALBANIA', 'DZ':'ALGERIA', 'AS':'AMERICAN SAMOA', 'AD':'ANDORRA', 'AO':'ANGOLA', 'AI':'ANGUILLA', 'AQ':'ANTARCTICA', 'AG':'ANTIGUA AND BARBUDA', 'AR':'ARGENTINA', 'AM':'ARMENIA', 'AW':'ARUBA', 'AU':'AUSTRALIA', 'AT':'AUSTRIA', 'AZ':'AZERBAIJAN', 'BS':'BAHAMAS', 'BH':'BAHRAIN', 'BD':'BANGLADESH', 'BB':'BARBADOS', 'BY':'BELARUS', 'BE':'BELGIUM', 'BZ':'BELIZE', 'BJ':'BENIN', 'BM':'BERMUDA', 'BT':'BHUTAN', 'BO':'BOLIVIA', 'BA':'BOSNIA AND HERZEGOVINA', 'BW':'BOTSWANA', 'BV':'BOUVET ISLAND', 'BR':'BRAZIL', 'IO':'BRITISH INDIAN OCEAN TERRITORY', 'BN':'BRUNEI DARUSSALAM', 'BG':'BULGARIA', 'BF':'BURKINA FASO', 'BI':'BURUNDI', 'KH':'CAMBODIA', 'CM':'CAMEROON', 'CA':'CANADA', 'CV':'CAPE VERDE', 'KY':'CAYMAN ISLANDS', 'CF':'CENTRAL AFRICAN REPUBLIC', 'TD':'CHAD', 'CL':'CHILE', 'CN':'CHINA', 'CX':'CHRISTMAS ISLAND', 'CC':'COCOS (KEELING) ISLANDS', 'CO':'COLOMBIA', 'KM':'COMOROS', 'CG':'CONGO', 'CD':'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 'CK':'COOK ISLANDS', 'CR':'COSTA RICA', 'CI':'COTE D\'IVOIRE', 'HR':'CROATIA', 'CU':'CUBA', 'CY':'CYPRUS', 'CZ':'CZECH REPUBLIC', 'DK':'DENMARK', 'DJ':'DJIBOUTI', 'DM':'DOMINICA', 'DO':'DOMINICAN REPUBLIC', 'EC':'ECUADOR', 'EG':'EGYPT', 'SV':'EL SALVADOR', 'GQ':'EQUATORIAL GUINEA', 'ER':'ERITREA', 'EE':'ESTONIA', 'ET':'ETHIOPIA', 'FK':'FALKLAND ISLANDS (MALVINAS)', 'FO':'FAROE ISLANDS', 'FJ':'FIJI', 'FI':'FINLAND', 'FR':'FRANCE', 'GF':'FRENCH GUIANA', 'PF':'FRENCH POLYNESIA', 'TF':'FRENCH SOUTHERN TERRITORIES', 'GA':'GABON', 'GM':'GAMBIA', 'GE':'GEORGIA', 'DE':'GERMANY', 'GH':'GHANA', 'GI':'GIBRALTAR', 'GR':'GREECE', 'GL':'GREENLAND', 'GD':'GRENADA', 'GP':'GUADELOUPE', 'GU':'GUAM', 'GT':'GUATEMALA', 'GG':'GUERNSEY', 'GN':'GUINEA', 'GW':'GUINEA-BISSAU', 'GY':'GUYANA', 'HT':'HAITI', 'HM':'HEARD ISLAND AND MCDONALD ISLANDS', 'VA':'HOLY SEE (VATICAN CITY STATE)', 'HN':'HONDURAS', 'HK':'HONG KONG', 'HU':'HUNGARY', 'IS':'ICELAND', 'IN':'INDIA', 'ID':'INDONESIA', 'IR':'IRAN, ISLAMIC REPUBLIC OF', 'IQ':'IRAQ', 'IE':'IRELAND', 'IM':'ISLE OF MAN', 'IL':'ISRAEL', 'IT':'ITALY', 'JM':'JAMAICA', 'JP':'JAPAN', 'JE':'JERSEY', 'JO':'JORDAN', 'KZ':'KAZAKHSTAN', 'KE':'KENYA', 'KI':'KIRIBATI', 'KP':'KOREA, DEMOCRATIC PEOPLE\'S REPUBLIC OF', 'KR':'KOREA, REPUBLIC OF', 'KW':'KUWAIT', 'KG':'KYRGYZSTAN', 'LA':'LAO PEOPLE\'S DEMOCRATIC REPUBLIC', 'LV':'LATVIA', 'LB':'LEBANON', 'LS':'LESOTHO', 'LR':'LIBERIA', 'LY':'LIBYAN ARAB JAMAHIRIYA', 'LI':'LIECHTENSTEIN', 'LT':'LITHUANIA', 'LU':'LUXEMBOURG', 'MO':'MACAO', 'MK':'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 'MG':'MADAGASCAR', 'MW':'MALAWI', 'MY':'MALAYSIA', 'MV':'MALDIVES', 'ML':'MALI', 'MT':'MALTA', 'MH':'MARSHALL ISLANDS', 'MQ':'MARTINIQUE', 'MR':'MAURITANIA', 'MU':'MAURITIUS', 'YT':'MAYOTTE', 'MX':'MEXICO', 'FM':'MICRONESIA, FEDERATED STATES OF', 'MD':'MOLDOVA, REPUBLIC OF', 'MC':'MONACO', 'MN':'MONGOLIA', 'ME':'MONTENEGRO', 'MS':'MONTSERRAT', 'MA':'MOROCCO', 'MZ':'MOZAMBIQUE', 'MM':'MYANMAR', 'NA':'NAMIBIA', 'NR':'NAURU', 'NP':'NEPAL', 'NL':'NETHERLANDS', 'AN':'NETHERLANDS ANTILLES', 'NC':'NEW CALEDONIA', 'NZ':'NEW ZEALAND', 'NI':'NICARAGUA', 'NE':'NIGER', 'NG':'NIGERIA', 'NU':'NIUE', 'NF':'NORFOLK ISLAND', 'MP':'NORTHERN MARIANA ISLANDS', 'NO':'NORWAY', 'OM':'OMAN', 'PK':'PAKISTAN', 'PW':'PALAU', 'PS':'PALESTINIAN TERRITORY, OCCUPIED', 'PA':'PANAMA', 'PG':'PAPUA NEW GUINEA', 'PY':'PARAGUAY', 'PE':'PERU', 'PH':'PHILIPPINES', 'PN':'PITCAIRN', 'PL':'POLAND', 'PT':'PORTUGAL', 'PR':'PUERTO RICO', 'QA':'QATAR', 'RE':'RÉUNION', 'RO':'ROMANIA', 'RU':'RUSSIAN FEDERATION', 'RW':'RWANDA', 'SH':'SAINT HELENA', 'KN':'SAINT KITTS AND NEVIS', 'LC':'SAINT LUCIA', 'PM':'SAINT PIERRE AND MIQUELON', 'VC':'SAINT VINCENT AND THE GRENADINES', 'WS':'SAMOA', 'SM':'SAN MARINO', 'ST':'SAO TOME AND PRINCIPE', 'SA':'SAUDI ARABIA', 'SN':'SENEGAL', 'RS':'SERBIA', 'SC':'SEYCHELLES', 'SL':'SIERRA LEONE', 'SG':'SINGAPORE', 'SK':'SLOVAKIA', 'SI':'SLOVENIA', 'SB':'SOLOMON ISLANDS', 'SO':'SOMALIA', 'ZA':'SOUTH AFRICA', 'GS':'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS', 'ES':'SPAIN', 'LK':'SRI LANKA', 'SD':'SUDAN', 'SR':'SURINAME', 'SJ':'SVALBARD AND JAN MAYEN', 'SZ':'SWAZILAND', 'SE':'SWEDEN', 'CH':'SWITZERLAND', 'SY':'SYRIAN ARAB REPUBLIC', 'TW':'TAIWAN, PROVINCE OF CHINA', 'TJ':'TAJIKISTAN', 'TZ':'TANZANIA, UNITED REPUBLIC OF', 'TH':'THAILAND', 'TL':'TIMOR-LESTE', 'TG':'TOGO', 'TK':'TOKELAU', 'TO':'TONGA', 'TT':'TRINIDAD AND TOBAGO', 'TN':'TUNISIA', 'TR':'TURKEY', 'TM':'TURKMENISTAN', 'TC':'TURKS AND CAICOS ISLANDS', 'TV':'TUVALU', 'UG':'UGANDA', 'UA':'UKRAINE', 'AE':'UNITED ARAB EMIRATES', 'GB':'UNITED KINGDOM', 'US':'UNITED STATES', 'UM':'UNITED STATES MINOR OUTLYING ISLANDS', 'UY':'URUGUAY', 'UZ':'UZBEKISTAN', 'VU':'VANUATU', 'VE':'VENEZUELA', 'VN':'VIET NAM', 'VG':'VIRGIN ISLANDS, BRITISH', 'VI':'VIRGIN ISLANDS, U.S.', 'WF':'WALLIS AND FUTUNA', 'EH':'WESTERN SAHARA', 'YE':'YEMEN', 'ZM':'ZAMBIA', 'ZW':'ZIMBABWE', } class CountryCode(String): from gchecky.gxml import apply_parent_validation @apply_parent_validation(String, "Country Code: ") def validate(self, data): if not COUNTRY_CODES.has_key(self.data2str(data)): return "Unknown country code." return True def data2str(self, data): return str(data).upper() def str2data(self, text): return COUNTRY_CODES.has_key(text.upper()) and text or None class PresentOrNot(String): from gchecky.gxml import apply_parent_validation @apply_parent_validation(String, "PresentOrNot: ") def validate(self, data): if (data is not None) and (data is not True): return "PresentOrNot could only be equal to True/None." return True def data2str(self, data): return None def str2data(self, text): return True