Esempio n. 1
0
    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
Esempio n. 2
0
        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
Esempio n. 3
0
 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]
Esempio n. 4
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]
Esempio n. 5
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
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
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)
Esempio n. 9
0
    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
Esempio n. 10
0
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