Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
	def writeGenericXML(self,nametag,urltag,feedtag,saveastag,savedbtag,roottag,primary_idtag,tagtag): #agrega la nueva entrada al archivo generic-handler.xml
	##Falta agregar parametros para agragar al archivo

		
		full_path = os.path.realpath(__file__) #Se averigua la ruta
		dirname = os.path.dirname(full_path) #se obtiene el directorio

		handler = XGH.xmlGenericHandler(dirname + '/Resources/generic-handler.xml')

		tags = ['name','url','feed','saveas','savedb','root','primary_id','tag']

		resultado = handler.getBody('site',tags) #recuperamos el archivo original
		computado = []
		computado.append(nametag)
		computado.append(urltag)
		computado.append(feedtag)
		computado.append('Resources/Feeds/' + str(saveastag)) ## Se agrega el directorio para que no se especifique desde la consola
		computado.append(savedbtag)
		computado.append(roottag)
		computado.append(primary_idtag)
	
		print tagtag
		for elementtag in tagtag:
			computado.append(elementtag)
	
		computado.append('finito')

		x = 0

		for element in resultado: #Se cuentan la cantidad de elementos que hay en la lista
			if str(element) == 'finarbol':
				x+=1
		

		if (len(resultado) == 0):
			resultadofinal = resultado + computado #sumamos el nuevo tag
		else:
			resultadofinal = resultado [:-1] + computado

		#print resultadofinal

		doc = minxml.Document()
		sites = doc.createElement("sites")
		doc.appendChild(sites)

	
		j=0 #indice para manejar el arreglo

		for i in range(0,x+1): 
			site = doc.createElement("site")
			sites.appendChild(site)
			
			name = doc.createElement("name")
			site.appendChild(name)
			ptext = doc.createTextNode(resultadofinal[j])
			name.appendChild(ptext)

			j+=1

			url = doc.createElement("url")
			site.appendChild(url)
			ptext = doc.createTextNode(resultadofinal[j])
			url.appendChild(ptext)

			j+=1



			feed = doc.createElement("feed")
			site.appendChild(feed)
			ptext = doc.createTextNode(resultadofinal[j])
			feed.appendChild(ptext)

			j+=1


			saveas = doc.createElement("saveas")
			site.appendChild(saveas)
			ptext = doc.createTextNode(resultadofinal[j])
			saveas.appendChild(ptext)

			j+=1


			savedb = doc.createElement("savedb")
			site.appendChild(savedb)
			ptext = doc.createTextNode(resultadofinal[j])
			savedb.appendChild(ptext)

			j+=1


			root = doc.createElement("root")
			site.appendChild(root)
			ptext =doc.createTextNode(resultadofinal[j])
			root.appendChild(ptext)

			j+=1


			primary_id = doc.createElement("primary_id")
			site.appendChild(primary_id)
			ptext = doc.createTextNode(resultadofinal[j])
			primary_id.appendChild(ptext)

			j+=1


			tag = doc.createElement("tag")
			site.appendChild(tag)
			ptext = doc.createTextNode(resultadofinal[j])
			tag.appendChild(ptext)
	
			j+=1


			existen_mas_tag = True

			while existen_mas_tag:
				if (resultadofinal[j] != 'finarbol' and resultadofinal [j] != 'finito'):
					tag = doc.createElement("tag")
					site.appendChild(tag)
					ptext = doc.createTextNode(resultadofinal[j])
					tag.appendChild(ptext)

					j+=1
				else: 
					existen_mas_tag = False
					j+=1
					
		print resultadofinal;

		inputstring = doc.toxml()
		savexml = self.prettyxml(inputstring)

		output = open(dirname + '/Resources/generic-handler.xml','w')
		output.write(savexml)
		output.close()
Ejemplo n.º 6
0
	def deletefromGenericXML(self,savedb):
		
		full_path = os.path.realpath(__file__) #Se averigua la ruta
		dirname = os.path.dirname(full_path) #se obtiene el directorio
		
		handler = XGH.xmlGenericHandler(dirname + '/Resources/generic-handler.xml')

		tags = ['name','url','feed','saveas','savedb','root','primary_id','tag']

		resultado = handler.getBody('site',tags) #recuperamos el archivo original
		resultadofinal = []
		auxiliar = []
		found = False
		x = 0

		for element in resultado:
			auxiliar.append(element)
			if len(auxiliar) == 5:
				if (str(auxiliar[4]) == str(savedb)):
					found = True

			if str(element) == 'finarbol':#Se cuentan la cantidad de elementos que hay en la lista
				if not found:
					for i in range(0,len(auxiliar)-1):
						resultadofinal.append(auxiliar[i])
					resultadofinal.append('finarbol')
					x+=1
					auxiliar = []
				else:
					found = False
					auxiliar = [] 
		
		
		resultadofinal=resultadofinal[0:-1] #removemos el ultimo finarbol			
		resultadofinal.append('finito') 
		print resultadofinal


		#print resultadofinal

		doc = minxml.Document()
		sites = doc.createElement("sites")
		doc.appendChild(sites)

	
		j=0 #indice para manejar el arreglo

		for i in range(0,x): 
			site = doc.createElement("site")
			sites.appendChild(site)
			
			name = doc.createElement("name")
			site.appendChild(name)
			ptext = doc.createTextNode(resultadofinal[j])
			name.appendChild(ptext)

			j+=1

			url = doc.createElement("url")
			site.appendChild(url)
			ptext = doc.createTextNode(resultadofinal[j])
			url.appendChild(ptext)

			j+=1



			feed = doc.createElement("feed")
			site.appendChild(feed)
			ptext = doc.createTextNode(resultadofinal[j])
			feed.appendChild(ptext)

			j+=1


			saveas = doc.createElement("saveas")
			site.appendChild(saveas)
			ptext = doc.createTextNode(resultadofinal[j])
			saveas.appendChild(ptext)

			j+=1


			savedb = doc.createElement("savedb")
			site.appendChild(savedb)
			ptext = doc.createTextNode(resultadofinal[j])
			savedb.appendChild(ptext)

			j+=1


			root = doc.createElement("root")
			site.appendChild(root)
			ptext =doc.createTextNode(resultadofinal[j])
			root.appendChild(ptext)

			j+=1


			primary_id = doc.createElement("primary_id")
			site.appendChild(primary_id)
			ptext = doc.createTextNode(resultadofinal[j])
			primary_id.appendChild(ptext)

			j+=1


			tag = doc.createElement("tag")
			site.appendChild(tag)
			ptext = doc.createTextNode(resultadofinal[j])
			tag.appendChild(ptext)
	
			j+=1


			existen_mas_tag = True

			while existen_mas_tag:
				if (resultadofinal[j] != 'finarbol' and resultadofinal [j] != 'finito'):
					tag = doc.createElement("tag")
					site.appendChild(tag)
					ptext = doc.createTextNode(resultadofinal[j])
					tag.appendChild(ptext)

					j+=1
				else: 
					existen_mas_tag = False
					j+=1
								

		inputstring = doc.toxml()
		savexml = self.prettyxml(inputstring)

		output = open(dirname + '/Resources/generic-handler.xml','w')
		output.write(savexml)
		output.close()