def sincronizar(argv): full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #newDB = DB.databaseHandlerTable() #crea la conexion a la base de datos y se establece sobre la tabla generic_xml elements = newDB.getItems(); tables = [] for element in elements: if element[4] not in tables: tables.append(element[4]) #saca los elementos unicos (no chequea el campo tags) tables_to_insert = checkExistence(newDB,tables) #Tablas que se deben crear en la base de datos (No estan) #print tables_to_insert if len(tables_to_insert) > 0: for element in tables_to_insert: #print element columns_to_create = newDB.readTags(element) primary = newDB.readTagPrimary(element) print primary DB.databaseHandlerTable.createTableforXML(newDB,element,columns_to_create,primary)
def synFeed(savedb,feed,saveas):# funcion de sincronizacion de feeds full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py filehandler = FH.XMLfileHandler() dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion managementDB.updateStatistics(savedb) #managementDB = DB.databaseHandlerTable() #managementDB.insertCron(savedb) #no es necesario insertar cron aca try: feed_downloader = FD.feeddownloader() feed_downloader.downloadfeed(feed,saveas) except: writeLog(dirname + '/Resources/events.log','Error en la descarga de ' + str(feed)) ##Solucionar el problema del directorio relativo para los crones exit if os.system('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml') !=0: log = open(dirname + '/Resources/events.log','python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file') if os.system('python ' + dirname + '/synchronize_generic.py') !=0: #Sincronizamos las tablas con el archivo generic-handler.xml writeLog(dirname + '/Resources/events.log','python ' + dirname + '/synchronize_generic.py' + ' fail to sync generic feed') if os.system('python ' + dirname + '/synchronize_xml.py ' + str(savedb) ) !=0: #sincronizamos la tabla nueva writeLog(dirname + '/Resources/events.log','python ' + dirname + '/synchronize_xml.py ' + str(savedb) + ' failed to sync feed') ##corregir el error porque sino siempre da error cuando hay entradas duplicadas
def delFeed( savedb, deletedb): #Borra el cron de la base de datos y lo elimina del sistema full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion managementDB.deleteStatistics(savedb) #managementDB = DB.databaseHandlerTable() cron_id = managementDB.getCronID(savedb) filehandler = FH.XMLfileHandler() saveas_field = managementDB.readSaveas( savedb) #Se obtiene el campo saveas para eliminar el archivo xml deletecronFile( cron_id) ##Borra la entrada correspondiente del archivo de cron managementDB.deleteCron( savedb) ##Elimina la entrada de la tabla cron_management try: feed_downloader = FD.feeddownloader() feed_downloader.removefeed(str(saveas_field[0][0])) except: writeLog(dirname + '/Resources/events.log', 'Error en el borrado de ' + str(saveas_field[0][0])) exit filehandler.deletefromGenericXML( savedb) #se borra la entrada del archivo generic-handler.xml save_name = managementDB.readName(savedb) print "save_name:" + ' ' + save_name[0][0] if deletedb == 'y': #Si el usuario lo indica, borramos tambien la base de datos del feed, caso contrario queda a su disposicion managementDB.dropTableFeed(savedb) managementDB.deleteDescription(savedb) else: managementDB.insertOldFeed(save_name[0][0], savedb) if os.system('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml') != 0: log = open('Resources/events.log', 'a+') log.write( 'python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file\n' ) log.close()
def addFeed(savedb,mins,hours,dayofmonth,month,dayofweek,name,url,feed,saveas,root,primary_id,tag): #agrega un cron a la base de datos y lo crea en el sistema filehandler = FH.XMLfileHandler() full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #managementDB = DB.databaseHandlerTable() managementDB.insertCron(savedb) #inserta el cron en la base de datos managementDB.insertStatisticsFirstTime(savedb) hours = '*' if hours=='0' else hours if (mins =='0' and hours == '*'): mins = '*' dayofmonth = '*' if dayofmonth=='0' else dayofmonth month = '*' if month=='0' else month dayofweek = '*' if dayofweek=='0' else dayofweek try: feed_downloader = FD.feeddownloader() feed_downloader.downloadfeed(feed,saveas) except: writeLog(dirname + '/Resources/events.log','Error en la descarga de ' + str(feed)) exit filehandler.writeGenericXML(name,url,feed,saveas,savedb,root,primary_id,tag) #Agrega las entradas del feed a generic-handler.xml if os.system('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml') !=0: #anda siempre porque ./setup_newDB usa por default generic-handler.xml log = open('Resources/events.log','python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file') if os.system('python ' + dirname + '/synchronize_generic.py') !=0: #Sincronizamos las tablas con el archivo generic-handler.xml writeLog('Resources/events.log','python ' + dirname + '/synchronize_generic.py' + ' fail to sync generic feed') if os.system('python ' + dirname + '/synchronize_xml.py ' + str(savedb) ) !=0: #sincronizamos la tabla nueva writeLog('Resources/events.log','python ' + dirname + '/synchronize_xml.py ' + str(savedb) + ' failed to sync feed') ##########################Crea el cron correspondiente. Habilitar cuando este la parte grafica terminada######################################################## cron_id = managementDB.getCronID(savedb) output = open(dirname + '/Resources/cron_feeds','a+') output.write("#cron_id: " + str(cron_id) + '\n') output.write(str(mins) + ' ' + str(hours) + ' ' + str(dayofmonth) + ' ' + str(month) + ' ' + str(dayofweek) + ' python ' + dirname + '/manager.py syn ' + str(savedb) + ' ' + str(feed) + ' ' + str(saveas) + ' \n') output.close()
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s xml archive' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion handler = XGH.xmlGenericHandler(sys.argv[1]) #inicializa el handler de la base de datos newDB.dropTable()#borra la tabla newDB.createTable()#crea nuevamente la tabla tags = ("name","url","feed","saveas","savedb","root","primary_id","tag") #arma los tags para insertar en la tabla generica values = handler.getBody('site',tags) #obtiene los datos del XML generico if len(values)!=1: #En caso de que generic-handler.xml este vacio finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join(values[i:z]) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #print valor_bd newDB.insertItem(tags,valor_bd) #inserta en la tabla hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + (values_add) + "','" + values[x] + "'" + ')' #print valor_bd,'\n' newDB.insertItem(tags,valor_bd) #inserta en la tabla el otro <tag> x+=1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def addDesc(savedb,description): #Agrega la descripcion en la tabla description full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #managementDB = DB.databaseHandlerTable() managementDB.insertDescription(savedb,description)
def synFeed(savedb, feed, saveas): # funcion de sincronizacion de feeds full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py filehandler = FH.XMLfileHandler() dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion managementDB.updateStatistics(savedb) #managementDB = DB.databaseHandlerTable() #managementDB.insertCron(savedb) #no es necesario insertar cron aca try: feed_downloader = FD.feeddownloader() feed_downloader.downloadfeed(feed, saveas) except: writeLog( dirname + '/Resources/events.log', 'Error en la descarga de ' + str(feed) ) ##Solucionar el problema del directorio relativo para los crones exit if os.system('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml') != 0: log = open( dirname + '/Resources/events.log', 'python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file' ) if os.system( 'python ' + dirname + '/synchronize_generic.py' ) != 0: #Sincronizamos las tablas con el archivo generic-handler.xml writeLog( dirname + '/Resources/events.log', 'python ' + dirname + '/synchronize_generic.py' + ' fail to sync generic feed') if os.system('python ' + dirname + '/synchronize_xml.py ' + str(savedb)) != 0: #sincronizamos la tabla nueva writeLog( dirname + '/Resources/events.log', 'python ' + dirname + '/synchronize_xml.py ' + str(savedb) + ' failed to sync feed' ) ##corregir el error porque sino siempre da error cuando hay entradas duplicadas
def addDesc(savedb, description): #Agrega la descripcion en la tabla description full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #managementDB = DB.databaseHandlerTable() managementDB.insertDescription(savedb, description)
def delFeed(savedb,deletedb): #Borra el cron de la base de datos y lo elimina del sistema full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion managementDB.deleteStatistics(savedb) #managementDB = DB.databaseHandlerTable() cron_id = managementDB.getCronID(savedb) filehandler = FH.XMLfileHandler() saveas_field = managementDB.readSaveas(savedb) #Se obtiene el campo saveas para eliminar el archivo xml deletecronFile(cron_id) ##Borra la entrada correspondiente del archivo de cron managementDB.deleteCron(savedb)##Elimina la entrada de la tabla cron_management try: feed_downloader = FD.feeddownloader() feed_downloader.removefeed(str(saveas_field[0][0])) except: writeLog(dirname + '/Resources/events.log','Error en el borrado de ' + str(saveas_field[0][0])) exit filehandler.deletefromGenericXML(savedb) #se borra la entrada del archivo generic-handler.xml save_name = managementDB.readName(savedb) print "save_name:" + ' ' + save_name[0][0] if deletedb == 'y': #Si el usuario lo indica, borramos tambien la base de datos del feed, caso contrario queda a su disposicion managementDB.dropTableFeed(savedb) managementDB.deleteDescription(savedb) else: managementDB.insertOldFeed(save_name[0][0],savedb) if os.system('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml') !=0: log = open('Resources/events.log','a+') log.write('python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file\n') log.close()
def sincronizar(argv): full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #newDB = DB.databaseHandlerTable() #crea la conexion a la base de datos y se establece sobre la tabla generic_xml elements = newDB.getItems() tables = [] for element in elements: if element[4] not in tables: tables.append( element[4] ) #saca los elementos unicos (no chequea el campo tags) tables_to_insert = checkExistence( newDB, tables) #Tablas que se deben crear en la base de datos (No estan) #print tables_to_insert if len(tables_to_insert) > 0: for element in tables_to_insert: #print element columns_to_create = newDB.readTags(element) primary = newDB.readTagPrimary(element) print primary DB.databaseHandlerTable.createTableforXML(newDB, element, columns_to_create, primary)
def addFeed(savedb, mins, hours, dayofmonth, month, dayofweek, name, url, feed, saveas, root, primary_id, tag): #agrega un cron a la base de datos y lo crea en el sistema filehandler = FH.XMLfileHandler() full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion managementDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion #managementDB = DB.databaseHandlerTable() managementDB.insertCron(savedb) #inserta el cron en la base de datos managementDB.insertStatisticsFirstTime(savedb) hours = '*' if hours == '0' else hours if (mins == '0' and hours == '*'): mins = '*' dayofmonth = '*' if dayofmonth == '0' else dayofmonth month = '*' if month == '0' else month dayofweek = '*' if dayofweek == '0' else dayofweek try: feed_downloader = FD.feeddownloader() feed_downloader.downloadfeed(feed, saveas) except: writeLog(dirname + '/Resources/events.log', 'Error en la descarga de ' + str(feed)) exit filehandler.writeGenericXML( name, url, feed, saveas, savedb, root, primary_id, tag) #Agrega las entradas del feed a generic-handler.xml if os.system( 'python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml' ) != 0: #anda siempre porque ./setup_newDB usa por default generic-handler.xml log = open( 'Resources/events.log', 'python ' + dirname + '/setup_newDB.py ' + dirname + '/Resources/generic-handler.xml failed to update generic-handler file' ) if os.system( 'python ' + dirname + '/synchronize_generic.py' ) != 0: #Sincronizamos las tablas con el archivo generic-handler.xml writeLog( 'Resources/events.log', 'python ' + dirname + '/synchronize_generic.py' + ' fail to sync generic feed') if os.system('python ' + dirname + '/synchronize_xml.py ' + str(savedb)) != 0: #sincronizamos la tabla nueva writeLog( 'Resources/events.log', 'python ' + dirname + '/synchronize_xml.py ' + str(savedb) + ' failed to sync feed') ##########################Crea el cron correspondiente. Habilitar cuando este la parte grafica terminada######################################################## cron_id = managementDB.getCronID(savedb) output = open(dirname + '/Resources/cron_feeds', 'a+') output.write("#cron_id: " + str(cron_id) + '\n') output.write( str(mins) + ' ' + str(hours) + ' ' + str(dayofmonth) + ' ' + str(month) + ' ' + str(dayofweek) + ' python ' + dirname + '/manager.py syn ' + str(savedb) + ' ' + str(feed) + ' ' + str(saveas) + ' \n') output.close()
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s savedb field' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion genericDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion specificDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), table=sys.argv[1] ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion root_tag = genericDB.readRoot(sys.argv[1]) saveas_tag = genericDB.readSaveas(sys.argv[1]) print root_tag[0][0] print saveas_tag[0][0] handler = XGH.xmlGenericHandler( pathtofile=os.path.dirname(os.path.realpath(__file__)) + '/' + saveas_tag[0][0] ) #inicializa el handler de la base de datos--> se pasa la ruta absoluta tags = [] aux_tags = genericDB.readTags( sys.argv[1] ) #arma los tags para insertar en la tabla correspondiente a la fuente for tag in aux_tags: tags.append(tag[0]) print tags values = handler.getBody(root_tag[0][0], tags) #obtiene los datos del XML especifico finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join( values[i:z] ) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #valor_bd.decode('utf8') #print MySQLdb.escape_string(valor_bd) if ( values[x] <> 'finarbol' ): #agregado para corregir bug en algunos feeds donde se incluye el finarbol specificDB.insertItemDistinct( tags, valor_bd) #inserta en la base de datos hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + ( values_add) + "','" + values[x] + "'" + ')' #valor_bd.decode('utf8') if ( values[x] <> 'finito' ): #agregado para corregir bug en algunos feeds donde se incluye el finito specificDB.insertItemDistinct( tags, valor_bd) #inserta en la tabla el otro <tag> x += 1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s savedb field' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion genericDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion specificDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),table=sys.argv[1]) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion root_tag = genericDB.readRoot(sys.argv[1]) saveas_tag = genericDB.readSaveas(sys.argv[1]) print root_tag[0][0] print saveas_tag[0][0] handler = XGH.xmlGenericHandler(pathtofile = os.path.dirname(os.path.realpath(__file__)) + '/' + saveas_tag[0][0]) #inicializa el handler de la base de datos--> se pasa la ruta absoluta tags=[] aux_tags = genericDB.readTags(sys.argv[1]) #arma los tags para insertar en la tabla correspondiente a la fuente for tag in aux_tags: tags.append(tag[0]) print tags values = handler.getBody(root_tag[0][0],tags) #obtiene los datos del XML especifico finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join(values[i:z]) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #valor_bd.decode('utf8') #print MySQLdb.escape_string(valor_bd) if (values[x] <> 'finarbol'): #agregado para corregir bug en algunos feeds donde se incluye el finarbol specificDB.insertItemDistinct(tags,valor_bd) #inserta en la base de datos hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + (values_add) + "','" + values[x] + "'" + ')' #valor_bd.decode('utf8') if (values[x] <> 'finito'): #agregado para corregir bug en algunos feeds donde se incluye el finito specificDB.insertItemDistinct(tags,valor_bd) #inserta en la tabla el otro <tag> x+=1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s xml archive' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion handler = XGH.xmlGenericHandler( sys.argv[1]) #inicializa el handler de la base de datos newDB.dropTable() #borra la tabla newDB.createTable() #crea nuevamente la tabla tags = ("name", "url", "feed", "saveas", "savedb", "root", "primary_id", "tag") #arma los tags para insertar en la tabla generica values = handler.getBody('site', tags) #obtiene los datos del XML generico if len(values) != 1: #En caso de que generic-handler.xml este vacio finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join( values[i:z] ) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #print valor_bd newDB.insertItem( tags, valor_bd) #inserta en la tabla hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + ( values_add) + "','" + values[x] + "'" + ')' #print valor_bd,'\n' newDB.insertItem( tags, valor_bd) #inserta en la tabla el otro <tag> x += 1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True