from dataclasses import dataclass

from .pais import Pais
from .departamento import Departamento
from .municipio import Municipio
from facho.fe.data.dian import codelist

@dataclass
class Lugar:
    pais: Pais
    departamento: Departamento
    municipio: Municipio
    idioma: str = 'es'

    def __post_init__(self):
        if self.idioma not in codelist.IdiomaISO6391:
            raise ValueError("idioma [%s] not found" % (self.code))
        codelist.IdiomaISO6391[self.idioma]['iso-639-1']

    def apply(self, fragment, root):
        fragment.set_attributes(root,
                                Pais=self.pais.code,
                                DepartamentoEstado=self.departamento.code,
                                MunicipioCiudad=self.municipio.code,
                                Idioma=self.idioma)