Browse Source

Adição de configs para servidores de aplicação e web

stable/2.0
Sesostris Vieira 11 years ago
parent
commit
37ed58d899
  1. 17
      etc/apache/sites-available/sigi.erb
  2. 4
      etc/cron.daily/sigi
  3. 3
      etc/cron.hourly/sigi
  4. BIN
      etc/data/ibge/geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/dtb_05_05_2009.zip
  5. 56
      etc/data/ibge/leiame.txt
  6. 40
      etc/data/ibge/sigi-import-ibge-2009.py
  7. 179
      etc/data/ibge/sigi-import-ibge-2009.sh
  8. 137
      etc/data/ibge/sigi_ibge_import.mesorregiao.csv
  9. 558
      etc/data/ibge/sigi_ibge_import.microrregiao.csv
  10. 5565
      etc/data/ibge/sigi_ibge_import.municipio.csv
  11. 5
      etc/data/ibge/sigi_ibge_import.regiao.csv
  12. 27
      etc/data/ibge/sigi_ibge_import.uf.csv
  13. 5565
      etc/data/ibge_pop2008.csv
  14. 441
      etc/migracao/migra.py
  15. 31
      etc/nginx/sites-available/sigi.vhost
  16. 5
      etc/supervisor/conf.d/sigi.conf

17
etc/apache/sites-available/sigi.erb

@ -0,0 +1,17 @@
NameVirtualHost 10.1.2.126:80
<VirtualHost 10.1.2.126:80>
ServerName sigi01h.interlegis.leg.br
WSGIScriptAlias /sigi /var/aplicacoes/sigi/sigi/wsgi.py
Alias /sigi/static /var/aplicacoes/sigi/static
Alias /sigi/sigiStatic /var/aplicacoes/sigi/sigiStatic
ErrorLog /var/log/apache2/sigi-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/sigi-access.log combined
ServerSignature Off
</VirtualHost>

4
etc/cron.daily/sigi

@ -0,0 +1,4 @@
#!/bin/bash
cd /var/aplicacoes/django/sigi/sigi/
python manage.py atualiza_uso_servico -v 0
python manage.py clearsessions -v 0

3
etc/cron.hourly/sigi

@ -0,0 +1,3 @@
#!/bin/bash
cd /var/aplicacoes/django/sigi/sigi
python manage.py gera_map_data

BIN
etc/data/ibge/geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/dtb_05_05_2009.zip

Binary file not shown.

56
etc/data/ibge/leiame.txt

@ -0,0 +1,56 @@
21/05/2012
Procedimento para importação de dados públicos obtidos do IBGE.
- Tabela de Municípios:
Disponível desde 1940, foi atualizada a cada década entre os anos
1940 e 2000 e depois anualmente até a última atualização em 2009 (este
parágrafo foi escrito em maio de 2012).
A atualização mais recente, portanto, é do ano de 2009. Considerando
que o formato de publicação tem variado bastante, o roteiro abaixo é
específico para os dados referentes ao ano 2009.
- Procedimentos e instruções:
1. Questões óbvias como configuração de PROXY são omitidas por não serem
relacionadas ao procedimento.
2. O diretório-base de referência no projeto é o raiz do projeto conforme
foi exportado do repositório, referenciado por $
3. O URL-base de obtenção dos dados é:
ftp://geoftp.ibge.gov.br
4. Tornar o diretório corrente para:
$/SIGI/trunk/etc/data/ibge
5. Baixar o arquivo de 2009. O comando executado com sucesso considerando a
configuração da intranet do Interlegis na data corrente - maio de 2012 - é:
wget -r --no-proxy ftp://geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/ organizacao_territorial/divisao_territorial/2009
(o comando acima criará o caminho local "geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/")
6. Torne corrente o caminho onde o arquivo de 2009 está baixado:
cd geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009
7. Expanda o arquivo obtido:
unzip dtb_05_05_2009.zip
8. Converta o arquivo expandido para o formato "CSV":
xls2csv DTB_05_05_2009.xls > DTB_05_05_2009.csv
9. Volte para o diretório-base do IBGE:
$/SIGI/trunk/etc/data/ibge
10. Execute o script de importação, cuja documentação dos processos encontra-se
nos fontes:
sigi-import-ibge-2009.sh geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/DTB_05_05_2009.csv

40
etc/data/ibge/sigi-import-ibge-2009.py

@ -0,0 +1,40 @@
import sys, csv
"""
"""
_root_dict = None
def getUFdict( root, ufid ):
return( root[ ufid ] )
def getCidadesDict( macrodict, microid ):
if macrodict = None:
return( None )
microdoct = macrodict[ '__children' ]
if microdict = None:
microdict = {}
macrodict[ '__children' ] = microdict
def main( ):
argc = len( sys.argv )
arquivo = open( 'geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial/2009/DTB_05_05_2009.csv', 'r' )
# despreza o cabecalho
arquivo.readline( )
lnum=0
csv_reader = csv.reader( arquivo, delimiter=',', quotechar='"' )
for registro in csv_reader:
if uf[ registro[ 0 ] ] = None:
uf[ registro[ 0 ] ] = {}
uf[ registro[ 0 ] ][ 'nome' ] = registro[ 1 ]
uf[ registro[ 0 ] ][ 'macrorregioes' ] = {}
# print "lnum: %s - %s" % ( lnum, registro )
lnum = lnum + 1
if lnum >= 10:
break
if __name__ = "__main__":
main( )
dumpdicts( )

179
etc/data/ibge/sigi-import-ibge-2009.sh

