From a18e9bd75f59bd089e34dfce80f3b111b6a169c6 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 25 Sep 2013 14:43:45 +0000 Subject: [PATCH] $1 --- admin/admin.db | Bin 210944 -> 0 bytes admin/js/estat_editor.js | 6 +++++- admin/php/metaestat_uploadcsv_submit.php | 3 +++ pacotes/atualiza.py | 245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pacotes/proxy.db | Bin 0 -> 2048 bytes 5 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 pacotes/atualiza.py create mode 100644 pacotes/proxy.db diff --git a/admin/admin.db b/admin/admin.db index 9aa6f74..750fbc1 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/js/estat_editor.js b/admin/js/estat_editor.js index 95d96f6..6e120d3 100644 --- a/admin/js/estat_editor.js +++ b/admin/js/estat_editor.js @@ -533,7 +533,7 @@ i3GEOadmin.editor = { '' + '

' + '

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 :

' + - '

 Inclui uma coluna gid do tipo serial e chave primária com código único

' + + '

 Inclui uma coluna gid do tipo serial e chave primária com código único

' + '

' + '' + '' + @@ -564,6 +564,7 @@ i3GEOadmin.editor = { $i("i3GEOuploadcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; $i("i3GEOuploadesquema").value = $i("i3GEOadminesquema").value; $i("i3GEOuploadf").submit(); + $i("tabelaDestino").value = ""; } }, uploadcsv: { @@ -584,6 +585,8 @@ i3GEOadmin.editor = { var ins = '

' + '

CSV (utilize ponto como separador de valores decimais ou a importação poderá não ocorrer):

' + '

Nome da nova tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):

' + + '

 Inclui uma coluna gid do tipo serial e chave primária com código único

' + + '

