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