@ -0,0 +1,179 @@
#!/bin/sh
arquivo_csv=""
limite=0
# Caso a variavel _DEBUG nao tenha sido preparada externamente,
# assumir que o default é sem DEBUG
if [ -z "${_DEBUG}" ]
then
_DEBUG="0"
fi
# Default verboso
if [ -z "${_VERBOSE}" ]
then
_VERBOSE="1"
fi
PrintDebug( )
{
# para a mensagem ser mostrada, _DEBUG deve ser configurada
# e o valor deve ser diferente de "0"
if [ -n "${_DEBUG}" -a "${_DEBUG}" -ne "0" ]
then
echo "$@"
fi
}
PrintHelp( )
{
PrintMessage `basename "${0}"` " -- importa tabelas de cidades do IBGE"
PrintMessage "Opcoes aceitas:"
PrintMessage " arquivo_csv=[caminho]"
PrintMessage " informa o caminho para o arquivo no formato 2009"
PrintMessage " limite=N"
PrintMessage " determina a quantidade maxima de registros de entrada processados"
PrintMessage " _VERBOSE=[verbose]"
PrintMessage " 0 para nao mostrar mensagens, 1 para mostrar"
PrintMessage " _DEBUG=[debug]"
PrintMessage " 0 para nao mostrar mensagens de depuracao, 1 para mostrar"
}
PrintMessage( )
{
# para a mensagem NAO ser mostrada, _VERBOSE deve ser configurada
# e o valor deve ser "0"
if [ -z "${_VERBOSE}" -o "${_VERBOSE}" -ne "0" ]
then
echo "$@"
fi
}
# Processar os argumentos passados pela linha de comando. Devem estar no
# formato de atribuicao de variaveis em Shell, ou entao devem ser atribuidos
# e exportados pelo processo chamador. Caso na expressao [var]=[valor] exista
# separadores, todo o argumento deve estar entre aspas: "[var]=[valor]"
while [ "${#}" -gt 0 ]
do
if echo "${1}" | grep "=" 2>&1 > /dev/null
then
PrintDebug "Argumento de configuracao: \"${1}\""
eval "${1}"
else
PrintDebug "Argumento desconhecido: \"${1}\""
PrintHelp
exit 1
fi
shift
done
####################################
# Secao de validacao de parametros
if [ -z "${arquivo_csv}" ]
then
PrintMessage "ERRO: informe o arquivo de importacao."
PrintHelp
exit 2
fi
if [ ! -f "${arquivo_csv}" ]
then
PrintMessage "ERRO: o arquivo de importacao nao existe ou nao pode ser acessado (\"${arquivo_csv}\")."
PrintHelp
exit 3
fi
if [ ! -r "${arquivo_csv}" ]
then
PrintMessage "ERRO: o arquivo de importacao nao pode ser lido (\"${arquivo_csv}\")."
PrintHelp
exit 4
fi
# filtrar o arquivo original para area de trabalho, por
# UF, Mesorregiao, Microrregiao, Municipio e depois executar
# os scripts Python para atualização do banco.
# O formato do arquivo obtido do IBGE e' CSV com as seguintes colunas:
#
# 1: "UF"
# 2: "Nome_UF"
# 3: "MesorregiãoGeográfica"
# 4: "MesorregiãoGeográfica_Nome"
# 5: "MicrorregiãoGeográfica"
# 6: "MicrorregiãoGeográfica_Nome"
# 7: "Município"
# 8: "Município_Nome"
# 9: "Distrito"
# 10: "Distrito_Nome"
# 11: "Subdistrito"
# 12: "Subdistrito_Nome"
nome_base=sigi_ibge_import
niveis="uf mesorregiao microrregiao municipio"
for nivel in $niveis
do
eval "arquivo_${nivel}=/tmp/${nome_base}.${nivel}.csv"
done
exec 3< "${arquivo_csv}" 4> "${arquivo_uf}" 5> "${arquivo_mesorregiao}" 6> "${arquivo_microrregiao}" 7> "${arquivo_municipio}"
lnum=0
PrintMessage "Iniciando leitura dos dados..."
read linha <&3
while read linha <&3
do
lnum=$(($lnum + 1))
if [ $(($lnum % 100)) -eq 0 ]
then
PrintMessage -n "${lnum} "
fi
# extrair o codigo da regiao a partir do codigo da UF
# e criar o novo campo 1 com o codigo da regiao
codregiao=`echo "$linha" | cut -b2-2`
linha="\"${codregiao}\",$linha"
# UFs: cod_regiao,cod_uf,nome_uf
# -- a sigla por enquanto devera ser adicionada manualmente
echo "$linha" | cut -s -d, -f1,2,3 >&4
# Mesorregiao: cod_regiao,cod_uf,cod_mesorregiao,nome_mesorregiao
echo "$linha" | cut -s -d, -f1,2,4,5 >&5
# Microrregiao: cod_regiao,cod_uf,cod_mesorregiao,cod_microrregiao,nome_microrregiao
echo "$linha" | cut -s -d, -f1,2,4,6,7 >&6
# Municipio: cod_regiao,cod_uf,cod_mesorregiao,cod_microrregiao,cod_municipio,nome_municipio
# 7> "${arquivo_municipio}"
echo "$linha" | cut -s -d, -f1,2,4,6,8,9 >&7
if [ -n "${limite}" -a "${limite}" -gt 0 -a "${lnum}" -ge "${limite}" ]
then
break
fi
done
PrintMessage "\n${lnum} registros processados"
# fecha os descritores de saida
exec 3<&- 4>&- 5>&- 6>&- 7>&-
for nivel in $niveis
do
eval "arq_in=/tmp/${nome_base}.${nivel}.csv"
eval "arq_out=/tmp/${nome_base}.${nivel}.csv.tmp"
sort < $arq_in > $arq_out
uniq < $arq_out > $arq_in
rm $arq_out
done
ifs="$IFS"
IFS="
"
for l in `wc -l /tmp/${nome_base}*`
do
PrintDebug $l
done
IFS="$ifs"
# Processar arquivos: INSERT ou UPDATE no banco

137
etc/data/ibge/sigi_ibge_import.mesorregiao.csv

@ -0,0 +1,137 @@
"1","11","1101","Madeira-Guaporé"
"1","11","1102","Leste Rondoniense"
"1","12","1201","Vale do Juruá"
"1","12","1202","Vale do Acre"
"1","13","1301","Norte Amazonense"
"1","13","1302","Sudoeste Amazonense"
"1","13","1303","Centro Amazonense"
"1","13","1304","Sul Amazonense"
"1","14","1401","Norte de Roraima"
"1","14","1402","Sul de Roraima"
"1","15","1501","Baixo Amazonas"
"1","15","1502","Marajó"
"1","15","1503","Metropolitana de Belém"
"1","15","1504","Nordeste Paraense"
"1","15","1505","Sudoeste Paraense"
"1","15","1506","Sudeste Paraense"
"1","16","1601","Norte do Amapá"
"1","16","1602","Sul do Amapá"
"1","17","1701","Ocidental do Tocantins"
"1","17","1702","Oriental do Tocantins"
"2","21","2101","Norte Maranhense"
"2","21","2102","Oeste Maranhense"
"2","21","2103","Centro Maranhense"
"2","21","2104","Leste Maranhense"
"2","21","2105","Sul Maranhense"
"2","22","2201","Norte Piauiense"
"2","22","2202","Centro-Norte Piauiense"
"2","22","2203","Sudoeste Piauiense"
"2","22","2204","Sudeste Piauiense"
"2","23","2301","Noroeste Cearense"
"2","23","2302","Norte Cearense"
"2","23","2303","Metropolitana de Fortaleza"
"2","23","2304","Sertões Cearenses"
"2","23","2305","Jaguaribe"
"2","23","2306","Centro-Sul Cearense"
"2","23","2307","Sul Cearense"
"2","24","2401","Oeste Potiguar"
"2","24","2402","Central Potiguar"
"2","24","2403","Agreste Potiguar"
"2","24","2404","Leste Potiguar"
"2","25","2501","Sertão Paraibano"
"2","25","2502","Borborema"
"2","25","2503","Agreste Paraibano"
"2","25","2504","Mata Paraibana"
"2","26","2601","Sertão Pernambucano"
"2","26","2602","São Francisco Pernambucano"
"2","26","2603","Agreste Pernambucano"
"2","26","2604","Mata Pernambucana"
"2","26","2605","Metropolitana de Recife"
"2","27","2701","Sertão Alagoano"
"2","27","2702","Agreste Alagoano"
"2","27","2703","Leste Alagoano"
"2","28","2801","Sertão Sergipano"
"2","28","2802","Agreste Sergipano"
"2","28","2803","Leste Sergipano"
"2","29","2901","Extremo Oeste Baiano"
"2","29","2902","Vale São-Franciscano da Bahia"
"2","29","2903","Centro Norte Baiano"
"2","29","2904","Nordeste Baiano"
"2","29","2905","Metropolitana de Salvador"
"2","29","2906","Centro Sul Baiano"
"2","29","2907","Sul Baiano"
"3","31","3101","Noroeste de Minas"
"3","31","3102","Norte de Minas"
"3","31","3103","Jequitinhonha"
"3","31","3104","Vale do Mucuri"
"3","31","3105","Triângulo Mineiro/Alto Paranaíba"
"3","31","3106","Central Mineira"
"3","31","3107","Metropolitana de Belo Horizonte"
"3","31","3108","Vale do Rio Doce"
"3","31","3109","Oeste de Minas"
"3","31","3110","Sul/Sudoeste de Minas"
"3","31","3111","Campo das Vertentes"
"3","31","3112","Zona da Mata"
"3","32","3201","Noroeste Espírito-santense"
"3","32","3202","Litoral Norte Espírito-santense"
"3","32","3203","Central Espírito-santense"
"3","32","3204","Sul Espírito-santense"
"3","33","3301","Noroeste Fluminense"
"3","33","3302","Norte Fluminense"
"3","33","3303","Centro Fluminense"
"3","33","3304","Baixadas"
"3","33","3305","Sul Fluminense"
"3","33","3306","Metropolitana do Rio de Janeiro"
"3","35","3501","São José do Rio Preto"
"3","35","3502","Ribeirão Preto"
"3","35","3503","Araçatuba"
"3","35","3504","Bauru"
"3","35","3505","Araraquara"
"3","35","3506","Piracicaba"
"3","35","3507","Campinas"
"3","35","3508","Presidente Prudente"
"3","35","3509","Marília"
"3","35","3510","Assis"
"3","35","3511","Itapetininga"
"3","35","3512","Macro Metropolitana Paulista"
"3","35","3513","Vale do Paraíba Paulista"
"3","35","3514","Litoral Sul Paulista"
"3","35","3515","Metropolitana de São Paulo"
"4","41","4101","Noroeste Paranaense"
"4","41","4102","Centro Ocidental Paranaense"
"4","41","4103","Norte Central Paranaense"
"4","41","4104","Norte Pioneiro Paranaense"
"4","41","4105","Centro Oriental Paranaense"
"4","41","4106","Oeste Paranaense"
"4","41","4107","Sudoeste Paranaense"
"4","41","4108","Centro-Sul Paranaense"
"4","41","4109","Sudeste Paranaense"
"4","41","4110","Metropolitana de Curitiba"
"4","42","4201","Oeste Catarinense"
"4","42","4202","Norte Catarinense"
"4","42","4203","Serrana"
"4","42","4204","Vale do Itajaí"
"4","42","4205","Grande Florianópolis"
"4","42","4206","Sul Catarinense"
"4","43","4301","Noroeste Rio-grandense"
"4","43","4302","Nordeste Rio-grandense"
"4","43","4303","Centro Ocidental Rio-grandense"
"4","43","4304","Centro Oriental Rio-grandense"
"4","43","4305","Metropolitana de Porto Alegre"
"4","43","4306","Sudoeste Rio-grandense"
"4","43","4307","Sudeste Rio-grandense"
"5","50","5001","Pantanais Sul Mato-grossense"
"5","50","5002","Centro Norte de Mato Grosso do Sul"
"5","50","5003","Leste de Mato Grosso do Sul"
"5","50","5004","Sudoeste de Mato Grosso do Sul"
"5","51","5101","Norte Mato-grossense"
"5","51","5102","Nordeste Mato-grossense"
"5","51","5103","Sudoeste Mato-grossense"
"5","51","5104","Centro-Sul Mato-grossense"
"5","51","5105","Sudeste Mato-grossense"
"5","52","5201","Noroeste Goiano"
"5","52","5202","Norte Goiano"
"5","52","5203","Centro Goiano"
"5","52","5204","Leste Goiano"
"5","52","5205","Sul Goiano"
"5","53","5301","Distrito Federal"
Can't render this file because it contains an unexpected character in line 58 and column 10.