' + '' + '' + @@ -602,6 +605,7 @@ i3GEOadmin.editor = { $i("i3GEOuploadcsvcodigoconexao").value = $i("i3GEOadmincodigo_estat_conexao").value; $i("i3GEOuploadcsvesquema").value = $i("i3GEOadminesquema").value; $i("i3GEOuploadcsvf").submit(); + $i("tabelaDestinocsv").value = ""; } }, esvaziaFormsUpload: function(){ diff --git a/admin/php/metaestat_uploadcsv_submit.php b/admin/php/metaestat_uploadcsv_submit.php index cda1902..70f7ab4 100644 --- a/admin/php/metaestat_uploadcsv_submit.php +++ b/admin/php/metaestat_uploadcsv_submit.php @@ -162,6 +162,9 @@ if (ob_get_level() == 0) ob_start(); ob_flush(); flush(); sleep(1); + if($_POST["incluiserialcsv"] == "on"){ + $linhasql[] = "alter table ".$_POST["i3GEOuploadcsvesquema"].".".$_POST["tabelaDestinocsv"]." add gid serial CONSTRAINT gid_pkey PRIMARY KEY"; + } foreach($sqltabela as $linha){ try { $dbh->query($linha); diff --git a/pacotes/atualiza.py b/pacotes/atualiza.py new file mode 100644 index 0000000..8652b74 --- /dev/null +++ b/pacotes/atualiza.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Created on Fri Jan 11 17:26:01 2013 + +@author: Diego +""" +import os, subprocess +import sqlite3 +import os +import time + +TABELA_ORIGINAL = 'tb_proxy' + +tables = {} +tables[TABELA_ORIGINAL] = [[u'id', u'INTEGER PRIMARY KEY'], + [u'proxy', u'TEXT'], + [u'port', u'TEXT'], + [u'user', u'TEXT'], + [u'password', u'TEXT'], + [u'exceptions', u'TEXT']] + +class ProxyDB(): + def __init__(self, path, nome): + self.con = self.getDB(path, nome) + if not self.isMetadadosDB(): + self.createTables() + + def getDB(self, path, nome): + banco = os.path.join(path,nome) + if os.path.exists(path): + try: + con = sqlite3.connect(banco) + return con + except: + print 'Não foi possível criar uma conecção com o BD:{0}'\ + .format(banco) + return None + else: + print 'Não foi possível encontrar o caminho especificado:{0}'\ + .format(banco) + return None + + + def isMetadadosDB(self): + cur = self.con.cursor() + tablesNames = tables.keys() + for i in tablesNames: + teste = False + for j in cur.execute("select name from sqlite_master where type ='table'"): + teste = i == j[0] + if teste: + break + if not teste: + return teste + return teste + + def createTables(self): + tablesName = tables.keys() + tablesName.reverse() + for table in tablesName : + sql = "CREATE TABLE {0}(".format(table) + columns = tables.get(table) + column = columns.pop(0) + sql = "{0} {1} {2}".format(sql, column[0], column[1]) + for column in columns: + sql = "{0}, {1} {2}".format(sql, column[0], column[1]) + sql = "{0});".format(sql) + cur = self.con.cursor() + cur.execute(sql) + self.con.commit() + + def inserirItem(self, nomeTabela, dicionario): + sql = "INSERT INTO {0}".format(nomeTabela) + columns = dicionario.keys() + values = [] + for key in columns: + value = dicionario.get(key) + if type(value) == str: + values.append("'{0}'".format(value)) + else: + values.append(str(value)) + + sql = '{0} {1} VALUES {2}'.format(sql, str(columns).replace("'", ''), \ + str(values).replace('"', '')).replace('[','(').replace(']',')') + cur = self.con.cursor() + cur.execute(sql) + self.con.commit() + + def obterProxyList(self): + cur = self.con.cursor() + proxyDict = {} + for e in cur.execute("SELECT id, proxy, port, user, password, exceptions FROM tb_proxy"): + proxyDict[e[0]] = {'proxy':e[1], 'port':e[2], 'user':e[3], 'password':e[4], 'exceptions':e[5] } + return proxyDict + + + def save(self): + self.con.commit() + + def close(self): + self.con.close() + +PROJECT_ROOT_PATH = os.path.realpath(os.path.dirname(__file__)) +metadadosDB = ProxyDB(PROJECT_ROOT_PATH, 'proxy.db') + +def validaEntradaSN(msg): + while True: + var = raw_input(msg) + if var.upper() == 'S': + return True + elif var.upper() == 'N': + return False + +def validaEntradaTexto(msg): + while True: + var = raw_input(msg) + if len(var) > 0: + return var + +def validaEntradaNumero(msg): + while True: + var = raw_input(msg) + if len(var) > 0: + try: + int(var) + return var + except: + print 'O valor deve ser do tipo interio!' + return None + +def insertProxy(): + continua = True + proxyDict = {} + while continua : + proxyDict['proxy'] = validaEntradaTexto("Informe o proxy: ") + proxyDict['port'] = validaEntradaNumero("Informe a porta: ") + if validaEntradaSN("Seu proxy requer autenticação? (S ou N)\n>> "): + proxyDict['user'] = validaEntradaTexto("Informe o usuário: ") + proxyDict['password'] = validaEntradaTexto("Informe a senha: ") + if validaEntradaSN("Você quer cadastrar exceções? (S ou N)\n>> "): + proxyDict['exceptions'] = validaEntradaTexto("Informe as exceções: ") + + for i in proxyDict: + print i, '\t- ', proxyDict[i] + + msg = "Esta é a configurção de proxy que será utilizada:\nEla está correta? (S ou N)\n>>" + if validaEntradaSN(msg): + continua = False + metadadosDB.inserirItem(TABELA_ORIGINAL, proxyDict) + '''serversPath = os.path.join(PROJECT_ROOT_PATH,'.subversion/servers') + serversFile = open(serversPath,'a+b') + serversFile.write("http-proxy-host = {0}\n".format(proxy)) + serversFile.write("http-proxy-port = {0}\n".format(porta)) + if usuario: + serversFile.write("http-proxy-username = {0}\n".format(usuario)) + serversFile.write("http-proxy-password = {0}\n".format(senha)) + serversFile.close() + atualiza_info_file = open(atualizaPath,'w') + atualiza_info_file.close()''' + + else: + for i in proxyDict.keys(): + proxyDict[i] = '' + return proxyDict + +def utilizarProxy(proxyDict): + serversPath = os.path.join(PROJECT_ROOT_PATH,'.subversion/servers') + serversFile = open(serversPath,'w') + serversFile.write("[global]\n") + + fileDict = {'proxy': 'http-proxy-host = ', + 'port':'http-proxy-port = ', + 'user': 'http-proxy-username = ', + 'password':'http-proxy-username = ', + 'exceptions':'http-proxy-password = '} + if proxyDict: + for k,v in proxyDict.items(): + if v: + serversFile.write(fileDict[k] + v + '\n') + serversFile.close() + atualiza() + + +def proxy(): + + texto = "Se você utiliza um proxy para acessar a web é necessário que o proxy seja configurado para fazer o update.\ + 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\ + 1 - Arquivo local que armazena as configurações do proxy para o svn: {0}\n\ + 2 - É preciso que o servidor proxy suporte os seguintes métodos: PROPFIND, REPORT, MERGE, MKACTIVITY, CHECKOUT.\n\ + 3 - Mais informações: http://subversion.apache.org/faq.html#proxy\n\n".format(os.path.join(PROJECT_ROOT_PATH,'.subversion/servers')) + + print texto + + + a = metadadosDB.obterProxyList() + print 'Escolha o que fazer:' + print '-1 - para restaurar as configurações iniciais;' + print ' 0 - para cadastrar um proxy novo;' + print ' Ou Digite o numero de um proxy cadastrado, caso exista.\n' + + if len(a): + print 'Proxies disponíveis:' + for i in a: + print i,' - ', a[i]['proxy'],a[i]['port'],a[i]['user'],a[i]['password'],a[i]['exceptions'] + metadadosDB.close() + + var = int(validaEntradaNumero(">>")) + + proxyDict = None + if var == 0: + proxyDict = insertProxy() + + elif var == -1: + proxyDict = None + else: + if var in a: + proxyDict = a[var] + else: + print 'Opção inválida!' + return + utilizarProxy(proxyDict) + +def atualiza(): + os.chdir('/var/www') + subprocess.call(["svn","update"], stdout=0) + +if __name__ == '__main__': + continua = True + while continua : + print 'Opções:' + print '0 - Atualizar:' + print '1 - Configurar Proxy e Atualizar:' + print '2 - Sair:' + var = int(validaEntradaNumero("Escolha: ")) + if var == 0: + atualiza() + elif var == 1: + proxy() + elif var == 2: + continua = False + + continua = False + time.sleep(5) + diff --git a/pacotes/proxy.db b/pacotes/proxy.db new file mode 100644 index 0000000..03a4ff1 Binary files /dev/null and b/pacotes/proxy.db differ -- libgit2 0.21.2