Commit a18e9bd75f59bd089e34dfce80f3b111b6a169c6
1 parent
112cad2d
Exists in
master
and in
7 other branches
$1
Showing
5 changed files
with
253 additions
and
1 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/js/estat_editor.js
| @@ -533,7 +533,7 @@ i3GEOadmin.editor = { | @@ -533,7 +533,7 @@ i3GEOadmin.editor = { | ||
| 533 | '<option value=apagar >Apagar dados atuais e incluir do SHP</option>' + | 533 | '<option value=apagar >Apagar dados atuais e incluir do SHP</option>' + |
| 534 | '</select></p>' + | 534 | '</select></p>' + |
| 535 | '<p class="paragrafo" >Código da projeção (SRID) Assegure-se que o shapefile esteja na projeção geográfica se você for usar com o sistema de metadados estatísticos :<br><input class=digitar type="text" value="4326" size=20 id="srid" name="srid" style="top:0px;left:0px;cursor:pointer;"></p>' + | 535 | '<p class="paragrafo" >Código da projeção (SRID) Assegure-se que o shapefile esteja na projeção geográfica se você for usar com o sistema de metadados estatísticos :<br><input class=digitar type="text" value="4326" size=20 id="srid" name="srid" style="top:0px;left:0px;cursor:pointer;"></p>' + |
| 536 | - '<p class="paragrafo" ><input type="checkbox" id="incluiserialshp" name="incluiserialshp" style="cursor:pointer;position:relative;top:2px;"> Inclui uma coluna gid do tipo serial e chave primária com código único</p>' + | 536 | + '<p class="paragrafo" ><input type="checkbox" id="incluiserialshp" name="incluiserialshp" style="cursor:pointer;position:relative;top:2px;"> Inclui uma coluna gid do tipo serial e chave primária com código único</p>' + |
| 537 | '<p class="paragrafo" ><input id=i3GEOuploadsubmit type="button" value="Enviar" size=12 />' + | 537 | '<p class="paragrafo" ><input id=i3GEOuploadsubmit type="button" value="Enviar" size=12 />' + |
| 538 | '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' + | 538 | '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' + |
| 539 | '<input type="hidden" id="i3GEOuploadcodigoconexao" name="i3GEOuploadcodigoconexao" value="">' + | 539 | '<input type="hidden" id="i3GEOuploadcodigoconexao" name="i3GEOuploadcodigoconexao" value="">' + |
| @@ -564,6 +564,7 @@ i3GEOadmin.editor = { | @@ -564,6 +564,7 @@ i3GEOadmin.editor = { | ||
| 564 | $i("i3GEOuploadcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; | 564 | $i("i3GEOuploadcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; |
| 565 | $i("i3GEOuploadesquema").value = $i("i3GEOadminesquema").value; | 565 | $i("i3GEOuploadesquema").value = $i("i3GEOadminesquema").value; |
| 566 | $i("i3GEOuploadf").submit(); | 566 | $i("i3GEOuploadf").submit(); |
| 567 | + $i("tabelaDestino").value = ""; | ||
| 567 | } | 568 | } |
| 568 | }, | 569 | }, |
| 569 | uploadcsv: { | 570 | uploadcsv: { |
| @@ -584,6 +585,8 @@ i3GEOadmin.editor = { | @@ -584,6 +585,8 @@ i3GEOadmin.editor = { | ||
| 584 | var ins = '<fieldset><form id=i3GEOuploadcsvf target="i3GEOuploadcsviframe" action="../php/metaestat_uploadcsv_submit.php" method="post" ENCTYPE="multipart/form-data">' + | 585 | var ins = '<fieldset><form id=i3GEOuploadcsvf target="i3GEOuploadcsviframe" action="../php/metaestat_uploadcsv_submit.php" method="post" ENCTYPE="multipart/form-data">' + |
| 585 | '<p class="paragrafo" >CSV (utilize ponto como separador de valores decimais ou a importação poderá não ocorrer): <br><input class=digitar type="file" size=22 name="i3GEOuploadcsv" style="top:0px;left:0px;cursor:pointer;"></p>' + | 586 | '<p class="paragrafo" >CSV (utilize ponto como separador de valores decimais ou a importação poderá não ocorrer): <br><input class=digitar type="file" size=22 name="i3GEOuploadcsv" style="top:0px;left:0px;cursor:pointer;"></p>' + |
| 586 | '<p class="paragrafo" >Nome da nova tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):<br><input class=digitar type="text" size=20 id="tabelaDestinocsv" name="tabelaDestinocsv" style="top:0px;left:0px;cursor:pointer;"></p>' + | 587 | '<p class="paragrafo" >Nome da nova tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):<br><input class=digitar type="text" size=20 id="tabelaDestinocsv" name="tabelaDestinocsv" style="top:0px;left:0px;cursor:pointer;"></p>' + |
| 588 | + '<p class="paragrafo" ><input type="checkbox" id="incluiserialcsv" name="incluiserialcsv" style="cursor:pointer;position:relative;top:2px;"> Inclui uma coluna gid do tipo serial e chave primária com código único</p>' + | ||
| 589 | + | ||
| 587 | '<p class="paragrafo" ><input id=i3GEOuploadcsvsubmit type="button" value="Enviar" size=12 />' + | 590 | '<p class="paragrafo" ><input id=i3GEOuploadcsvsubmit type="button" value="Enviar" size=12 />' + |
| 588 | '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' + | 591 | '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' + |
| 589 | '<input type="hidden" id="i3GEOuploadcsvcodigoconexao" name="i3GEOuploadcsvcodigoconexao" value="">' + | 592 | '<input type="hidden" id="i3GEOuploadcsvcodigoconexao" name="i3GEOuploadcsvcodigoconexao" value="">' + |
| @@ -602,6 +605,7 @@ i3GEOadmin.editor = { | @@ -602,6 +605,7 @@ i3GEOadmin.editor = { | ||
| 602 | $i("i3GEOuploadcsvcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; | 605 | $i("i3GEOuploadcsvcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; |
| 603 | $i("i3GEOuploadcsvesquema").value = $i("i3GEOadminesquema").value; | 606 | $i("i3GEOuploadcsvesquema").value = $i("i3GEOadminesquema").value; |
| 604 | $i("i3GEOuploadcsvf").submit(); | 607 | $i("i3GEOuploadcsvf").submit(); |
| 608 | + $i("tabelaDestinocsv").value = ""; | ||
| 605 | } | 609 | } |
| 606 | }, | 610 | }, |
| 607 | esvaziaFormsUpload: function(){ | 611 | esvaziaFormsUpload: function(){ |
admin/php/metaestat_uploadcsv_submit.php
| @@ -162,6 +162,9 @@ if (ob_get_level() == 0) ob_start(); | @@ -162,6 +162,9 @@ if (ob_get_level() == 0) ob_start(); | ||
| 162 | ob_flush(); | 162 | ob_flush(); |
| 163 | flush(); | 163 | flush(); |
| 164 | sleep(1); | 164 | sleep(1); |
| 165 | + if($_POST["incluiserialcsv"] == "on"){ | ||
| 166 | + $linhasql[] = "alter table ".$_POST["i3GEOuploadcsvesquema"].".".$_POST["tabelaDestinocsv"]." add gid serial CONSTRAINT gid_pkey PRIMARY KEY"; | ||
| 167 | + } | ||
| 165 | foreach($sqltabela as $linha){ | 168 | foreach($sqltabela as $linha){ |
| 166 | try { | 169 | try { |
| 167 | $dbh->query($linha); | 170 | $dbh->query($linha); |
| @@ -0,0 +1,245 @@ | @@ -0,0 +1,245 @@ | ||
| 1 | +#!/usr/bin/env python | ||
| 2 | +# -*- coding: utf-8 -*- | ||
| 3 | +""" | ||
| 4 | +Created on Fri Jan 11 17:26:01 2013 | ||
| 5 | + | ||
| 6 | +@author: Diego | ||
| 7 | +""" | ||
| 8 | +import os, subprocess | ||
| 9 | +import sqlite3 | ||
| 10 | +import os | ||
| 11 | +import time | ||
| 12 | + | ||
| 13 | +TABELA_ORIGINAL = 'tb_proxy' | ||
| 14 | + | ||
| 15 | +tables = {} | ||
| 16 | +tables[TABELA_ORIGINAL] = [[u'id', u'INTEGER PRIMARY KEY'], | ||
| 17 | + [u'proxy', u'TEXT'], | ||
| 18 | + [u'port', u'TEXT'], | ||
| 19 | + [u'user', u'TEXT'], | ||
| 20 | + [u'password', u'TEXT'], | ||
| 21 | + [u'exceptions', u'TEXT']] | ||
| 22 | + | ||
| 23 | +class ProxyDB(): | ||
| 24 | + def __init__(self, path, nome): | ||
| 25 | + self.con = self.getDB(path, nome) | ||
| 26 | + if not self.isMetadadosDB(): | ||
| 27 | + self.createTables() | ||
| 28 | + | ||
| 29 | + def getDB(self, path, nome): | ||
| 30 | + banco = os.path.join(path,nome) | ||
| 31 | + if os.path.exists(path): | ||
| 32 | + try: | ||
| 33 | + con = sqlite3.connect(banco) | ||
| 34 | + return con | ||
| 35 | + except: | ||
| 36 | + print 'Não foi possível criar uma conecção com o BD:{0}'\ | ||
| 37 | + .format(banco) | ||
| 38 | + return None | ||
| 39 | + else: | ||
| 40 | + print 'Não foi possível encontrar o caminho especificado:{0}'\ | ||
| 41 | + .format(banco) | ||
| 42 | + return None | ||
| 43 | + | ||
| 44 | + | ||
| 45 | + def isMetadadosDB(self): | ||
| 46 | + cur = self.con.cursor() | ||
| 47 | + tablesNames = tables.keys() | ||
| 48 | + for i in tablesNames: | ||
| 49 | + teste = False | ||
| 50 | + for j in cur.execute("select name from sqlite_master where type ='table'"): | ||
| 51 | + teste = i == j[0] | ||
| 52 | + if teste: | ||
| 53 | + break | ||
| 54 | + if not teste: | ||
| 55 | + return teste | ||
| 56 | + return teste | ||
| 57 | + | ||
| 58 | + def createTables(self): | ||
| 59 | + tablesName = tables.keys() | ||
| 60 | + tablesName.reverse() | ||
| 61 | + for table in tablesName : | ||
| 62 | + sql = "CREATE TABLE {0}(".format(table) | ||
| 63 | + columns = tables.get(table) | ||
| 64 | + column = columns.pop(0) | ||
| 65 | + sql = "{0} {1} {2}".format(sql, column[0], column[1]) | ||
| 66 | + for column in columns: | ||
| 67 | + sql = "{0}, {1} {2}".format(sql, column[0], column[1]) | ||
| 68 | + sql = "{0});".format(sql) | ||
| 69 | + cur = self.con.cursor() | ||
| 70 | + cur.execute(sql) | ||
| 71 | + self.con.commit() | ||
| 72 | + | ||
| 73 | + def inserirItem(self, nomeTabela, dicionario): | ||
| 74 | + sql = "INSERT INTO {0}".format(nomeTabela) | ||
| 75 | + columns = dicionario.keys() | ||
| 76 | + values = [] | ||
| 77 | + for key in columns: | ||
| 78 | + value = dicionario.get(key) | ||
| 79 | + if type(value) == str: | ||
| 80 | + values.append("'{0}'".format(value)) | ||
| 81 | + else: | ||
| 82 | + values.append(str(value)) | ||
| 83 | + | ||
| 84 | + sql = '{0} {1} VALUES {2}'.format(sql, str(columns).replace("'", ''), \ | ||
| 85 | + str(values).replace('"', '')).replace('[','(').replace(']',')') | ||
| 86 | + cur = self.con.cursor() | ||
| 87 | + cur.execute(sql) | ||
| 88 | + self.con.commit() | ||
| 89 | + | ||
| 90 | + def obterProxyList(self): | ||
| 91 | + cur = self.con.cursor() | ||
| 92 | + proxyDict = {} | ||
| 93 | + for e in cur.execute("SELECT id, proxy, port, user, password, exceptions FROM tb_proxy"): | ||
| 94 | + proxyDict[e[0]] = {'proxy':e[1], 'port':e[2], 'user':e[3], 'password':e[4], 'exceptions':e[5] } | ||
| 95 | + return proxyDict | ||
| 96 | + | ||
| 97 | + | ||
| 98 | + def save(self): | ||
| 99 | + self.con.commit() | ||
| 100 | + | ||
| 101 | + def close(self): | ||
| 102 | + self.con.close() | ||
| 103 | + | ||
| 104 | +PROJECT_ROOT_PATH = os.path.realpath(os.path.dirname(__file__)) | ||
| 105 | +metadadosDB = ProxyDB(PROJECT_ROOT_PATH, 'proxy.db') | ||
| 106 | + | ||
| 107 | +def validaEntradaSN(msg): | ||
| 108 | + while True: | ||
| 109 | + var = raw_input(msg) | ||
| 110 | + if var.upper() == 'S': | ||
| 111 | + return True | ||
| 112 | + elif var.upper() == 'N': | ||
| 113 | + return False | ||
| 114 | + | ||
| 115 | +def validaEntradaTexto(msg): | ||
| 116 | + while True: | ||
| 117 | + var = raw_input(msg) | ||
| 118 | + if len(var) > 0: | ||
| 119 | + return var | ||
| 120 | + | ||
| 121 | +def validaEntradaNumero(msg): | ||
| 122 | + while True: | ||
| 123 | + var = raw_input(msg) | ||
| 124 | + if len(var) > 0: | ||
| 125 | + try: | ||
| 126 | + int(var) | ||
| 127 | + return var | ||
| 128 | + except: | ||
| 129 | + print 'O valor deve ser do tipo interio!' | ||
| 130 | + return None | ||
| 131 | + | ||
| 132 | +def insertProxy(): | ||
| 133 | + continua = True | ||
| 134 | + proxyDict = {} | ||
| 135 | + while continua : | ||
| 136 | + proxyDict['proxy'] = validaEntradaTexto("Informe o proxy: ") | ||
| 137 | + proxyDict['port'] = validaEntradaNumero("Informe a porta: ") | ||
| 138 | + if validaEntradaSN("Seu proxy requer autenticação? (S ou N)\n>> "): | ||
| 139 | + proxyDict['user'] = validaEntradaTexto("Informe o usuário: ") | ||
| 140 | + proxyDict['password'] = validaEntradaTexto("Informe a senha: ") | ||
| 141 | + if validaEntradaSN("Você quer cadastrar exceções? (S ou N)\n>> "): | ||
| 142 | + proxyDict['exceptions'] = validaEntradaTexto("Informe as exceções: ") | ||
| 143 | + | ||
| 144 | + for i in proxyDict: | ||
| 145 | + print i, '\t- ', proxyDict[i] | ||
| 146 | + | ||
| 147 | + msg = "Esta é a configurção de proxy que será utilizada:\nEla está correta? (S ou N)\n>>" | ||
| 148 | + if validaEntradaSN(msg): | ||
| 149 | + continua = False | ||
| 150 | + metadadosDB.inserirItem(TABELA_ORIGINAL, proxyDict) | ||
| 151 | + '''serversPath = os.path.join(PROJECT_ROOT_PATH,'.subversion/servers') | ||
| 152 | + serversFile = open(serversPath,'a+b') | ||
| 153 | + serversFile.write("http-proxy-host = {0}\n".format(proxy)) | ||
| 154 | + serversFile.write("http-proxy-port = {0}\n".format(porta)) | ||
| 155 | + if usuario: | ||
| 156 | + serversFile.write("http-proxy-username = {0}\n".format(usuario)) | ||
| 157 | + serversFile.write("http-proxy-password = {0}\n".format(senha)) | ||
| 158 | + serversFile.close() | ||
| 159 | + atualiza_info_file = open(atualizaPath,'w') | ||
| 160 | + atualiza_info_file.close()''' | ||
| 161 | + | ||
| 162 | + else: | ||
| 163 | + for i in proxyDict.keys(): | ||
| 164 | + proxyDict[i] = '' | ||
| 165 | + return proxyDict | ||
| 166 | + | ||
| 167 | +def utilizarProxy(proxyDict): | ||
| 168 | + serversPath = os.path.join(PROJECT_ROOT_PATH,'.subversion/servers') | ||
| 169 | + serversFile = open(serversPath,'w') | ||
| 170 | + serversFile.write("[global]\n") | ||
| 171 | + | ||
| 172 | + fileDict = {'proxy': 'http-proxy-host = ', | ||
| 173 | + 'port':'http-proxy-port = ', | ||
| 174 | + 'user': 'http-proxy-username = ', | ||
| 175 | + 'password':'http-proxy-username = ', | ||
| 176 | + 'exceptions':'http-proxy-password = '} | ||
| 177 | + if proxyDict: | ||
| 178 | + for k,v in proxyDict.items(): | ||
| 179 | + if v: | ||
| 180 | + serversFile.write(fileDict[k] + v + '\n') | ||
| 181 | + serversFile.close() | ||
| 182 | + atualiza() | ||
| 183 | + | ||
| 184 | + | ||
| 185 | +def proxy(): | ||
| 186 | + | ||
| 187 | + texto = "Se você utiliza um proxy para acessar a web é necessário que o proxy seja configurado para fazer o update.\ | ||
| 188 | + Caso você configure o proxy e o update não seja executado com sucesso, procure o seu administrador da rede e informe a ele o seguinte:\n\ | ||
| 189 | + 1 - Arquivo local que armazena as configurações do proxy para o svn: {0}\n\ | ||
| 190 | + 2 - É preciso que o servidor proxy suporte os seguintes métodos: PROPFIND, REPORT, MERGE, MKACTIVITY, CHECKOUT.\n\ | ||
| 191 | + 3 - Mais informações: http://subversion.apache.org/faq.html#proxy\n\n".format(os.path.join(PROJECT_ROOT_PATH,'.subversion/servers')) | ||
| 192 | + | ||
| 193 | + print texto | ||
| 194 | + | ||
| 195 | + | ||
| 196 | + a = metadadosDB.obterProxyList() | ||
| 197 | + print 'Escolha o que fazer:' | ||
| 198 | + print '-1 - para restaurar as configurações iniciais;' | ||
| 199 | + print ' 0 - para cadastrar um proxy novo;' | ||
| 200 | + print ' Ou Digite o numero de um proxy cadastrado, caso exista.\n' | ||
| 201 | + | ||
| 202 | + if len(a): | ||
| 203 | + print 'Proxies disponíveis:' | ||
| 204 | + for i in a: | ||
| 205 | + print i,' - ', a[i]['proxy'],a[i]['port'],a[i]['user'],a[i]['password'],a[i]['exceptions'] | ||
| 206 | + metadadosDB.close() | ||
| 207 | + | ||
| 208 | + var = int(validaEntradaNumero(">>")) | ||
| 209 | + | ||
| 210 | + proxyDict = None | ||
| 211 | + if var == 0: | ||
| 212 | + proxyDict = insertProxy() | ||
| 213 | + | ||
| 214 | + elif var == -1: | ||
| 215 | + proxyDict = None | ||
| 216 | + else: | ||
| 217 | + if var in a: | ||
| 218 | + proxyDict = a[var] | ||
| 219 | + else: | ||
| 220 | + print 'Opção inválida!' | ||
| 221 | + return | ||
| 222 | + utilizarProxy(proxyDict) | ||
| 223 | + | ||
| 224 | +def atualiza(): | ||
| 225 | + os.chdir('/var/www') | ||
| 226 | + subprocess.call(["svn","update"], stdout=0) | ||
| 227 | + | ||
| 228 | +if __name__ == '__main__': | ||
| 229 | + continua = True | ||
| 230 | + while continua : | ||
| 231 | + print 'Opções:' | ||
| 232 | + print '0 - Atualizar:' | ||
| 233 | + print '1 - Configurar Proxy e Atualizar:' | ||
| 234 | + print '2 - Sair:' | ||
| 235 | + var = int(validaEntradaNumero("Escolha: ")) | ||
| 236 | + if var == 0: | ||
| 237 | + atualiza() | ||
| 238 | + elif var == 1: | ||
| 239 | + proxy() | ||
| 240 | + elif var == 2: | ||
| 241 | + continua = False | ||
| 242 | + | ||
| 243 | + continua = False | ||
| 244 | + time.sleep(5) | ||
| 245 | + |
No preview for this file type