def verPersonasQ(payload, tampagina): monitor = None token = None if payload.has_key('q'): token = payload['q'] if payload.has_key('monitor'): monitor = payload['monitor'] if (token is None): token = "" tokens = token.split() #limpio los tokens de menos de 3 tokens = [x for x in tokens if checkearTamanioToken(x, 3)] if (len(tokens) > 0): busqueda = "SELECT * FROM Asistente WHERE " for untoken in tokens: busqueda += "busqueda IN ('" + untoken.lower() + "') AND " if not monitor is None: busqueda += "monitor = " + str(monitor) + " AND" busqueda = busqueda[:-4] else: busqueda = "SELECT * FROM Asistente " if not monitor is None: busqueda += "WHERE monitor = " + str(monitor) + " " busqueda += "ORDER BY apellidos ASC" nextPoint = None if payload.has_key('next'): nextPoint = payload['next'] objeto = comun.buscarGQL({ "q": busqueda, "n": long(tampagina), "next": nextPoint }) return objeto
def buscar(request): ti = request.GET.get('start', to) tf = request.GET.get('end', to) persona = request.GET.get('persona', None) varn = request.GET.get('n', 100) varnext = request.GET.get('next', '') varti = datetime.datetime.strptime(ti, "%Y-%m-%d") vartf = datetime.datetime.strptime(tf, "%Y-%m-%d") varttitext = varti.strftime("%Y, %m, %d, %H, %M, %S") varttftext = vartf.strftime("%Y, %m, %d, %H, %M, %S") #Recordar que GQL no tiene OR! Ademas no puedo usar dos variables para start <= X and end <= busqueda = "SELECT * FROM Cita " busqueda += "WHERE " busqueda += "start >= DATETIME(" + varttitext + ") AND start <= DATETIME(" + varttftext + ") " if persona != None: busqueda += "and persona=" + persona + " " busqueda += "ORDER BY start ASC" objeto = comun.buscarGQL({ "q": busqueda, "n": long(varn), "next": varnext }) return objeto
def buscarPersonaConCedula(numero): #busco por correo busqueda = "SELECT * FROM Asistente " busqueda += "WHERE " busqueda += "cedula = '" + str(numero) + "'" objeto = comun.buscarGQL({"q": busqueda, "n": long(1)}) if (len(objeto['datos']) == 0): return None return objeto['datos'][0]
def buscarPersonaConCorreo(correo): #busco por correo busqueda = "SELECT * FROM Asistente " busqueda += "WHERE " busqueda += "correo = '" + correo.upper() + "'" objeto = comun.buscarGQL({"q": busqueda, "n": long(1)}) if (len(objeto['datos']) == 0): return None return objeto['datos'][0]
def verTodos(payload, tampagina): busqueda = "SELECT * FROM Asistente ORDER BY apellidos ASC" nextPoint = None if payload.has_key('next'): nextPoint = payload['next'] objeto = comun.buscarGQL({ "q": busqueda, "n": long(tampagina), "next": nextPoint }) return objeto
def buscarMonitores(payload, tampagina): busqueda = "SELECT * FROM Asistente WHERE rol = 2" nextPoint = None if not payload is None and payload.has_key('next'): nextPoint = payload['next'] objeto = comun.buscarGQL({ "q": busqueda, "n": long(tampagina), "next": nextPoint }) return objeto
def buscar(request): camara = request.GET.get('camara', "1") ti = request.GET.get('ti', to) tf = request.GET.get('tf', to) varn = request.GET.get('n', 100) varnext = request.GET.get('next', '') varti = datetime.datetime.fromtimestamp(float(ti)) vartf = datetime.datetime.fromtimestamp(float(tf)) varttitext = varti.strftime("%Y, %m, %d, %H, %M, %S") varttftext = vartf.strftime("%Y, %m, %d, %H, %M, %S") busqueda = "SELECT * FROM Foto WHERE camara='"+camara+"' AND epoch >= DATETIME("+varttitext+") AND epoch <= DATETIME("+varttftext+") ORDER BY epoch ASC" logging.info(busqueda) objeto = comun.buscarGQL({"q":busqueda, "n":long(varn), "next": varnext}) return objeto
def RESTpaginar(request, ident): response = HttpResponse("", content_type='application/json') if request.method == 'PUT': objeto = simplejson.loads(request.raw_post_data) if (objeto['cursor'] and len(objeto['cursor']) > 0): objeto['busqueda']['next'] = objeto['cursor'] rta = comun.buscarGQL(objeto['busqueda']) ans = {'datos': comun.to_dict(rta['datos'])} if (rta.has_key('next')): ans['next'] = rta['next'] todo = simplejson.dumps(ans) response.write(todo) return response else: return HttpResponse(status=403)
def verAsistencia(payload, tampagina): fecha = payload['fecha'] nextPoint = None if payload.has_key('next'): nextPoint = payload['next'] fechaAntes = datetime.datetime.fromtimestamp(float(fecha)) fechaDespues = datetime.datetime.fromtimestamp( float(fecha)) + datetime.timedelta(hours=24) formato = "%Y, %m, %d, %H, %M, %S" busqueda = "SELECT * FROM Asistencia " busqueda += "WHERE " busqueda += "fecha > DATETIME(" + fechaAntes.strftime( formato) + ") AND " busqueda += "fecha < DATETIME(" + fechaDespues.strftime(formato) + ") " busqueda += "ORDER BY fecha ASC " objeto = comun.buscarGQL({ "q": busqueda, "n": long(tampagina), "next": nextPoint }) return objeto
def principal(request, data): if request.method == 'GET': #incluye los parametros del get no va a ignorar el lenguaje (solo se usa para memcache) var_full_path = request.get_full_path() #incluye hasta la ? y va a ignorar el lenguaje var_path = request.path leng = re.findall('^(\/leng-)([a-zA-Z]{3})(\/)', var_path) if (len(leng) > 0): leng = leng[0][1].lower() var_path = var_path[9:] data = data[9:] else: leng = LENGUAJE_PRED user = users.get_current_user() #El usuario no administrativo pasa por memcache if not users.is_current_user_admin(): anterior = memcache.get(var_full_path) if (anterior): anterior = anterior.replace( '__USER__', generarVariablesUsuario(var_full_path, leng), 1) return HttpResponse(anterior, content_type='text/html') #Buscar un template valido para la url partes = data.split('/') archivo = None directorio = None archivoExistente = None if (not data in COMMON_TEMPLATES.keys()): for parte in partes: #Se elimina la extension parte = parte.split('.')[0] if (archivo == None): archivo = os.path.join(TEMPLATE_DIRS[0], parte + '.html') directorio = os.path.join(TEMPLATE_DIRS[0], parte) else: archivo = os.path.join(directorio, parte + '.html') directorio = os.path.join(directorio, parte) if (os.path.isfile(archivo)): archivoExistente = archivo break #se valida la direccion if (archivoExistente == None): archivoExistente = 'index.html' tmpl = os.path.join(TEMPLATE_DIRS[0], archivoExistente) else: if ((COMMON_TEMPLATES[data]['admin'] and users.is_current_user_admin()) or not COMMON_TEMPLATES[data]['admin']): archivo = os.path.join(ROOT_PATH, 'templates/' + data) archivoExistente = archivo tmpl = archivo else: archivo = os.path.join(ROOT_PATH, 'templates/403.html') archivoExistente = archivo tmpl = archivo #Se lee el template para saber cuales ids se deben buscar de la base de datos llavesEntidades = [] identificadores = [] module = __import__('models') todo = procesarTemplate(tmpl, var_path, TEMPLATE_DIRS[0]) for parte in todo['nodos']: class_ = getattr(module, parte['tipo']) identificadores.append(ndb.Key(class_, parte['id'])) llavesEntidades = todo['busquedas'] #Se leen las entidades list_of_entities = ndb.get_multi(identificadores) dicci = {} for entidad in list_of_entities: if entidad is not None: nombreClase = entidad.__class__.__name__ if not dicci.has_key(nombreClase): dicci[nombreClase] = {} dicci[nombreClase][entidad.key.id()] = entidad.to_dict() entidades = {} cursores = {} data_q = request.GET.get('data-q', None) data_next = request.GET.get('data-next', None) for llaveEntidad in llavesEntidades: objeto_busqueda = simplejson.loads(llaveEntidad) if (data_q == llaveEntidad and not data_next == None): objeto_busqueda['next'] = data_next objeto = comun.buscarGQL(objeto_busqueda) entidades[llaveEntidad] = comun.to_dict(objeto['datos']) if (objeto.has_key('next')): cursores[llaveEntidad] = objeto['next'] valAnalytics = '' if (dicci.has_key('Configuracion')): millave = 'analytics_' + leng if (dicci['Configuracion'].has_key('/general') and dicci['Configuracion']['/general'].has_key(millave)): valor = dicci['Configuracion']['/general'][millave] if (not valor is None and len(valor) > 0): valAnalytics = ANALYTICS.replace('$1', valor) context = { 'ANALYTICS': valAnalytics, 'admin': users.is_current_user_admin(), 'path': var_path, 'dicci': dicci, 'leng': leng, 'leng_pred': LENGUAJE_PRED, 'user': user, 'entidades': entidades, 'cursores': cursores, 'JS_COMUNES0': JS_COMUNES0, 'JS_COMUNES1': JS_COMUNES1, 'JS_COMUNES2': JS_COMUNES2, 'JS_COMUNES3': JS_COMUNES3, 'DATETIME_NOW': comun.DATETIME_NOW, 'DATETIME_NOW_LAST': comun.DATETIME_NOW_LAST, 'DATETIME_NOW_FIRST': comun.DATETIME_NOW_FIRST, 'DATE_NOW': comun.DATE_NOW } respuesta = direct_to_template(request, archivoExistente, context) if not users.is_current_user_admin(): memcache.set(var_full_path, respuesta.content) respuesta.content = respuesta.content.decode('utf-8').replace( '__USER__', generarVariablesUsuario(var_full_path, leng), 1) return respuesta