Permite que outros dados do contribuinte sejam lidos e gravados
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Thu, 25 Apr 2013 11:30:33 +0000 (08:30 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Thu, 25 Apr 2013 11:30:33 +0000 (08:30 -0300)
contribuinte.py

index ca86c04..77ed8e9 100644 (file)
@@ -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)