558
etc/data/ibge/sigi_ibge_import.microrregiao.csv

@ -0,0 +1,558 @@
"1","11","1101","11001","Porto Velho"
"1","11","1101","11002","Guajará-Mirim"
"1","11","1102","11003","Ariquemes"
"1","11","1102","11004","Ji-Paraná"
"1","11","1102","11005","Alvorada D'Oeste"
"1","11","1102","11006","Cacoal"
"1","11","1102","11007","Vilhena"
"1","11","1102","11008","Colorado do Oeste"
"1","12","1201","12001","Cruzeiro do Sul"
"1","12","1201","12002","Tarauacá"
"1","12","1202","12003","Sena Madureira"
"1","12","1202","12004","Rio Branco"
"1","12","1202","12005","Brasiléia"
"1","13","1301","13001","Rio Negro"
"1","13","1301","13002","Japurá"
"1","13","1302","13003","Alto Solimões"
"1","13","1302","13004","Juruá"
"1","13","1303","13005","Tefé"
"1","13","1303","13006","Coari"
"1","13","1303","13007","Manaus"
"1","13","1303","13008","Rio Preto da Eva"
"1","13","1303","13009","Itacoatiara"
"1","13","1303","13010","Parintins"
"1","13","1304","13011","Boca do Acre"
"1","13","1304","13012","Purus"
"1","13","1304","13013","Madeira"
"1","14","1401","14001","Boa Vista"
"1","14","1401","14002","Nordeste de Roraima"
"1","14","1402","14003","Caracaraí"
"1","14","1402","14004","Sudeste de Roraima"
"1","15","1501","15001","Óbidos"
"1","15","1501","15002","Santarém"
"1","15","1501","15003","Almeirim"
"1","15","1502","15004","Portel"
"1","15","1502","15005","Furos de Breves"
"1","15","1502","15006","Arari"
"1","15","1503","15007","Belém"
"1","15","1503","15008","Castanhal"
"1","15","1504","15009","Salgado"
"1","15","1504","15010","Bragantina"
"1","15","1504","15011","Cametá"
"1","15","1504","15012","Tomé-Açu"
"1","15","1504","15013","Guamá"
"1","15","1505","15014","Itaituba"
"1","15","1505","15015","Altamira"
"1","15","1506","15016","Tucuruí"
"1","15","1506","15017","Paragominas"
"1","15","1506","15018","São Félix do Xingu"
"1","15","1506","15019","Parauapebas"
"1","15","1506","15020","Marabá"
"1","15","1506","15021","Redenção"
"1","15","1506","15022","Conceição do Araguaia"
"1","16","1601","16001","Oiapoque"
"1","16","1601","16002","Amapá"
"1","16","1602","16003","Macapá"
"1","16","1602","16004","Mazagão"
"1","17","1701","17001","Bico do Papagaio"
"1","17","1701","17002","Araguaína"
"1","17","1701","17003","Miracema do Tocantins"
"1","17","1701","17004","Rio Formoso"
"1","17","1701","17005","Gurupi"
"1","17","1702","17006","Porto Nacional"
"1","17","1702","17007","Jalapão"
"1","17","1702","17008","Dianópolis"
"2","21","2101","21001","Litoral Ocidental Maranhense"
"2","21","2101","21002","Aglomeração Urbana de São Luís"
"2","21","2101","21003","Rosário"
"2","21","2101","21004","Lençois Maranhenses"
"2","21","2101","21005","Baixada Maranhense"
"2","21","2101","21006","Itapecuru Mirim"
"2","21","2102","21007","Gurupi"
"2","21","2102","21008","Pindaré"
"2","21","2102","21009","Imperatriz"
"2","21","2103","21010","Médio Mearim"
"2","21","2103","21011","Alto Mearim e Grajaú"
"2","21","2103","21012","Presidente Dutra"
"2","21","2104","21013","Baixo Parnaíba Maranhense"
"2","21","2104","21014","Chapadinha"
"2","21","2104","21015","Codó"
"2","21","2104","21016","Coelho Neto"
"2","21","2104","21017","Caxias"
"2","21","2104","21018","Chapadas do Alto Itapecuru"
"2","21","2105","21019","Porto Franco"
"2","21","2105","21020","Gerais de Balsas"
"2","21","2105","21021","Chapadas das Mangabeiras"
"2","22","2201","22001","Baixo Parnaíba Piauiense"
"2","22","2201","22002","Litoral Piauiense"
"2","22","2202","22003","Teresina"
"2","22","2202","22004","Campo Maior"
"2","22","2202","22005","Médio Parnaíba Piauiense"
"2","22","2202","22006","Valença do Piauí"
"2","22","2203","22007","Alto Parnaíba Piauiense"
"2","22","2203","22008","Bertolínia"
"2","22","2203","22009","Floriano"
"2","22","2203","22010","Alto Médio Gurguéia"
"2","22","2203","22011","São Raimundo Nonato"
"2","22","2203","22012","Chapadas do Extremo Sul Piauiense"
"2","22","2204","22013","Picos"
"2","22","2204","22014","Pio IX"
"2","22","2204","22015","Alto Médio Canindé"
"2","23","2301","23001","Litoral de Camocim e Acaraú"
"2","23","2301","23002","Ibiapaba"
"2","23","2301","23003","Coreaú"
"2","23","2301","23004","Meruoca"
"2","23","2301","23005","Sobral"
"2","23","2301","23006","Ipu"
"2","23","2301","23007","Santa Quitéria"
"2","23","2302","23008","Itapipoca"
"2","23","2302","23009","Baixo Curu"
"2","23","2302","23010","Uruburetama"
"2","23","2302","23011","Médio Curu"
"2","23","2302","23012","Canindé"
"2","23","2302","23013","Baturité"
"2","23","2302","23014","Chorozinho"
"2","23","2302","23015","Cascavel"
"2","23","2303","23016","Fortaleza"
"2","23","2303","23017","Pacajus"
"2","23","2304","23018","Sertão de Cratéus"
"2","23","2304","23019","Sertão de Quixeramobim"
"2","23","2304","23020","Sertão de Inhamuns"
"2","23","2304","23021","Sertão de Senador Pompeu"
"2","23","2305","23022","Litoral de Aracati"
"2","23","2305","23023","Baixo Jaguaribe"
"2","23","2305","23024","Médio Jaguaribe"
"2","23","2305","23025","Serra do Pereiro"
"2","23","2306","23026","Iguatu"
"2","23","2306","23027","Várzea Alegre"
"2","23","2306","23028","Lavras da Mangabeira"
"2","23","2307","23029","Chapada do Araripe"
"2","23","2307","23030","Caririaçu"
"2","23","2307","23031","Barro"
"2","23","2307","23032","Cariri"
"2","23","2307","23033","Brejo Santo"
"2","24","2401","24001","Mossoró"
"2","24","2401","24002","Chapada do Apodi"
"2","24","2401","24003","Médio Oeste"
"2","24","2401","24004","Vale do Açu"
"2","24","2401","24005","Serra de São Miguel"
"2","24","2401","24006","Pau dos Ferros"
"2","24","2401","24007","Umarizal"
"2","24","2402","24008","Macau"
"2","24","2402","24009","Angicos"
"2","24","2402","24010","Serra de Santana"
"2","24","2402","24011","Seridó Ocidental"
"2","24","2402","24012","Seridó Oriental"
"2","24","2403","24013","Baixa Verde"
"2","24","2403","24014","Borborema Potiguar"
"2","24","2403","24015","Agreste Potiguar"
"2","24","2404","24016","Litoral Nordeste"
"2","24","2404","24017","Macaíba"
"2","24","2404","24018","Natal"
"2","24","2404","24019","Litoral Sul"
"2","25","2501","25001","Catolé do Rocha"
"2","25","2501","25002","Cajazeiras"
"2","25","2501","25003","Sousa"
"2","25","2501","25004","Patos"
"2","25","2501","25005","Piancó"
"2","25","2501","25006","Itaporanga"
"2","25","2501","25007","Serra do Teixeira"
"2","25","2502","25008","Seridó Ocidental Paraibano"
"2","25","2502","25009","Seridó Oriental Paraibano"
"2","25","2502","25010","Cariri Ocidental"
"2","25","2502","25011","Cariri Oriental"
"2","25","2503","25012","Curimataú Ocidental"
"2","25","2503","25013","Curimataú Oriental"
"2","25","2503","25014","Esperança"
"2","25","2503","25015","Brejo Paraibano"
"2","25","2503","25016","Guarabira"
"2","25","2503","25017","Campina Grande"
"2","25","2503","25018","Itabaiana"
"2","25","2503","25019","Umbuzeiro"
"2","25","2504","25020","Litoral Norte"
"2","25","2504","25021","Sapé"
"2","25","2504","25022","João Pessoa"
"2","25","2504","25023","Litoral Sul"
"2","26","2601","26001","Araripina"
"2","26","2601","26002","Salgueiro"
"2","26","2601","26003","Pajeú"
"2","26","2601","26004","Sertão do Moxotó"
"2","26","2602","26005","Petrolina"
"2","26","2602","26006","Itaparica"
"2","26","2603","26007","Vale do Ipanema"
"2","26","2603","26008","Vale do Ipojuca"
"2","26","2603","26009","Alto Capibaribe"
"2","26","2603","26010","Médio Capibaribe"
"2","26","2603","26011","Garanhuns"
"2","26","2603","26012","Brejo Pernambucano"
"2","26","2604","26013","Mata Setentrional Pernambucana"
"2","26","2604","26014","Vitória de Santo Antão"
"2","26","2604","26015","Mata Meridional Pernambucana"
"2","26","2605","26016","Itamaracá"
"2","26","2605","26017","Recife"
"2","26","2605","26018","Suape"
"2","26","2605","26019","Fernando de Noronha"
"2","27","2701","27001","Serrana do Sertão Alagoano"
"2","27","2701","27002","Alagoana do Sertão do São Francisco"
"2","27","2701","27003","Santana do Ipanema"
"2","27","2701","27004","Batalha"
"2","27","2702","27005","Palmeira dos Índios"
"2","27","2702","27006","Arapiraca"
"2","27","2702","27007","Traipu"
"2","27","2703","27008","Serrana dos Quilombos"
"2","27","2703","27009","Mata Alagoana"
"2","27","2703","27010","Litoral Norte Alagoano"
"2","27","2703","27011","Maceió"
"2","27","2703","27012","São Miguel dos Campos"
"2","27","2703","27013","Penedo"
"2","28","2801","28001","Sergipana do Sertão do São Francisco"
"2","28","2801","28002","Carira"
"2","28","2802","28003","Nossa Senhora das Dores"
"2","28","2802","28004","Agreste de Itabaiana"
"2","28","2802","28005","Tobias Barreto"
"2","28","2802","28006","Agreste de Lagarto"
"2","28","2803","28007","Propriá"
"2","28","2803","28008","Cotinguiba"
"2","28","2803","28009","Japaratuba"
"2","28","2803","28010","Baixo Cotinguiba"
"2","28","2803","28011","Aracaju"
"2","28","2803","28012","Boquim"
"2","28","2803","28013","Estância"
"2","29","2901","29001","Barreiras"
"2","29","2901","29002","Cotegipe"
"2","29","2901","29003","Santa Maria da Vitória"
"2","29","2902","29004","Juazeiro"
"2","29","2902","29005","Paulo Afonso"
"2","29","2902","29006","Barra"
"2","29","2902","29007","Bom Jesus da Lapa"
"2","29","2903","29008","Senhor do Bonfim"
"2","29","2903","29009","Irecê"
"2","29","2903","29010","Jacobina"
"2","29","2903","29011","Itaberaba"
"2","29","2903","29012","Feira de Santana"
"2","29","2904","29013","Jeremoabo"
"2","29","2904","29014","Euclides da Cunha"
"2","29","2904","29015","Ribeira do Pombal"
"2","29","2904","29016","Serrinha"
"2","29","2904","29017","Alagoinhas"
"2","29","2904","29018","Entre Rios"
"2","29","2905","29019","Catu"
"2","29","2905","29020","Santo Antônio de Jesus"
"2","29","2905","29021","Salvador"
"2","29","2906","29022","Boquira"
"2","29","2906","29023","Seabra"
"2","29","2906","29024","Jequié"
"2","29","2906","29025","Livramento do Brumado"
"2","29","2906","29026","Guanambi"
"2","29","2906","29027","Brumado"
"2","29","2906","29028","Vitória da Conquista"
"2","29","2906","29029","Itapetinga"
"2","29","2907","29030","Valença"
"2","29","2907","29031","Ilhéus-Itabuna"
"2","29","2907","29032","Porto Seguro"
"3","31","3101","31001","Unaí"
"3","31","3101","31002","Paracatu"
"3","31","3102","31003","Januária"
"3","31","3102","31004","Janaúba"
"3","31","3102","31005","Salinas"
"3","31","3102","31006","Pirapora"
"3","31","3102","31007","Montes Claros"
"3","31","3102","31008","Grão Mogol"
"3","31","3102","31009","Bocaiúva"
"3","31","3103","31010","Diamantina"
"3","31","3103","31011","Capelinha"
"3","31","3103","31012","Araçuaí"
"3","31","3103","31013","Pedra Azul"
"3","31","3103","31014","Almenara"
"3","31","3104","31015","Teófilo Otoni"
"3","31","3104","31016","Nanuque"
"3","31","3105","31017","Ituiutaba"
"3","31","3105","31018","Uberlândia"
"3","31","3105","31019","Patrocínio"
"3","31","3105","31020","Patos de Minas"
"3","31","3105","31021","Frutal"
"3","31","3105","31022","Uberaba"
"3","31","3105","31023","Araxá"
"3","31","3106","31024","Três Marias"
"3","31","3106","31025","Curvelo"
"3","31","3106","31026","Bom Despacho"
"3","31","3107","31027","Sete Lagoas"
"3","31","3107","31028","Conceição do Mato Dentro"
"3","31","3107","31029","Pará de Minas"
"3","31","3107","31030","Belo Horizonte"
"3","31","3107","31031","Itabira"
"3","31","3107","31032","Itaguara"
"3","31","3107","31033","Ouro Preto"
"3","31","3107","31034","Conselheiro Lafaiete"
"3","31","3108","31035","Guanhães"
"3","31","3108","31036","Peçanha"
"3","31","3108","31037","Governador Valadares"
"3","31","3108","31038","Mantena"
"3","31","3108","31039","Ipatinga"
"3","31","3108","31040","Caratinga"
"3","31","3108","31041","Aimorés"
"3","31","3109","31042","Piuí"
"3","31","3109","31043","Divinópolis"
"3","31","3109","31044","Formiga"
"3","31","3109","31045","Campo Belo"
"3","31","3109","31046","Oliveira"
"3","31","3110","31047","Passos"
"3","31","3110","31048","São Sebastião do Paraíso"
"3","31","3110","31049","Alfenas"
"3","31","3110","31050","Varginha"
"3","31","3110","31051","Poços de Caldas"
"3","31","3110","31052","Pouso Alegre"
"3","31","3110","31053","Santa Rita do Sapucaí"
"3","31","3110","31054","São Lourenço"
"3","31","3110","31055","Andrelândia"
"3","31","3110","31056","Itajubá"
"3","31","3111","31057","Lavras"
"3","31","3111","31058","São João Del Rei"
"3","31","3111","31059","Barbacena"
"3","31","3112","31060","Ponte Nova"
"3","31","3112","31061","Manhuaçu"
"3","31","3112","31062","Viçosa"
"3","31","3112","31063","Muriaé"
"3","31","3112","31064","Ubá"
"3","31","3112","31065","Juiz de Fora"
"3","31","3112","31066","Cataguases"
"3","32","3201","32001","Barra de São Francisco"
"3","32","3201","32002","Nova Venécia"
"3","32","3201","32003","Colatina"
"3","32","3202","32004","Montanha"
"3","32","3202","32005","São Mateus"
"3","32","3202","32006","Linhares"
"3","32","3203","32007","Afonso Cláudio"
"3","32","3203","32008","Santa Teresa"
"3","32","3203","32009","Vitória"
"3","32","3203","32010","Guarapari"
"3","32","3204","32011","Alegre"
"3","32","3204","32012","Cachoeiro de Itapemirim"
"3","32","3204","32013","Itapemirim"
"3","33","3301","33001","Itaperuna"
"3","33","3301","33002","Santo Antônio de Pádua"
"3","33","3302","33003","Campos dos Goytacazes"
"3","33","3302","33004","Macaé"
"3","33","3303","33005","Três Rios"
"3","33","3303","33006","Cantagalo-Cordeiro"
"3","33","3303","33007","Nova Friburgo"
"3","33","3303","33008","Santa Maria Madalena"
"3","33","3304","33009","Bacia de São João"
"3","33","3304","33010","Lagos"
"3","33","3305","33011","Vale do Paraíba Fluminense"
"3","33","3305","33012","Barra do Piraí"
"3","33","3305","33013","Baía da Ilha Grande"
"3","33","3306","33014","Vassouras"
"3","33","3306","33015","Serrana"
"3","33","3306","33016","Macacu-Caceribu"
"3","33","3306","33017","Itaguaí"
"3","33","3306","33018","Rio de Janeiro"
"3","35","3501","35001","Jales"
"3","35","3501","35002","Fernandópolis"
"3","35","3501","35003","Votuporanga"
"3","35","3501","35004","São José do Rio Preto"
"3","35","3501","35005","Catanduva"
"3","35","3501","35006","Auriflama"
"3","35","3501","35007","Nhandeara"
"3","35","3501","35008","Novo Horizonte"
"3","35","3502","35009","Barretos"
"3","35","3502","35010","São Joaquim da Barra"
"3","35","3502","35011","Ituverava"
"3","35","3502","35012","Franca"
"3","35","3502","35013","Jaboticabal"
"3","35","3502","35014","Ribeirão Preto"
"3","35","3502","35015","Batatais"
"3","35","3503","35016","Andradina"
"3","35","3503","35017","Araçatuba"
"3","35","3503","35018","Birigui"
"3","35","3504","35019","Lins"
"3","35","3504","35020","Bauru"
"3","35","3504","35021","Jaú"
"3","35","3504","35022","Avaré"
"3","35","3504","35023","Botucatu"
"3","35","3505","35024","Araraquara"
"3","35","3505","35025","São Carlos"
"3","35","3506","35026","Rio Claro"
"3","35","3506","35027","Limeira"
"3","35","3506","35028","Piracicaba"
"3","35","3507","35029","Pirassununga"
"3","35","3507","35030","São João da Boa Vista"
"3","35","3507","35031","Moji Mirim"
"3","35","3507","35032","Campinas"
"3","35","3507","35033","Amparo"
"3","35","3508","35034","Dracena"
"3","35","3508","35035","Adamantina"
"3","35","3508","35036","Presidente Prudente"
"3","35","3509","35037","Tupã"
"3","35","3509","35038","Marília"
"3","35","3510","35039","Assis"
"3","35","3510","35040","Ourinhos"
"3","35","3511","35041","Itapeva"
"3","35","3511","35042","Itapetininga"
"3","35","3511","35043","Tatuí"
"3","35","3511","35044","Capão Bonito"
"3","35","3512","35045","Piedade"
"3","35","3512","35046","Sorocaba"
"3","35","3512","35047","Jundiaí"
"3","35","3512","35048","Bragança Paulista"
"3","35","3513","35049","Campos do Jordão"
"3","35","3513","35050","São José dos Campos"
"3","35","3513","35051","Guaratinguetá"
"3","35","3513","35052","Bananal"
"3","35","3513","35053","Paraibuna/Paraitinga"
"3","35","3513","35054","Caraguatatuba"
"3","35","3514","35055","Registro"
"3","35","3514","35056","Itanhaém"
"3","35","3515","35057","Osasco"
"3","35","3515","35058","Franco da Rocha"
"3","35","3515","35059","Guarulhos"
"3","35","3515","35060","Itapecerica da Serra"
"3","35","3515","35061","São Paulo"
"3","35","3515","35062","Mogi das Cruzes"
"3","35","3515","35063","Santos"
"4","41","4101","41001","Paranavaí"
"4","41","4101","41002","Umuarama"
"4","41","4101","41003","Cianorte"
"4","41","4102","41004","Goioerê"
"4","41","4102","41005","Campo Mourão"
"4","41","4103","41006","Astorga"
"4","41","4103","41007","Porecatu"
"4","41","4103","41008","Floraí"
"4","41","4103","41009","Maringá"
"4","41","4103","41010","Apucarana"
"4","41","4103","41011","Londrina"
"4","41","4103","41012","Faxinal"
"4","41","4103","41013","Ivaiporã"
"4","41","4104","41014","Assaí"
"4","41","4104","41015","Cornélio Procópio"
"4","41","4104","41016","Jacarezinho"
"4","41","4104","41017","Ibaiti"
"4","41","4104","41018","Wenceslau Braz"
"4","41","4105","41019","Telêmaco Borba"
"4","41","4105","41020","Jaguariaíva"
"4","41","4105","41021","Ponta Grossa"
"4","41","4106","41022","Toledo"
"4","41","4106","41023","Cascavel"
"4","41","4106","41024","Foz do Iguaçu"
"4","41","4107","41025","Capanema"
"4","41","4107","41026","Francisco Beltrão"
"4","41","4107","41027","Pato Branco"
"4","41","4108","41028","Pitanga"
"4","41","4108","41029","Guarapuava"
"4","41","4108","41030","Palmas"
"4","41","4109","41031","Prudentópolis"
"4","41","4109","41032","Irati"
"4","41","4109","41033","União da Vitória"
"4","41","4109","41034","São Mateus do Sul"
"4","41","4110","41035","Cerro Azul"
"4","41","4110","41036","Lapa"
"4","41","4110","41037","Curitiba"
"4","41","4110","41038","Paranaguá"
"4","41","4110","41039","Rio Negro"
"4","42","4201","42001","São Miguel do Oeste"
"4","42","4201","42002","Chapecó"
"4","42","4201","42003","Xanxerê"
"4","42","4201","42004","Joaçaba"
"4","42","4201","42005","Concórdia"
"4","42","4202","42006","Canoinhas"
"4","42","4202","42007","São Bento do Sul"
"4","42","4202","42008","Joinville"
"4","42","4203","42009","Curitibanos"
"4","42","4203","42010","Campos de Lages"
"4","42","4204","42011","Rio do Sul"
"4","42","4204","42012","Blumenau"
"4","42","4204","42013","Itajaí"
"4","42","4204","42014","Ituporanga"
"4","42","4205","42015","Tijucas"
"4","42","4205","42016","Florianópolis"
"4","42","4205","42017","Tabuleiro"
"4","42","4206","42018","Tubarão"
"4","42","4206","42019","Criciúma"
"4","42","4206","42020","Araranguá"
"4","43","4301","43001","Santa Rosa"
"4","43","4301","43002","Três Passos"
"4","43","4301","43003","Frederico Westphalen"
"4","43","4301","43004","Erechim"
"4","43","4301","43005","Sananduva"
"4","43","4301","43006","Cerro Largo"
"4","43","4301","43007","Santo Ângelo"
"4","43","4301","43008","Ijuí"
"4","43","4301","43009","Carazinho"
"4","43","4301","43010","Passo Fundo"
"4","43","4301","43011","Cruz Alta"
"4","43","4301","43012","Não-Me-Toque"
"4","43","4301","43013","Soledade"
"4","43","4302","43014","Guaporé"
"4","43","4302","43015","Vacaria"
"4","43","4302","43016","Caxias do Sul"
"4","43","4303","43017","Santiago"
"4","43","4303","43018","Santa Maria"
"4","43","4303","43019","Restinga Seca"
"4","43","4304","43020","Santa Cruz do Sul"
"4","43","4304","43021","Lajeado-Estrela"
"4","43","4304","43022","Cachoeira do Sul"
"4","43","4305","43023","Montenegro"
"4","43","4305","43024","Gramado-Canela"
"4","43","4305","43025","São Jerônimo"
"4","43","4305","43026","Porto Alegre"
"4","43","4305","43027","Osório"
"4","43","4305","43028","Camaquã"
"4","43","4306","43029","Campanha Ocidental"
"4","43","4306","43030","Campanha Central"
"4","43","4306","43031","Campanha Meridional"
"4","43","4307","43032","Serras de Sudeste"
"4","43","4307","43033","Pelotas"
"4","43","4307","43034","Jaguarão"
"4","43","4307","43035","Litoral Lagunar"
"5","50","5001","50001","Baixo Pantanal"
"5","50","5001","50002","Aquidauana"
"5","50","5002","50003","Alto Taquari"
"5","50","5002","50004","Campo Grande"
"5","50","5003","50005","Cassilândia"
"5","50","5003","50006","Paranaíba"
"5","50","5003","50007","Três Lagoas"
"5","50","5003","50008","Nova Andradina"
"5","50","5004","50009","Bodoquena"
"5","50","5004","50010","Dourados"
"5","50","5004","50011","Iguatemi"
"5","51","5101","51001","Aripuanã"
"5","51","5101","51002","Alta Floresta"
"5","51","5101","51003","Colíder"
"5","51","5101","51004","Parecis"
"5","51","5101","51005","Arinos"
"5","51","5101","51006","Alto Teles Pires"
"5","51","5101","51007","Sinop"
"5","51","5101","51008","Paranatinga"
"5","51","5102","51009","Norte Araguaia"
"5","51","5102","51010","Canarana"
"5","51","5102","51011","Médio Araguaia"
"5","51","5103","51012","Alto Guaporé"
"5","51","5103","51013","Tangará da Serra"
"5","51","5103","51014","Jauru"
"5","51","5104","51015","Alto Paraguai"
"5","51","5104","51016","Rosário Oeste"
"5","51","5104","51017","Cuiabá"
"5","51","5104","51018","Alto Pantanal"
"5","51","5105","51019","Primavera do Leste"
"5","51","5105","51020","Tesouro"
"5","51","5105","51021","Rondonópolis"
"5","51","5105","51022","Alto Araguaia"
"5","52","5201","52001","São Miguel do Araguaia"
"5","52","5201","52002","Rio Vermelho"
"5","52","5201","52003","Aragarças"
"5","52","5202","52004","Porangatu"
"5","52","5202","52005","Chapada dos Veadeiros"
"5","52","5203","52006","Ceres"
"5","52","5203","52007","Anápolis"
"5","52","5203","52008","Iporá"
"5","52","5203","52009","Anicuns"
"5","52","5203","52010","Goiânia"
"5","52","5204","52011","Vão do Paranã"
"5","52","5204","52012","Entorno de Brasília"
"5","52","5205","52013","Sudoeste de Goiás"
"5","52","5205","52014","Vale do Rio dos Bois"
"5","52","5205","52015","Meia Ponte"
"5","52","5205","52016","Pires do Rio"
"5","52","5205","52017","Catalão"
"5","52","5205","52018","Quirinópolis"
"5","53","5301","53001","Brasília"
Can't render this file because it has a wrong number of fields in line 56.

