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:
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)
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
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))
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
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()