#!/usr/bin/env python
# Cargamos los m¾dulos necesarios
import _pg # Para acceder a las bases de datos
import string
import cgi
import time
import sys
import os
import operator
import random

#Funcion para puntear las cantidades
def convierte(numero):
        numero = str(numero)
        longitud = len(numero)
        if (longitud < 4):
                return numero
        else:
                return convierte(operator.getslice(numero,0,longitud - 3)) + "." + operator.getslice(numero,len(numero)-3,len(numero))
#Fin de la funcion convierte

#Funcion para transformar cadenas de Falso/Verdadero a f/t
def booleano(cadena):
        cadena=string.replace(cadena,'Falso','f')
        cadena=string.replace(cadena,'Verdadero','t')
        return cadena
#Fin de la funcion booleano

#Funcion para pasar a minusculas y capitalizar una cadena 
def capitalizar(frase):
        frase=string.lower(frase)
        frase=string.capitalize(frase)
        return frase
#Fin de la funcion capitalizar

# interfaz CGI

##t_oid='699689'
t_oid = sys.argv[1]
id_valenti = '10'
mensajev = ''
mailv = 0

db = _pg.connect('publicitanet_tv')

#Variables
path1 = "/web/publicitanet/"+t_oid+"/uptienda"
#print "el path es "+path1

#Cojo los archivos del path1
dir2 = os.listdir(path1)
#print dir2
dir = []

for i in range (len(dir2)):
        if 'info.txt' == operator.getslice(dir2[i],(len(dir2[i])-8),len(dir2[i])):
                dir.append(dir2[i])

	