5565
etc/data/ibge/sigi_ibge_import.municipio.csv

File diff suppressed because it is too large

5
etc/data/ibge/sigi_ibge_import.regiao.csv

@ -0,0 +1,5 @@
"1","N","Norte"
"2","NE","Nordeste"
"3","SE","Sudeste"
"4","S","Sul"
"5","CO","Centro Oeste"
1 1 N Norte
2 2 NE Nordeste
3 3 SE Sudeste
4 4 S Sul
5 5 CO Centro Oeste

27
etc/data/ibge/sigi_ibge_import.uf.csv

@ -0,0 +1,27 @@
"1","11","Rondônia"
"1","12","Acre"
"1","13","Amazonas"
"1","14","Roraima"
"1","15","Pará"
"1","16","Amapá"
"1","17","Tocantins"
"2","21","Maranhão"
"2","22","Piauí"
"2","23","Ceará"
"2","24","Rio Grande do Norte"
"2","25","Paraíba"
"2","26","Pernambuco"
"2","27","Alagoas"
"2","28","Sergipe"
"2","29","Bahia"
"3","31","Minas Gerais"
"3","32","Espírito Santo"
"3","33","Rio de Janeiro"
"3","35","São Paulo"
"4","41","Paraná"
"4","42","Santa Catarina"
"4","43","Rio Grande do Sul"
"5","50","Mato Grosso do Sul"
"5","51","Mato Grosso"
"5","52","Goiás"
"5","53","Distrito Federal"
1 1 11 Rondônia
2 1 12 Acre
3 1 13 Amazonas
4 1 14 Roraima
5 1 15 Pará
6 1 16 Amapá
7 1 17 Tocantins
8 2 21 Maranhão
9 2 22 Piauí
10 2 23 Ceará
11 2 24 Rio Grande do Norte
12 2 25 Paraíba
13 2 26 Pernambuco
14 2 27 Alagoas
15 2 28 Sergipe
16 2 29 Bahia
17 3 31 Minas Gerais
18 3 32 Espírito Santo
19 3 33 Rio de Janeiro
20 3 35 São Paulo
21 4 41 Paraná
22 4 42 Santa Catarina
23 4 43 Rio Grande do Sul
24 5 50 Mato Grosso do Sul
25 5 51 Mato Grosso
26 5 52 Goiás
27 5 53 Distrito Federal

