Cmara Municipal de Curiti Assistente de Migrao HTML
- Slides: 20
Câmara Municipal de Curiti
Assistente de Migração HTML para Postgresql Descrição do sistema Funcionalidades do sistema Desenvolvimento O que falta fazer? Palestrante: Ramiro Batista da Luz Desenvolvimento de Sistemas
Descrição Migração de dados Notes -> Postgresql Opções Exportação Lotus Notes Programação Notes Script(Notes Basic) ODBC Servidor Intranet(HTML) Python Beautiful. Soap, re, thread, mpi, urllib Treinamento da equipe Primeiro protótipo Andamento
Objetivos Migrar todas as proposições do sistema Lotus Notes para a base Postgresql. Manter integridade referencial. A formatação de alguns campos deve ser mantida.
Proposta Navegação - urllib Parser HTML – Beautiful. Soup Tratamento do texto – re Banco de dados - Jython + Hibernate Teste unitários - unittest
Funcionalidades Navegação por comandos Notes URL Interpretação de HTML Testes unitários Multi Thread MPI Jython + Hibernate
Desenvolvimento Treinamento Programação em par Protótipo Divisão de tarefas Navegador Parser Novos colaboradores
Módulos urllib Beautiful. Soup re unittest Multi. Thread MPI
urllib endereco = 'http: //10. 0. 0. 6/prop. nsf/%s/%s? Open. Document' % (oid_visao, amostra_oid) doc_html = urllib. urlopen(endereco). read() soup = Beautiful. Soup(doc_html)
Beautiful. Soup # Todas as ocorrencias de font Arial onde o texto seja 'tipo'. lista_tr_font_arial = self. soup. find. All(name='font', size=2, face='Arial', color='ffffff', text='Tipo') # <TR> pai da primeira linha encontrada. tr_tipo = lista_tr_font_arial[0]. find. Parent('tr') # Todas as ocorrencias de font Arial cor 004080. lista_tipo = tr_tipo. find. All(name='font', size=2, face='Arial', color='004080') # Conteúdo do primeiro ítem da lista. tipo = lista_tipo[0]. contents[0]
re # <TR> que contém o número da proposição. tr_numero = self. soup. find. All(name='td', size=2, face='Arial', color='ffffff', text=u' Nº Proposição ')[0]. find. Parent('tr') # Obtém o primeiro elemento da lista que atende a # expressão regular que extrai o número da proposição. numero = tr_numero. find. All(text=re. compile('([0 -9]{2}). ([09]{5}). ([0 -9]{4})'))[0]
unittest class Test. Emen(unittest. Test. Case): def set. Up(self): self. dict_emen = emen_testdata. dict_emen def test. Amostra(self): for tst_oid, amostra_emen in self. dict_emen. iteritems(): end = 'http: //10. 0. 0. 6/prop. nsf/%s/%s? Open. Document' % (oid_visao, tst_oid) soup = Beautiful. Soup(urllib. urlopen(end)). read()) emen_tst = Emen(soup, tst_oid) # Testa os dados de amostra self. dict_emen com os # obtidos da intranet. self. assert. Equal(amostra_emen, emen_tst)
Multi. Thread Clique para adicionar uma estrutura de tópicos
MPI Clique para adicionar uma estrutura de tópicos
Custos Treinamento Instrutor: 4 h * R$ 20, 00 = R$ 80, 00 Estagiários(4): 80 h * R$ 8, 00 = R$ 640, 00 Desenvolvimento Analista/Programador: 524 h * R$ 25, 00 = R$ 13. 100, 00 Estagiários: 616 h * R$ 8, 00 = R$ 4. 928, 00 Total: R$ 18. 748, 00
Custos - Totalização Total Treinamento: R$ 720, 00 Desenvolvimento: R$ 18. 028, 00 Total: R$ 18. 748, 00 Comparação mercado: Treinamento(tempo=2 X): R$ 1440, 00 Desenvolvimento(tempo=+1/4): R$ 22. 535, 00 Total: R$ 23. 975, 00
Pontos Fortes e Vantagens Tecnologias livres Python Módulos livres Debian Aprendizado rápido Desenvolvimento interativo Tecnologias avançadas são relativamente fáceis de usar
O que falta fazer? Extração de documentos anexados(doc, rtf, etc. . . ). Tratamento de ligações(links) internos para outros documentos. Alimentação do banco de dados. (Jython+Hybernate). Opções de linha de comando. Casos de teste para tramites. Interface gráfica.
Agradecimentos Comunidade Python Brasil Diretoria de informática da CMC Carlos Niemeyer – Diretor Lincoln Cesar Medina de Oliveira – Chefe de desenvolvimento Equipe de desenvolvimento da CMC Márcio Dias Azevedo, Claudia Fantin Charles Maske, André Gustavo Timermann, Marcilio Torres dos Santos Jr, Moisés Chiaretto
Conclusão Treinamento rápido da equipe Produtividade Desenvolvimento em equipe Variedade de bibliotecas livres Desenvolvimento interativo Economia de recursos Trabalho gratificante
- Hospital curiti
- Migrao
- Migrao
- Status report executivo
- Cmara de comercio
- Cmara de comercio
- Cmara
- Cmara de comercio
- Cmara
- Processo metodologico
- Ordine assistenti sociali del veneto
- Cartella sociale informatizzata
- Mandato sociale assistente sociale
- Mansioni assistente giudiziario
- Assistente sociale criminologo
- 12.html?action=
- Bhtml?title=
- Canvas доска
- Doctype html html head
- Doctype html html head
- Municipal reform