for i in range(len(dir)):

        nomfich = dir[i]
        numlista = operator.getslice(nomfich,0,1)
        os.chdir(path1)

        #Abro el fichero de descripcion para lectura
        fichero = path1 +'/'+ nomfich
        f=open(fichero, 'r')

        #leo los datos de la lista de bodas
        cadena = f.readline()
        temp = string.split(cadena,'|')
        long = len(temp)

        #cogo el ultimo campo y le quito el salto de linea
        temp[long-1] = string.replace(temp[long-1],'\012','')

        fecha = time.time()
        fecha1 = time.localtime(fecha)
        fecha2 = time.strftime("%m/%d/%Y",fecha1)

        #asigno a path2 el directorio de la tienda virtual
        path2= "/web/publicitanet/"+t_oid+"/tienda/"
        #muevo las fotos al directorio de la tienda virtual
        os.system('mv *.jpg ' + path2 + '.')
        mensaje2=''

        #Leemos los productos
        contador = 0
        pre_total = 0.0
        while (cadena != ""):

                contador = contador + 1                 
                regalo = string.split(cadena,'|')
		
		#Le cambiamos las , por los . en el precio
                regalo[17] = string.replace(regalo[17], ',', '.')
                regalo[23] = string.replace(regalo[23],'\012','')
                regalo[23] = string.replace(regalo[23],'\015','')
                #Capitalizo el nombre y el fabricante
                regalo[1]=capitalizar(regalo[1])
                regalo[16]=capitalizar(regalo[16])
                #Capitalizo la categoria y la subcategoria
                regalo[12]=capitalizar(regalo[12])
                regalo[14]=capitalizar(regalo[14])                
                #print "regalo con la foto: "+regalo[0]+" que tiene como categoria/subcategoria: "+regalo[12]+"/"+regalo[14]           
                #primero compruebo si se ha insertado alguna nueva categoria,subcategoria o fabricante
                if regalo[12][len(regalo[12])-1]=='*':	#se ha insertado una nueva categoria y por lo tanto nueva subcategoria
			regalo[12]=operator.getslice(regalo[12],0,len(regalo[12])-1) #categoria
			regalo[14]=operator.getslice(regalo[14],0,len(regalo[14])-1) #subcategoria
			orden="select distinct on (nombre) * from categorias where nombre='"+regalo[12]+"' and activa='t' order by nombre"
			res = db.query(orden)
			num=len(res.dictresult())
			orden2="select distinct on (nombre) * from categorias where nombre=\'"+regalo[12]+"\' and activa=\'f\' and tienda="+t_oid+" order by nombre"			
			res2 = db.query(orden2)
			num2=len(res2.dictresult())
			if num>0: #existe la categoria y esta como activa				
				regalo[11]=str(res.dictresult()[0]["id_cat"])						
			elif num2>0: #existe la categoria pero solo para la tienda
				regalo[11]=str(res2.dictresult()[0]["id_cat"])						
			else: #No existe la categoria
			#a continuacion inserto la nueva categoria 
				c_res=db.query("insert into categorias (nombre,activa,tienda) values(\'"+regalo[12]+"\',\'f\',"+t_oid+")")
				c_res=db.query("select id_cat from categorias where nombre=\'"+regalo[12]+"\'")
				regalo[11]=str(c_res.dictresult()[0]["id_cat"])			
			orden="select distinct on (nombre) * from subcategorias where nombre='"+regalo[14]+"' and activa='t' order by nombre"
			res = db.query(orden)
			num=len(res.dictresult())
			orden2="select distinct on (nombre) * from subcategorias where nombre=\'"+regalo[14]+"\' and activa=\'f\' and tienda="+t_oid+" order by nombre"			
			res2 = db.query(orden2)
			num2=len(res2.dictresult())			
			if num>0: #existe la subcategoria y esta como activa				
				regalo[13]=str(c_res.dictresult()[0]["id_subc"])						
			elif num2>0: #existe la subcategoria pero solo para la tienda
				regalo[13]=str(c_res.dictresult()[0]["id_subc"])						
			else: #No existe la categoria		
			#a continuacion inserto la subcategoria	
				sc_res=db.query("insert into subcategorias (id_cat,nombre,activa,tienda) values(\'"+regalo[11]+"\',\'"+regalo[14]+"\',\'f\',"+t_oid+")")
                		sc_res=db.query("select id_subc from subcategorias where nombre=\'"+regalo[14]+"\' and id_cat="+regalo[11])
                		regalo[13]=str(sc_res.dictresult()[0]["id_subc"])
                	mensaje2="Y se han insertado la nueva categoria: "+regalo[12]+" y la nueva subcategoria: "+regalo[14]
                elif regalo[14][len(regalo[14])-1]=='*': #no se ha insertado una nueva categoria pero si una subcategoria
                	regalo[14]=operator.getslice(regalo[14],0,len(regalo[14])-1) #subcategoria
			orden="select distinct on (nombre) * from subcategorias where nombre='"+regalo[14]+"' and activa='t' order by nombre"
			res = db.query(orden)
			num=len(res.dictresult())
			orden2="select distinct on (nombre) * from subcategorias where nombre=\'"+regalo[14]+"\' and activa=\'f\' and tienda="+t_oid+" order by nombre"			
			res2 = db.query(orden2)
			num2=len(res2.dictresult())			
			if num>0: #existe la subcategoria y esta como activa				
				regalo[13]=str(res.dictresult()[0]["id_subc"])						
			elif num2>0: #existe la subcategoria pero solo para la tienda
				regalo[13]=str(res2.dictresult()[0]["id_subc"])						
			else: #No existe la categoria		
			#a continuacion inserto la subcategoria	
				sc_res=db.query("insert into subcategorias (id_cat,nombre,activa,tienda) values(\'"+regalo[11]+"\',\'"+regalo[14]+"\',\'f\',"+t_oid+")")
                		sc_res=db.query("select id_subc from subcategorias where nombre=\'"+regalo[14]+"\' and id_cat="+regalo[11])
                		regalo[13]=str(sc_res.dictresult()[0]["id_subc"])
                	mensaje2="Y se han insertado la nueva subcategoria: "+regalo[14]       	                
                else: #no se ha introducido nada nuevo, por lo que la categoria y subcategoria quedan igual pero hay que buscar el id_subc
                	sc_res=db.query("select id_subc from subcategorias where nombre=\'"+regalo[14]+"\' and id_cat="+regalo[11])
                	#print "select id_subc from subcategorias where nombre=\'"+regalo[14]+"\'"
                	regalo[13]=str(sc_res.dictresult()[0]["id_subc"])                		
		if regalo[15][0]=='1':
                	regalo[15]=operator.getslice(regalo[15],1,len(regalo[15]))              	
			if regalo[15]==id_valenti:
				#El producto es valenti y hay que avisarlos
				mailv=1
				mensajev = mensajev + "\tProducto " + regalo[1] + "\n" 
                elif regalo[15][0]=='3':                	
                	regalo[16] = string.replace(regalo[16], '\'', '\\\'')
			regalo[16] = string.replace(regalo[16], '"', '\\"')
			fb_res=db.query("insert into fabricantes (nombre,activa,tienda) values(\'"+regalo[16]+"\',\'f\',"+t_oid+")")
			fb_res=db.query("select id_fab from fabricantes where nombre=\'"+regalo[16]+"\'")
                	regalo[15]=str(fb_res.dictresult()[0]["id_fab"])
                
                #Inserto los datos en la tabla producto
                orden = "insert into productos (tienda,foto,nombre,ref_int,ocul_int,ref_fab,ocul_fab,datos,alto,ancho,largo,peso,id_subc,id_fab,precio,unidades,escaparate,novedad,nov_dias,oferta,dto,ofer_dias,visitas,ventas,falta,caduca_oferta,caduca_novedad,plazo) "
                
                #tienda
                orden = orden +"values ("+t_oid
                #foto
                orden=orden +",\'"+regalo[0]+"\'"
                #nombre
                orden=orden +",\'"+regalo[1]+"\'"
                #ref_int
                orden=orden +",\'"+regalo[2]+"\'"
                #ocul_int
                orden=orden +",\'"+booleano(regalo[3])+"\'"
                #ref_fab
                orden=orden +",\'"+regalo[4]+"\'"
                #ocul_fab
                orden=orden +",\'"+booleano(regalo[5])+"\'"
                #datos
                orden=orden +",\'"+regalo[6]+"\'"
                #alto
                orden=orden + ","+regalo[7]
                #ancho
                orden=orden + ","+regalo[8]
                #largo
                orden=orden + ","+regalo[9]
                #peso
                orden=orden + ","+regalo[10]                
		#id_subc
		orden=orden + ","+regalo[13]                
		#id_fab
		orden=orden + ","+regalo[15]                
		#precio
		orden=orden + ","+regalo[17]                
                #unidades
                orden=orden + ","+regalo[18]                
                #escaparate
                orden=orden +",\'"+booleano(regalo[19])+"\'"
                #novedad
                orden=orden +",\'"+booleano(regalo[20])+"\'"
                #nov_dias
                orden=orden + ","+regalo[21]
                #oferta
                orden=orden +",\'"+booleano(regalo[22])+"\'"
                #dto
                orden=orden + ","+regalo[23]
                #ofer_dias
                orden=orden + ","+regalo[24]
                #visitas, ventas
                orden=orden + ",0,0"
                #falta
                orden=orden + ",\'now\'"                
                #caduca_novedad
                orden=orden + ",\'now\'"                
                #caduca_oferta
                orden=orden + ",\'now\'"                
                #plazo
                orden=orden + ","+regalo[25]+")"                 
                #print orden                               
                res = db.query("BEGIN TRANSACTION")
                res = db.query(orden)
                res = db.query("UPDATE productos SET caduca_novedad = caduca_novedad + " + regalo[21] + " where novedad='t' and caduca_novedad is NULL")
		res = db.query("UPDATE productos SET caduca_oferta = caduca_oferta + " + regalo[24] + " where oferta='t' and caduca_oferta is NULL")
                res = db.query("COMMIT")
                cadena = f.readline()

		#ahora introducimos un registro en la tabla 'notificaciones', si el producto está en oferta o en novedad
		novedad = booleano(regalo[20])
		oferta = booleano(regalo[22])
		if novedad=='t' or oferta=='t':
			res = db.query("BEGIN TRANSACTION")
			res = db.query("select id_pro from productos where foto=\'" + regalo[0] + "\' and tienda=" + t_oid)
			id_pro = res.dictresult()[0]["id_pro"]
			res = db.query("insert into notifica (id_pro,tienda,novedades,ofertas) values ("+str(id_pro)+","+str(t_oid)+",\'"+novedad+"\',\'"+oferta+"\')")
			res = db.query("COMMIT")


        #correo a Sergio con informacion de la tienda, poblacion, n+ de regalos y novios
        correo = '/usr/sbin/sendmail spr@elportaldeinternet.com'
        #pre_total2 = convierte(int(round((pre_total*166.386),0)))
        p = os.popen(correo,'w')
        p.write('From:info@elportaldeinternet.com\n')
        p.write('To:spr@elportaldeinternet.com\n')
        p.write('Subject: [ADDREGTV]Se han añadido productos a una tienda\n')
        p.write('\n\n')
        p.write('Se han añadido productos a una tienda\n')
        #Datos de la tienda
        r_tienda = db.query("select nombre,poblacion,provincia from tienda where oid="+t_oid)
        nombre_tienda = r_tienda.dictresult()[0]["nombre"]
        poblacion_tienda = r_tienda.dictresult()[0]["poblacion"]
        provincia_tienda = r_tienda.dictresult()[0]["provincia"]
        p.write('Tienda: '+nombre_tienda+' de '+poblacion_tienda+' ('+provincia_tienda+')')
        if mensaje2 !='':
        	p.write('\n'+mensaje2)        	        	
        #p.write('\nSe han creado '+str(contador)+' regalos con un precio total de '+str(pre_total)+' Euros ('+str(pre_total2)+' ptas.)\n')
	p.close()
	
	if mailv==1:
		#Datos de la tienda
		r_tienda = db.query("select nombre,poblacion,provincia from tienda where oid="+t_oid)
		nombre_tienda = r_tienda.dictresult()[0]["nombre"]
		poblacion_tienda = r_tienda.dictresult()[0]["poblacion"]
		provincia_tienda = r_tienda.dictresult()[0]["provincia"]
		#correo a Sergio con informacion de la tienda, poblacion, n+ de regalos y novios
		correo = '/usr/sbin/sendmail spr@elportaldeinternet.com'
		p = os.popen(correo,'w')
		p.write('From:info@elportaldeinternet.com\n')
		p.write('To:spr@elportaldeinternet.com\n')
		p.write('Subject: Información de alta de producto Valentí\n')
		p.write('\n\n')
		p.write("Se han añadido productos a una tienda \n")
		p.write('Tienda: '+nombre_tienda+' de '+poblacion_tienda+' ('+provincia_tienda+')\n')
		p.write(mensajev)
		p.close()	

#print("rm -f "+path1+"/*")
os.system('rm -f '+path1+'/*')
db.close()
print("<font color=#FF0000 size=7><center>Productos añadidos a la tienda</center></font>")