5565
etc/data/ibge_pop2008.csv

File diff suppressed because it is too large

441
etc/migracao/migra.py

@ -0,0 +1,441 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Script para fazer a migração dos dados do SIGI antigo (Access), exportados para
CSV, para o novo SIGI.
Conversão dos dados para CSV::
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "Assembléias" > assembleias.csv
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "municipios" > casas.csv
mdb-export -d "|" -D "%Y-%m-%d" <database>.mdb "CNPJ DAS CM" > cnpj.csv
Coloque os arquivos no diretório deste script e execute ``./migra.py`` para
fazer a migração.
Nota: é recomendado que o banco de dados esteja em seu estado inicial (de
pós-instalação) para a migração dos dados. Este script não foi feito para um
banco de dados em produção.
"""
from django.core.management import setup_environ
from sigi import settings
setup_environ(settings)
import csv
from datetime import datetime
from sigi.apps.casas.models import *
from sigi.apps.contatos.models import *
from sigi.apps.convenios.models import *
from sigi.apps.inventario.models import *
from sigi.apps.mesas.models import *
from sigi.apps.parlamentares.models import *
ERROR_MSG_0 = ('<ERRO> %s[%s]: erro desconhecido! Possível erro de integridade '
'do banco de dados. Favor verificar e inserir manualmente caso '
'necessário.')
ERROR_MSG_1 = ('<ERRO> %s[%s]: erro ao inserir item, será necessário inserção '
'manual.')
OBS_CONVENIO = ('Convênio sem termo de adesão')
def migra_assembleias(filename):
# identificação das colunas nos arquivo CSV
UF_COL = 5
NOME_COL = 8
FONE_1_COL = 32
FONE_2_COL = 33
FAX_COL = 34
FONE_PREFEITURA = 35
OBS_COL = 37
PRESIDENTE_COL = 38
ENDERECO_COL = 39
CEP_COL = 40
EMAIL_COL = 41
EMAIL_PRESIDENTE_COL = 42
PAGINA_COL = 43
#REPRESENTANTE_COL = 86
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next()
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='AL').get()
for line in reader:
uf = UnidadeFederativa.objects.get(sigla=line[UF_COL])
municipio = Municipio.objects.get(uf=uf, is_capital=True)
aux_end = line[ENDERECO_COL].split('-')
bairro = ''
if(aux_end.__len__()>1):
bairro = aux_end[1].replace(' ', '', 1)
else:
bairro = ''
casa = CasaLegislativa(
municipio=municipio,
nome=line[NOME_COL],
tipo=tipo_casa,
logradouro=aux_end[0],
bairro=bairro,
cep=line[CEP_COL],
email=line[EMAIL_COL],
pagina_web=line[PAGINA_COL],
observacoes=line[OBS_COL],
presidente=line[PRESIDENTE_COL],
telefone=line[FONE_1_COL]
)
if line[UF_COL] == 'DF':
casa.tipo = TipoCasaLegislativa.objects.filter(sigla='CT').get()
casa.save()
if line[FONE_2_COL]:
fone2 = Telefone(numero=line[FONE_2_COL], tipo='I', content_object=casa)
fone2.save()
if line[FAX_COL]:
fax = Telefone(numero=line[FAX_COL], tipo='X', content_object=casa)
fax.save()
if line[FONE_PREFEITURA]:
fone_prefeitura = Telefone(
numero=line[FONE_PREFEITURA],
tipo='F',
content_object=casa,
nota='Telefone da Prefeitura.'
)
fone_prefeitura.save()
# Presidente será um atributo de casa legislativa
# if line[REPRESENTANTE_COL]:
# representante = Contato(nome=line[REPRESENTANTE_COL], content_object=casa)
# representante.save()
# if line[PRESIDENTE_COL]:
# mesa = MesaDiretora(casa_legislativa=casa)
# mesa.save()
# parlamentar = Parlamentar(nome_completo=line[PRESIDENTE_COL], email=line[EMAIL_PRESIDENTE_COL])
# parlamentar.save()
# cargo_presidente = Cargo.objects.get(descricao__iexact='presidente')
# presidente = MembroMesaDiretora(
# parlamentar=parlamentar,
# cargo=cargo_presidente,
# mesa_diretora=mesa
# )
# presidente.save()
def migra_casas(filename):
# identificação das colunas no arquivo CSV
COD_IBGE_COL = 1
COD_TSE_COL = 2
NOME_COL = 8
ENDERECO_COL = 40
CEP_COL = 41
EMAIL_COL = 42
PAGINA_COL = 44
OBS_COL = 38
FONE_1_COL = 33
FONE_2_COL = 34
FAX_COL = 35
FONE_PREFEITURA = 36
PRESIDENTE_COL = 39
EMAIL_PRESIDENTE_COL = 43
REPRESENTANTE_COL = 85
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next()
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='CM').get()
linenum = 1
for line in reader:
linenum += 1
try:
municipio = Municipio.objects.get(codigo_ibge=line[COD_IBGE_COL])
except Municipio.DoesNotExist:
print "Municipio não existe"
print ERROR_MSG_1 % (filename, linenum)
continue
except ValueError:
print ERROR_MSG_1 % (filename, linenum)
continue
aux_end = line[ENDERECO_COL].split('-')
bairro = ''
if(aux_end.__len__()>1):
bairro = aux_end[1].replace(' ', '', 1)
casa = CasaLegislativa(
municipio=municipio,
nome='Câmara Municipal de ' + line[NOME_COL],
tipo=tipo_casa,
logradouro=aux_end[0],
bairro=bairro,
cep=line[CEP_COL],
email=line[EMAIL_COL],
pagina_web=line[PAGINA_COL],
observacoes=line[OBS_COL],
presidente=line[PRESIDENTE_COL],
telefone=line[FONE_1_COL]
)
try:
casa.save()
except:
print "Erro ao inserir casa..."
print ERROR_MSG_0 % (filename, linenum)
continue
if line[FONE_2_COL]:
fone2 = Telefone(numero=line[FONE_2_COL], tipo='I', content_object=casa)
fone2.save()
if line[FAX_COL]:
fax = Telefone(numero=line[FAX_COL], tipo='X', content_object=casa)
fax.save()
if line[FONE_PREFEITURA]:
fone_prefeitura = Telefone(
numero=line[FONE_PREFEITURA],
tipo='F',
content_object=casa,
nota='Telefone da Prefeitura.'
)
fone_prefeitura.save()
if line[REPRESENTANTE_COL]:
representante = Contato(nome=line[REPRESENTANTE_COL], content_object=casa)
representante.save()
def migra_cnpj(filename):
# identificação das colunas no arquivo CSV
COD_TSE_COL = 0
COD_CNPJ1_COL = 3
COD_CNPJ2_COL = 4
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next()
linenum = 1
for line in reader:
linenum += 1
try:
casa = CasaLegislativa.objects.get(municipio__codigo_tse=line[COD_TSE_COL])
except CasaLegislativa.DoesNotExist:
print ERROR_MSG_1 % (filename, linenum)
continue
except CasaLegislativa.MultipleObjectsReturned:
print ERROR_MSG_1 % (filename, linenum)
continue
except ValueError:
print ERROR_MSG_1 % (filename, linenum)
continue
casa.cnpj = line[COD_CNPJ1_COL] if not 'EM BRANCO' in line[COD_CNPJ1_COL] else line[COD_CNPJ2_COL]
casa.save()
def migra_convenios_casas(filename):
def get_datetime_obj(data):
ldata = data.split('-')
if len(ldata) != 3:
return None
return datetime(int(ldata[0]), int(ldata[1]), int(ldata[2]))
# identificação das colunas no arquivo CSV
# No arquivo CSV colunas que contém _100 são do Programa Interlegis
COD_IBGE_COL = 1
DATA_ADESAO_COL = 10
DATA_TERMO_ACEITE_COL = 21
NUM_CONVENIO_COL = 23
DATA_POSTAGEM_CORREIO = 26
NUM_PROCESSO_SF_COL = 27
DATA_RETORNO_ASSINATURA = 28
DATA_PUB_DIARIO = 30
DATA_DEV_VIA_CONV_CM = 32
DATA_ADESAO_100_COL = 11
DATA_TERMO_ACEITE_100_COL = 22
NUM_CONVENIO_100_COL = 24
NUM_PROCESSO_SF_100_COL = 25
DATA_RETORNO_ASSINATURA_100_COL = 29
DATA_PUB_DIARIO_100_COL = 31
#DATA_DEV_VIA_CONV_CM_100 = 32 Não foi registrado para as 100
#DATA_POSTAGEM_CORREIO_100 = 26
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next()
linenum = 1
###Geração de arquivos para análise###
import codecs
f1 = codecs.open('file1.txt','w' , encoding="utf-8")
f1.write(u'Casas que não tem Número Processo Senado Federal\n')
f2 = codecs.open('file2.txt','w', encoding="utf-8")
f2.write(u'Casas que não tem data de adesão e não tem convênio mas recebeu equipamentos\n')
######
for line in reader:
linenum += 1
try:
casa = CasaLegislativa.objects.get(municipio__codigo_ibge=line[COD_IBGE_COL])
except CasaLegislativa.DoesNotExist:
print "Erro ao inserir convênio. Casa não existe"
print ERROR_MSG_1 % (filename, linenum)
continue
except CasaLegislativa.MultipleObjectsReturned:
print ERROR_MSG_1 % (filename, linenum)
continue
except ValueError:
print ERROR_MSG_1 % (filename, linenum)
continue
# Se o convênio não tiver data de adesão mas tiver data retorno assinatura copiar essa data para a data de adesão.
obs = ''
projeto = None
convenio1=None
convenio2=None
if line[DATA_ADESAO_COL]=='1001-01-01' and line[DATA_RETORNO_ASSINATURA].__len__()!=0:
line[DATA_ADESAO_COL] = line[DATA_RETORNO_ASSINATURA]
obs = OBS_CONVENIO
if line[DATA_ADESAO_COL]!='1001-01-01':
projeto = Projeto.objects.get(id=1)
if projeto:
convenio1 = Convenio(
casa_legislativa=casa,
projeto=projeto,
num_processo_sf=line[NUM_PROCESSO_SF_COL],
num_convenio=line[NUM_CONVENIO_COL],
data_adesao=get_datetime_obj(line[DATA_ADESAO_COL]),
data_retorno_assinatura=get_datetime_obj(line[DATA_TERMO_ACEITE_COL]),
data_pub_diario=get_datetime_obj(line[DATA_RETORNO_ASSINATURA]),
data_termo_aceite=get_datetime_obj(line[DATA_PUB_DIARIO]),
data_devolucao_via=get_datetime_obj(line[DATA_DEV_VIA_CONV_CM]),
data_postagem_correio=get_datetime_obj(line[DATA_POSTAGEM_CORREIO]),
observacao=obs,)
###Relatório###
if( (projeto or line[DATA_TERMO_ACEITE_COL]) and line[NUM_PROCESSO_SF_COL].__len__()==0):
f1.write(casa.nome+","+casa.municipio.uf.sigla+"\n")
if(projeto==None and line[DATA_TERMO_ACEITE_COL].__len__()!=0):
f2.write(casa.nome+","+casa.municipio.uf.sigla+"\n")
######
projeto=None
obs = ''
if line[DATA_ADESAO_100_COL]=='1001-01-01' and line[DATA_RETORNO_ASSINATURA_100_COL].__len__()!=0:
line[DATA_ADESAO_100_COL] = line[DATA_RETORNO_ASSINATURA_100_COL]
obs = OBS_CONVENIO
if line[DATA_ADESAO_100_COL]!='1001-01-01':
projeto = Projeto.objects.get(id=2)
if projeto:
convenio2 = Convenio(
casa_legislativa=casa,
projeto=projeto,
num_processo_sf=line[NUM_PROCESSO_SF_100_COL],
num_convenio=line[NUM_CONVENIO_100_COL],
data_adesao=get_datetime_obj(line[DATA_ADESAO_100_COL]),
data_retorno_assinatura=get_datetime_obj(line[DATA_TERMO_ACEITE_100_COL]),
data_pub_diario=get_datetime_obj(line[DATA_RETORNO_ASSINATURA_100_COL]),
data_termo_aceite=get_datetime_obj(line[DATA_PUB_DIARIO_100_COL]),
observacao=obs,
)
try:
if convenio1: convenio1.save()
if convenio2: convenio2.save()
except:
print "Erro ao inserir convênio"
print ERROR_MSG_0 % (filename, linenum)
continue
f1.close()
f2.close()
def migra_convenios_assembleias(filename):
def get_datetime_obj(data):
ldata = data.split('-')
if len(ldata) != 3:
return None
return datetime(int(ldata[0]), int(ldata[1]), int(ldata[2]))
# identificação das colunas no arquivo CSV
SIGLA_COL = 5
DATA_ADESAO_COL = 10
DATA_TERMO_ACEITE_COL = 21
NUM_CONVENIO_COL = 23
NUM_PROCESSO_SF_COL = 26
DATA_RETORNO_ASSINATURA = 27
DATA_PUB_DIARIO = 29
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next()
linenum = 1
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='AL').get()
for line in reader:
linenum += 1
try:
assembleia = CasaLegislativa.objects.get(municipio__uf__sigla=line[SIGLA_COL], tipo=tipo_casa)
except CasaLegislativa.DoesNotExist:
print ERROR_MSG_1 % (filename, linenum)
continue
except CasaLegislativa.MultipleObjectsReturned:
print ERROR_MSG_1 % (filename, linenum)
continue
except ValueError:
print ERROR_MSG_1 % (filename, linenum)
continue
projeto = Projeto.objects.get(id=2)
convenio = Convenio(
casa_legislativa=assembleia,
num_processo_sf=line[NUM_PROCESSO_SF_COL],
num_convenio=line[NUM_CONVENIO_COL],
projeto=projeto,
data_adesao=get_datetime_obj(line[DATA_ADESAO_COL]),
data_retorno_assinatura=get_datetime_obj(line[DATA_TERMO_ACEITE_COL]),
data_pub_diario=get_datetime_obj(line[DATA_RETORNO_ASSINATURA]),
data_termo_aceite=get_datetime_obj(line[DATA_PUB_DIARIO]),
)
try:
convenio.save()
except:
print ERROR_MSG_0 % (filename, linenum)
print convenio
continue
def popula():
"""
Será preciso cadastrar no banco os seguintes Projeto:
1 - Projeto Interlegis
2 - Projeto Piloto de Modernização
3 - Projeto Modernização Legislativo
"""
projeto1 = Projeto(sigla='PI', nome='Projeto Interlegis')
projeto1.save()
projeto2 = Projeto(sigla='PPM', nome='Projeto Piloto de Modernização')
projeto2.save()
projeto3 = Projeto(sigla='PML', nome='Projeto Modernização Legislativo')
projeto3.save()
tipo1 = TipoCasaLegislativa(sigla='CM', nome='Câmara Municipal')
tipo1.save()
tipo2 = TipoCasaLegislativa(sigla='AL', nome='Assembléia Legislativa')
tipo2.save()
tipo3 = TipoCasaLegislativa(sigla='CT', nome='Câmara Distrital')
tipo3.save()
if __name__ == '__main__':
popula()
print "<iniciando migração das assembléias legislativas>"
migra_assembleias('assembleias.csv')
print "<iniciando migração das demais casas legislativas>"
migra_casas('casas.csv')
print "<iniciando migração dos CNPJ das casas>"
migra_cnpj('cnpj.csv')
print "<iniciando migração dos convênios das casas municipais>"
migra_convenios_casas('casas.csv')
print "<iniciando migração dos convênios das assembléias>"
migra_convenios_assembleias('assembleias.csv')

31
etc/nginx/sites-available/sigi.vhost

@ -0,0 +1,31 @@
upstream sigi_app_server {
server unix:/var/run/sigi/sigi.sock fail_timeout=0;
}
server {
listen 80;
server_name sigi01h.interlegis.leg.br;
client_max_body_size 4G;
access_log /var/log/sigi/sigi-access.log;
error_log /var/log/sigi/sigi-error.log;
location /static/ {
alias /var/aplicacoes/sigi/static/;
}
location /media/ {
alias /var/aplicacoes/sigi/media/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://sigi_app_server;
break;
}
}
}

5
etc/supervisor/conf.d/sigi.conf

@ -0,0 +1,5 @@
[program:sigi]
command = /var/aplicacoes/sigi/bin/run_sigi
user = sigi
stdout_logfile = /var/log/sigi/sigi-supervisor.log
redirect_stderr = true
Loading…
Cancel
Save