From 203c178b5239625aac836f60c754b14e0875084e Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Thu, 25 Apr 2013 08:30:33 -0300 Subject: [PATCH] Permite que outros dados do contribuinte sejam lidos e gravados --- contribuinte.py | 70 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/contribuinte.py b/contribuinte.py index ca86c04..77ed8e9 100644 --- a/contribuinte.py +++ b/contribuinte.py @@ -23,6 +23,7 @@ class Contribuinte: raise RuntimeError("Invalid CPF") self.declaracao = self._find_id() self.dados = xml.dom.minidom.parse("aplicacao/dados/%s/%s.xml" % (self.cpf, self.cpf)) + self.contribuinte = self.dados.getElementsByTagName("contribuinte")[0] def _find_id(self): cpf = self._normalize_cpf(self.cpf) self.declaracoes = xml.dom.minidom.parse("aplicacao/dados/iddeclaracoes.xml") @@ -71,19 +72,68 @@ class Contribuinte: def save(self): self.dados.writexml(open("aplicacao/dados/%s/%s.xml" % (self.cpf, self.cpf), "w")) self.declaracoes.writexml(open("aplicacao/dados/iddeclaracoes.xml", "w")) - def get_nome(self): - if "nome" in self.declaracao.attributes.keys(): - return self.declaracao.attributes["nome"].nodeValue + def _get_attr(self, el, attr): + if attr in el.attributes.keys(): + return el.attributes[attr].nodeValue return None + def _set_attr(self, el, attr, val): + el.attributes[attr].nodeValue = val + def get_nome(self): + return self._get_attr(self.declaracao, "nome") def set_nome(self, nome): - self.declaracao.attributes["nome"].nodeValue = nome + self._set_attr(self.declaracao, "nome", nome) + def get_contribuinte(self, attr): + if attr == "nome": + return self.get_nome() + return self._get_attr(self.contribuinte, attr) + def set_contribuinte(self, attr, val): + if attr == "nome": + self.set_nome(val) + self._set_attr(self.contribuinte, attr, val) + +attributes = [ + "nome", + "dataNascimento", + "tituloEleitor", + "doencaDeficiencia", + "exterior", + "pais", + "cep", + "uf", + "cidade", + "municipio", + "tipoLogradouro", + "logradouro", + "numero", + "complemento", + "bairro", + "bairroExt", + "cepExt", + "logradouroExt", + "numeroExt", + "complementoExt", + "ocupacaoPrincipal", + "codigoExterior", + "ddd", + "telefone", + "naturezaOcupacao", +] if __name__ == '__main__': import sys contribuinte = Contribuinte(sys.argv[1]) - print contribuinte._normalize_cpf(sys.argv[1]) - print contribuinte._minimize_cpf(sys.argv[1]) - print contribuinte._validate_cpf(sys.argv[1]) - contribuinte.set_nome(sys.argv[2]) - print contribuinte.get_nome() - contribuinte.save() + print "Carregando CPF " + contribuinte._normalize_cpf(sys.argv[1]) + if contribuinte._validate_cpf(sys.argv[1]): + print "CPF valido" + else: + print "CPF invalido" + sys.exit(1) + if len(sys.argv) == 4: + print "Valor anterior: " + contribuinte.get_contribuinte(sys.argv[2]) + contribuinte.set_contribuinte(sys.argv[2], sys.argv[3]) + print "Valor atual: " + contribuinte.get_contribuinte(sys.argv[2]) + print "Salvando..." + contribuinte.save() + else: + for i in attributes: + print i + ": " + contribuinte.get_contribuinte(i) -- 2.20.1