# coding=utf-8
from __future__ import unicode_literals

from random import randint

from .. import Provider as AddressProvider


class Provider(AddressProvider):
    address_formats = ['{{street_address}}, {{city}}, {{postcode}}']
    building_number_formats = ['#', '##', '###']
    city_formats = ['{{city_prefix}} {{first_name}}']
    street_address_formats = ['{{street_name}}, {{building_number}}']
    street_name_formats = ['{{street_prefix}} {{last_name}}',
                           '{{last_name}} {{street_suffix}}']

    city_prefixes = ['місто', 'село', 'селище', 'хутір']
    countries = [
        'Австралія', 'Австрія', 'Азербайджан', 'Албанія', 'Алжир', 'Ангола',
        'Андорра', 'Антигуа і Барбуда', 'Аргентина', 'Афганістан',
        'Багамські Острови', 'Бангладеш', 'Барбадос', 'Бахрейн', 'Беліз',
        'Бельгія', 'Бенін', 'Білорусь', 'Болгарія', 'Болівія',
        'Боснія і Герцеговина', 'Ботсвана', 'Бразилія', 'Бруней',
        'Буркіна-Фасо', 'Бурунді', 'Бутан', 'Вануату', 'Ватикан',
        'Велика Британія', 'Венесуела', 'В\'єтнам', 'Вірменія', 'Габон',
        'Гаїті', 'Гаяна', 'Гамбія', 'Гана', 'Гватемала', 'Гвінея',
        'Гвінея-Бісау', 'Гондурас', 'Гренада', 'Греція', 'Грузія', 'Данія',
        'Джибуті', 'Домініка', 'Домініканська Республіка', 'Еквадор',
        'Екваторіальна Гвінея', 'Еритрея', 'Естонія', 'Ефіопія', 'Єгипет',
        'Ємен', 'Замбія', 'Західна Сахара', 'Зімбабве', 'Ізраїль', 'Індія',
        'Індонезія', 'Ірак', 'Іран', 'Ірландія', 'Ісландія', 'Іспанія',
        'Італія', 'Йорданія', 'Кабо-Верде', 'Казахстан', 'Камбоджа', 'Камерун',
        'Канада', 'Катар', 'Кенія', 'Киргизстан', 'КНР', 'Кіпр', 'Кірибаті',
        'Колумбія', 'Коморські Острови', 'Конго', 'ДР Конго', 'Південна Корея',
        'Північна Корея', 'Косово', 'Коста-Рика', 'Кот-д\'Івуар', 'Куба',
        'Кувейт', 'Лаос', 'Латвія', 'Лесото', 'Литва', 'Ліберія', 'Ліван',
        'Лівія', 'Ліхтенштейн', 'Люксембург', 'Маврикій', 'Мавританія',
        'Мадагаскар', 'Республіка Македонія', 'Малаві', 'Малайзія', 'Малі',
        'Мальдіви', 'Мальта', 'Марокко', 'Маршаллові Острови', 'Мексика',
        'Федеративні Штати Мікронезії', 'Мозамбік', 'Молдова', 'Монако',
        'Монголія', 'М\'янма', 'Намібія', 'Науру', 'Непал', 'Нігер', 'Нігерія',
        'Нідерланди', 'Нікарагуа', 'Німеччина', 'Нова Зеландія', 'Норвегія',
        'ОАЕ', 'Оман', 'Пакистан', 'Палау', 'Палестинська держава', 'Панама',
        'Папуа Нова Гвінея', 'ПАР', 'Парагвай', 'Перу', 'Південний Судан',
        'Польща', 'Португалія', 'Росія', 'Руанда', 'Румунія', 'Сальвадор',
        'Самоа', 'Сан-Марино', 'Сан-Томе і Принсіпі', 'Саудівська Аравія',
        'Свазіленд', 'Сейшельські Острови', 'Сенегал',
        'Сент-Вінсент і Гренадини', 'Сент-Кіттс і Невіс', 'Сент-Люсія',
        'Сербія', 'Сінгапур', 'Сирія', 'Словаччина', 'Словенія',
        'Соломонові Острови', 'Сомалі', 'Судан', 'Суринам', 'Східний Тимор',
        'США', 'Сьєрра-Леоне', 'Таджикистан', 'Таїланд', 'Тайвань', 'Танзанія',
        'Того', 'Тонга', 'Тринідад і Тобаго', 'Тувалу', 'Туніс', 'Туреччина',
        'Туркменістан', 'Уганда', 'Угорщина', 'Узбекистан', 'Україна',
        'Уругвай', 'Фіджі', 'Філіппіни', 'Фінляндія', 'Франція', 'Хорватія',
        'Центральноафриканська Республіка', 'Чад', 'Чехія', 'Чилі',
        'Чорногорія', 'Швейцарія', 'Швеція', 'Шрі-Ланка', 'Ямайка', 'Японія'
    ]
    street_prefixes = [
        'вулиця', 'проспект', 'майдан', 'набережна', 'бульвар', 'провулок'
    ]
    street_suffixes = ['узвіз']

    @classmethod
    def city_prefix(cls):
        return cls.random_element(cls.city_prefixes)

    @classmethod
    def postcode(cls):
        """The code consists of five digits (01000-99999)"""
        return '{}{}'.format(randint(0, 10), randint(1000, 10000))

    @classmethod
    def street_prefix(cls):
        return cls.random_element(cls.street_prefixes)
