Ejemplo n.º 1
0
	def get(self):
		ofsucs = OfertaSucursal.all()
		for ofsuc in ofsucs:
			isgeosucQ = db.GqlQuery("SELECT * FROM Geosuc WHERE IdSuc = :1", ofsuc.IdSuc)
			isgeosuc = isgeosucQ.fetch(1)
			if not isgeosuc or isgeosuc == '' or isgeosuc is None:
				#self.response.out.write("1")
				geosuc = Geosuc(location = db.GeoPt(ofsuc.lat, ofsuc.lng))
				geosuc.IdSuc = ofsuc.IdSuc
				geosuc.put()
			"""else:
Ejemplo n.º 2
0
	def get(self):
		"""cats = Categoria.all()
		for cat in cats:
			db.delete(cat)"""
		ofs = Oferta.all()
		for of in ofs:
			db.delete(of)
		ofsucs = OfertaSucursal.all()
		for ofsuc in ofsucs:
			db.delete(ofsuc)
		ofpals = OfertaPalabra.all()
		for ofpal in ofpals:
			db.delete(ofpal)
Ejemplo n.º 3
0
def randOffer(nb,empresa=None):
	numoffer = 0
	deadline = 50
	randoffer = memcache.get('randoffer')
	if randoffer is None:
		offerlist = []
		while len(offerlist) < 250 and deadline > 0:
			letter = randLetter()
			ofertas = OfertaSucursal.all().filter("IdOft >=", letter).filter("IdOft <", letter + u"\ufffd")
			if ofertas:
				for oferta in ofertas:
					exists = False
					for oft in offerlist:
						if oferta.IdOft == oft['id']:
							exists = True
					if exists == False:
						offerdict = {'id': oferta.IdOft, 'oferta': oferta.Oferta, 'lat': oferta.Lat, 'long': oferta.Lng, 'url_logo': 'http://' + APPID + '/ofimg?id=' + oferta.IdOft, 'IdEmp': oferta.IdEmp}
						offerlist.append(offerdict)
			deadline -= 1
		memcache.add('randoffer', offerlist, 1800)

	for i in range(10):
		randoffer = memcache.get('randoffer')
		if randoffer is not None:
			break
	if randoffer is None:
		return []
	else:
		returnlist = []
		for oferta in randoffer:
			if numoffer < nb:
				valid = True
				if empresa and empresa is not None:
					if oferta['IdEmp'] != empresa:
						valid = False
				if valid:
					returnlist.append(oferta)
					numoffer += 1
			else:
				break
		return returnlist
Ejemplo n.º 4
0
	def get(self):
		timestamp = self.request.get('timestamp')
		horas = self.request.get('horas')
		self.response.headers['Content-Type'] = 'text/plain'
		if not timestamp or not horas or timestamp == None or horas == None or timestamp == '' or horas == '':
			errordict = {'error': -1, 'message': 'Must specify variables in GET method (i.e. /db?timestamp=<YYYYMMDDHH24>&horas=<int>)'}
			self.response.out.write(json.dumps(errordict))
		elif len(timestamp) != 10:
			errordict = {'error': -2, 'message': 'timestamp must be 10 chars long: YYYYMMDDHH24'}
                        self.response.out.write(json.dumps(errordict))
		else:
			try:
				fechastr = timestamp[0:8]
				timestamp = datetime.strptime(timestamp,'%Y%m%d%H')
				timestampdia = datetime.strptime(fechastr, '%Y%m%d')
				horas = int(horas)
				timestampend = timestamp + timedelta(hours = horas)
			except ValueError:
				errordict = {'error': -2, 'message': 'Value Error. Timestamp must be YYYYMMDDHH24 and horas is an integer'}
				self.response.out.write(json.dumps(errordict))
			if horas > 24:
				errordict = {'error': -2, 'message': 'Horas must be <= 24'}
				self.response.out.write(json.dumps(errordict))
			else:
				self.response.headers['Content-Type'] = 'text/plain'

				suclist = memcache.get('wssucursales-' + fechastr)
				if suclist is None:
					outputlist = []
					sucursales = Sucursal.all().filter("FechaHora >=", timestampdia).filter("FechaHora <", timestampdia + timedelta(days = 1))
					for sucursal in sucursales:
						sucdict = {}
						sucdict['id'] = sucursal.IdSuc
						sucdict['nombre'] = sucursal.Nombre
						ent = None
						entidades = Entidad.all().filter("CveEnt =", sucursal.DirEnt)
						for entidad in entidades:
							ent = entidad.Entidad
						mun = None
						municipios = Municipio.all().filter("CveEnt =", sucursal.DirEnt).filter("CveMun =", sucursal.DirMun)
						for municipio in municipios:
							mun = municipio.Municipio
						sucdict['direccion'] = {'calle': sucursal.DirCalle, 'colonia': sucursal.DirCol, 'cp': sucursal.DirCp,'entidad_id': sucursal.DirEnt, 'entidad': ent,'municipio_id': sucursal.DirMun, 'municipio': mun}
						sucdict['logo'] = None
						sucdict['lat'] = sucursal.Geo1
						sucdict['long'] = sucursal.Geo2
						empresaQ = db.GqlQuery("SELECT * FROM Empresa WHERE IdEmp = :1", sucursal.IdEmp)
						empresas = empresaQ.fetch(1)
						empresadict = {}
						for empresa in empresas:
							empresadict = {'id': empresa.IdEmp, 'nombre': empresa.Nombre, 'url': empresa.Url, 'url_logo': 'http://' + APPID + '/spic?IdEmp=' + empresa.IdEmp}
						sucdict['empresa'] = empresadict
						ofertas = OfertaSucursal.all().filter("IdSuc =", sucursal.IdSuc)
						ofertaslist = []
						for oferta in ofertas.run(batch_size=10000):
							ofs = Oferta.all().filter("IdOft =", oferta.IdOft)
							of = []
							for ofinst in ofs.run(limit=1):
								of = ofinst
							ofertadict = {}
							ofertadict['id'] = oferta.IdOft
							ofertadict['oferta'] = oferta.Oferta
							ofertadict['descripcion'] = oferta.Descripcion
							ofertadict['descuento'] = oferta.Descuento
							ofertadict['promocion'] = oferta.Promocion
							ofertadict['enlinea'] = oferta.Enlinea
							#ofertadict['categoria'] = oferta.IdCat
							ofertadict['precio'] = oferta.Precio
							ofertadict['url'] = oferta.Url
							if of.BlobKey and of.BlobKey is not None:
								url = 'http://' + APPID + '/ofimg?id=' + str(of.BlobKey.key())
							else:
								url = ''
							ofertadict['url_logo'] = url
							palabraslist = []
							palabras = OfertaPalabra.all().filter("IdOft =", oferta.IdOft)
							for palabra in palabras:
								palabraslist.append(palabra.Palabra)
							ofertadict['palabras'] = palabraslist
							cat = None
							# CATEGORIA -temporal-
							idcat = None
							ofts = Oferta.all().filter("IdOft =", oferta.IdOft)
							for oft in ofts:
								idcat = oft.IdCat
							categorias = Categoria.all().filter("IdCat =", idcat)
							for categoria in categorias:
								cat = categoria.Categoria
							ofertadict['categoria_id'] = idcat
							ofertadict['categoria'] = cat
							ofertaslist.append(ofertadict)
						sucdict['ofertas'] = ofertaslist
						sucdict['timestamp'] = str(sucursal.FechaHora)
						outputlist.append(sucdict)
					memcache.add('wssucursales-' + fechastr, outputlist, 3600)
					suclist = outputlist

				if suclist is None:
					self.response.out.write(json.dumps([]))
				else:
					outputlist = []
					for suc in suclist:
						valid = False
						suctimestamp = datetime.strptime(suc['timestamp'].split('.')[0], '%Y-%m-%d %H:%M:%S')
						if timestamp <= suctimestamp and suctimestamp <= timestampend:
							valid = True
						if valid == True:
							outputlist.append(suc)
					self.response.out.write(json.dumps(outputlist))
Ejemplo n.º 5
0
	def post(self):
		self.response.headers['Content-Type'] = 'text/plain'
		try:
			batchsize = int(self.request.get('batchsize'))
			batchnumber = int(self.request.get('batchnumber'))
			if batchsize is None:
				batchsize = 10
			if batchnumber is None:
				batchnumber = 0
		except ValueError:
			batchsize = 10
			batchnumber = 0

		offset = batchnumber * batchsize
		sucs = Sucursal.all()
		for b in MvBlob.all().order ("-FechaHora").run(limit=1):
			sucs.filter("FechaHora >", b.FechaHora)
		sucs.order("FechaHora")#[offset:offset + batchsize]
		logging.info('MvBlob generation, batchsize: ' + str(batchsize) + ',batchnumber: ' + str(batchnumber) + '. [' + str(offset) + ':' + str(offset + batchsize) + ']')
		for suc in sucs.run(offset=offset, limit=batchsize):
			HasOferta = False
			olist = []
			OSs = OfertaSucursal.all().filter("IdSuc =", suc.IdSuc)
			for OS in OSs:
				HasOferta = True
				olist.append(OS.IdOft)
			if HasOferta:
				als = MvBlob.all().filter("IdSuc =", suc.IdSuc)
				for al in als:
					db.delete(al)
				sucdict = {'id': suc.IdSuc, 'nombre': suc.Nombre, 'lat': suc.Geo1, 'long': suc.Geo2, 'fechamod': str(suc.FechaHora)}
				ent = None
	                        entidades = Entidad.all().filter("CveEnt =", suc.DirEnt)
	                        for entidad in entidades:
		                        ent = entidad.Entidad
	                        mun = None
	                        municipios = Municipio.all().filter("CveEnt =", suc.DirEnt).filter("CveMun =", suc.DirMun)
	                        for municipio in municipios:
		                        mun = municipio.Municipio
				sucdict['direccion'] = {'calle': suc.DirCalle, 'colonia': suc.DirCol, 'cp': suc.DirCp,'entidad_id': suc.DirEnt, 'entidad': ent,'municipio_id': suc.DirMun, 'municipio': mun}
				empresas = Empresa.all().filter("IdEmp = ", suc.IdEmp)
	                        for empresa in empresas.run(limit=1):
			                empresadict = {'id': empresa.IdEmp, 'nombre': empresa.Nombre, 'url': empresa.Url, 'url_logo': ''}
		                        sucdict['empresa'] = empresadict
				urllogo = 'http://www.elbuenfin.org/imgs/imageDefault.png'
				ofertaslist = []
				for o in olist:
					ofertas = Oferta.all().filter("IdOft =", o).run()
					for oferta in ofertas:
						url = 'http://www.elbuenfin.org/imgs/imageDefault.png'
		                                try:
		                                        if oferta.Codigo and oferta.Codigo.replace('https://','http://')[0:7] == 'http://':
		                                                url = oferta.Codigo
						except AttributeError:
	                                                err = 'logourl'
						try:
		                                        if oferta.Codigo is None and oferta.BlobKey  and oferta.BlobKey != None and oferta.BlobKey.key() != 'none':
								url = 'http://' + APPID + '/ofimg?id=' + str(oferta.BlobKey.key())
		                                except AttributeError:
		                                        err = 'logourl'
						if url == 'http://www.elbuenfin.org/imgs/imageDefault.png' and oferta.Promocion is not None and oferta.Promocion != '':
							url = oferta.Promocion
						if oferta.Promocion is not None and oferta.Promocion != '':
							urllogo = oferta.Promocion
						ofertadict = {'id': oferta.IdOft, 'oferta': oferta.Oferta, 'descripcion': oferta.Descripcion, 'descuento': oferta.Descuento, 'promocion': oferta.Promocion, 'enlinea': oferta.Enlinea, 'precio': oferta.Precio, 'url': oferta.Url, 'url_logo': url, 'fechapub': str(oferta.FechaHoraPub.strftime('%Y-%m-%d'))}
	                                        palabraslist = []
	                                        palabras = OfertaPalabra.all().filter("IdOft =", oferta.IdOft)
	                                        for palabra in palabras:
		                                        palabraslist.append(palabra.Palabra)
	                                        ofertadict['palabras'] = palabraslist
	                                        cat = None
	                                        categorias = Categoria.all().filter("IdCat =", oferta.IdCat)
	                                        for categoria in categorias:
	                                        	cat = categoria.Categoria
	                                        ofertadict['categoria_id'] = oferta.IdCat
	                                        ofertadict['categoria'] = cat

						ofertaslist.append(ofertadict)
				sucdict['ofertas'] = ofertaslist
				sucdict['empresa']['url_logo'] = urllogo
				mvblob = MvBlob()
				mvblob.FechaHora = suc.FechaHora
				mvblob.IdSuc = suc.IdSuc
				mvblob.Blob = json.dumps(sucdict)
				mvblob.put()
		else:
			pass
Ejemplo n.º 6
0
	def get(self):
		"""for j in range(0,10):
                        categoria = Categoria()
                        categoria.IdCat = j
                        categoria.Categoria = 'Dummy Categoria ' + str(j)
                        categoria.put()"""

		sucursalesQ = db.GqlQuery("SELECT * FROM Sucursal")
                for sucursal in sucursalesQ.run(batch_size=100000):
			EQ = db.GqlQuery("SELECT * FROM Empresa WHERE IdEmp = :1", sucursal.IdEmp)
			Es = EQ.fetch(1)
			NombreE = None
			for E in Es:
				NombreE = E.Nombre
			for i in range(0,10):
				now = datetime.datetime.now()

				oferta = Oferta()
				ofertasucursal = OfertaSucursal()

				oferta.IdOft = randString(10,False)
				oferta.IdEmp = sucursal.IdEmp
				oferta.IdCat = random.randrange(10)
				oferta.Empresa = NombreE
				oferta.Oferta = 'Dummy oferta ' + str(i)
				oferta.Descripcion = 'Dummy desc ' + str(i)
				oferta.Codigo = 'dummycodigo' + str(i)
				oferta.Precio = str(i) + '99.99'
				oferta.Descuento = '10%'
				oferta.Enlinea = True
				oferta.Url = 'http://localhost:8080/' + sucursal.Nombre + '/' + str(i)
				oferta.Tarjetas = ''
				oferta.Meses = None
				oferta.FechaHoraPub = now
				oferta.StatusPub = True
				oferta.FechaHora = now
				oferta.put()

				ofertasucursal.IdOft = oferta.IdOft
				ofertasucursal.IdEmp = sucursal.IdEmp
				ofertasucursal.IdSuc = sucursal.IdSuc
				ofertasucursal.IdCat = oferta.IdCat
				ofertasucursal.Empresa = NombreE
				ofertasucursal.Sucursal = sucursal.Nombre
				ofertasucursal.Descripcion = oferta.Descripcion
				ofertasucursal.Oferta = 'Dummy oferta ' + str(i)
				ofertasucursal.Precio = str(i) + '99.99'
				ofertasucursal.Descuento = '10%'
				ofertasucursal.Url = 'http://localhost:8080/' + sucursal.Nombre + '/' + str(i)
				ofertasucursal.StatusPub = True
				ofertasucursal.lat = sucursal.Latitud
				ofertasucursal.lng = sucursal.Longitud
				ofertasucursal.put()

				for k in range(0,5):
					randnum = random.randrange(20)
					ofertapalabra = OfertaPalabra()
					ofertapalabra.IdEmp = sucursal.IdEmp
					ofertapalabra.IdOft = oferta.IdOft
					ofertapalabra.Palabra = 'palabradummy' + str(randnum)
					ofertapalabra.FechaHora = now
					ofertapalabra.put()