1# coding=utf-8
2from __future__ import unicode_literals
3from .. import Provider as AddressProvider
4
5
6class Provider(AddressProvider):
7    city_suffixes = ('-des-Bois', '-les-Bains', '-la-Ville', '-Dessus',
8                     '-Dessous', ' am Rhein', ' am See', ' am Albis',
9                     ' an der Aare')
10    city_prefixes = ('Saint ', 'Sainte ', 'San ', 'Ober', 'Unter')
11    street_prefixes = ('rue', 'rue', 'chemin', 'avenue', 'boulevard')
12
13    address_formats = ("{{street_address}}\n{{postcode}} {{city}}",)
14
15    building_number_formats = ('%', '%#', '%#', '%#', '%##')
16
17    city_formats = ('{{last_name}}', '{{last_name}}', '{{last_name}}',
18                    '{{last_name}}', '{{last_name}}{{city_suffix}}',
19                    '{{last_name}}{{city_suffix}}',
20                    '{{last_name}}{{city_suffix}}',
21                    '{{last_name}}-près-{{last_name}}',
22                    '{{last_name}}-sur-{{last_name}}',
23                    '{{city_prefix}}{{last_name}}',
24                    '{{last_name}} ({{canton_code}})',)
25
26    street_address_formats = ('{{street_name}}',
27                              '{{street_name}} {{building_number}}',
28                              '{{street_name}} {{building_number}}',
29                              '{{street_name}} {{building_number}}',
30                              '{{street_name}} {{building_number}}',
31                              '{{street_name}} {{building_number}}',)
32    street_name_formats = ('{{street_prefix}} {{last_name}}',
33                           '{{street_prefix}} {{first_name}} {{last_name}}',
34                           '{{street_prefix}} de {{last_name}}',)
35
36    postcode_formats = ('1###', '2###', '3###', '4###', '5###', '6###', '7###',
37                        '8###', '9###')
38
39    cantons = (('AG', 'Argovie'), ('AI', 'Appenzell Rhodes-Intérieures'),
40               ('AR', 'Appenzell Rhodes-Extérieures'), ('BE', 'Berne'),
41               ('BL', 'Bâle-Campagne'), ('BS', 'Bâle-Ville'), ('FR',
42                                                               'Fribourg'),
43               ('GE', 'Genève'), ('GL', 'Glaris'), ('GR', 'Grisons'), ('JU',
44                                                                       'Jura'),
45               ('LU', 'Lucerne'), ('NE', 'Neuchâtel'), ('NW',
46                                                        'Nidwald'), ('OW',
47                                                                     'Obwald'),
48               ('SG', 'Saint-Gall'), ('SH', 'Schaffhouse'), ('SO', 'Soleure'),
49               ('SZ', 'Schwytz'), ('TG', 'Thurgovie'), ('TI',
50                                                        'Tessin'), ('UR',
51                                                                    'Uri'),
52               ('VD', 'Vaud'), ('VS', 'Valais'), ('ZG', 'Zoug'), ('ZH',
53                                                                  'Zurich'),)
54
55    countries = (
56        'Afghanistan', 'Afrique du sud', 'Albanie', 'Algérie', 'Allemagne',
57        'Andorre', 'Angola', 'Anguilla', 'Antarctique', 'Antigua et Barbuda',
58        'Antilles néerlandaises', 'Arabie saoudite', 'Argentine', 'Arménie',
59        'Aruba', 'Australie', 'Autriche', 'Azerbaïdjan', 'Bahamas', 'Bahrain',
60        'Bangladesh', 'Belgique', 'Belize', 'Benin', 'Bermudes (Les)',
61        'Bhoutan', 'Biélorussie', 'Bolivie', 'Bosnie-Herzégovine', 'Botswana',
62        'Bouvet (Îles)', 'Brunei', 'Brésil', 'Bulgarie', 'Burkina Faso',
63        'Burundi', 'Cambodge', 'Cameroun', 'Canada', 'Cap Vert',
64        'Cayman (Îles)', 'Chili', 'Chine (Rép. pop.)', 'Christmas (Île)',
65        'Chypre', 'Cocos (Îles)', 'Colombie', 'Comores', 'Cook (Îles)',
66        'Corée du Nord', 'Corée, Sud', 'Costa Rica', 'Croatie', 'Cuba',
67        'Côte d\'Ivoire', 'Danemark', 'Djibouti', 'Dominique', 'Égypte',
68        'El Salvador', 'Émirats arabes unis', 'Équateur', 'Érythrée',
69        'Espagne', 'Estonie', 'États-Unis', 'Ethiopie', 'Falkland (Île)',
70        'Fidji (République des)', 'Finlande', 'France',
71        'Féroé (Îles)', 'Gabon', 'Gambie', 'Ghana', 'Gibraltar', 'Grenade',
72        'Groenland', 'Grèce', 'Guadeloupe', 'Guam', 'Guatemala', 'Guinée',
73        'Guinée Equatoriale', 'Guinée-Bissau', 'Guyane', 'Guyane française',
74        'Géorgie', 'Géorgie du Sud et Sandwich du Sud (Îles)', 'Haïti',
75        'Heard et McDonald (Îles)', 'Honduras', 'Hong Kong', 'Hongrie',
76        'Îles Mineures Éloignées des États-Unis', 'Inde', 'Indonésie', 'Irak',
77        'Iran', 'Irlande', 'Islande', 'Israël', 'Italie', 'Jamaïque', 'Japon',
78        'Jordanie', 'Kazakhstan', 'Kenya', 'Kirghizistan', 'Kiribati',
79        'Koweit', 'La Barbad', 'Laos', 'Lesotho', 'Lettonie', 'Liban', 'Libye',
80        'Libéria', 'Liechtenstein', 'Lithuanie', 'Luxembourg', 'Macau',
81        'Macédoine', 'Madagascar', 'Malaisie', 'Malawi', 'Maldives (Îles)',
82        'Mali', 'Malte', 'Mariannes du Nord (Îles)', 'Maroc',
83        'Marshall (Îles)', 'Martinique', 'Maurice', 'Mauritanie', 'Mayotte',
84        'Mexique', 'Micronésie (États fédérés de)', 'Moldavie', 'Monaco',
85        'Mongolie', 'Montserrat', 'Mozambique', 'Myanmar', 'Namibie', 'Nauru',
86        'Nepal', 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Norfolk (Îles)',
87        'Norvège', 'Nouvelle Calédonie', 'Nouvelle-Zélande', 'Oman', 'Ouganda',
88        'Ouzbékistan', 'Pakistan', 'Palau', 'Panama',
89        'Papouasie-Nouvelle-Guinée', 'Paraguay', 'Pays-Bas', 'Philippines',
90        'Pitcairn (Îles)', 'Pologne', 'Polynésie française', 'Porto Rico',
91        'Portugal', 'Pérou', 'Qatar', 'Roumanie', 'Royaume-Uni', 'Russie',
92        'Rwanda', 'Rép. Dém. du Congo', 'République centrafricaine',
93        'République Dominicaine', 'République tchèque', 'Réunion (La)',
94        'Sahara Occidental', 'Saint Pierre et Miquelon',
95        'Saint Vincent et les Grenadines', 'Saint-Kitts et Nevis',
96        'Saint-Marin (Rép. de)', 'Sainte Hélène', 'Sainte Lucie', 'Samoa',
97        'Samoa', 'Seychelles', 'Sierra Leone', 'Singapour', 'Slovaquie',
98        'Slovénie', 'Somalie', 'Soudan', 'Sri Lanka', 'Suisse', 'Suriname',
99        'Suède', 'Svalbard et Jan Mayen (Îles)', 'Swaziland', 'Syrie',
100        'São Tomé et Príncipe (Rép.)', 'Sénégal', 'Tadjikistan', 'Taiwan',
101        'Tanzanie', 'Tchad', 'Territoire britannique de l\'océan Indien',
102        'Territoires français du sud', 'Thailande', 'Timor', 'Togo', 'Tokelau',
103        'Tonga', 'Trinité et Tobago', 'Tunisie', 'Turkménistan',
104        'Turks et Caïques (Îles)', 'Turquie', 'Tuvalu', 'Ukraine', 'Uruguay',
105        'Vanuatu', 'Vatican (Etat du)', 'Venezuela', 'Vierges (Îles)',
106        'Vierges britanniques (Îles)', 'Vietnam', 'Wallis et Futuna (Îles)',
107        'Yemen', 'Yougoslavie', 'Zambie', 'Zaïre', 'Zimbabwe',)
108
109    def street_prefix(self):
110        """
111        :example 'rue'
112        """
113        return self.random_element(self.street_prefixes)
114
115    def city_prefix(self):
116        """
117        :example 'rue'
118        """
119        return self.random_element(self.city_prefixes)
120
121    def canton(self):
122        """
123        Randomly returns a swiss canton ('Abbreviated' , 'Name').
124        :example ('VD' . 'Vaud')
125        """
126        return self.random_element(self.cantons)
127
128    def canton_name(self):
129        """
130        Randomly returns a Swiss canton name.
131        :example 'Vaud'
132        """
133        return self.canton()[1]
134
135    def canton_code(self):
136        """
137        Randomly returns a Swiss canton code.
138        :example 'VD'
139        """
140        return self.canton()[0]
141