def create(usuario, codigo, estructura):
     query = " INSERT INTO %s (id, codigo, estructura_id) VALUES (%s, %s, %s)" % (Estudiante.tabla, str(usuario.id), str(codigo), str(estructura.id))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def create(usuario):
     query = " INSERT INTO %s (id) VALUES (%s)" % (Administrador.tabla, str(usuario.id))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def create(usuario, codigo):
     query = " INSERT INTO %s (id, codigo) VALUES (%s, %s)" % (Funcionario.tabla, str(usuario.id), str(codigo))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def isValidUser(username, contrasena):
     query =  "SELECT id FROM %s WHERE username='******' AND contrasena='%s' AND HABILITADO='Y'" % (Usuario.tabla, username, contrasena)
     cursor =  Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def setJurado(self, jurado):
     query = "UPDATE %s SET jurado_id=%s WHERE id=%s" % (Tesis.tabla, str(jurado.id), str(self.id))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         return True
     except Exception, e:
         print e
         return False
 def setDirector(self, director):
     query = "UPDATE %s SET director_id=%s WHERE id=%s" % (Tesis.tabla, str(director.id), str(self.id))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         return True
     except Exception, e:
         print e
         return False
 def create(nombre):
     query = " INSERT INTO %s (id, nombre) VALUES (sequence_tesis.nextval, '%s')" % (Tesis.tabla, str(nombre))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         cursor.execute("select sequence_tesis.currval from DUAL")
     except Exception, e:
         print e
         print "No es posible guardar objeto"
	def getAllWith(criterio,entrada):
		cursor = Config.getCursor()
		query = "SELECT * FROM %s JOIN %s ON %s.id = %s.id WHERE %s.%s='%s'" % (Administrador.tabla,Usuario.tabla,Administrador.tabla,Usuario.tabla,Usuario.tabla,criterio,entrada)
		try:
			cursor.execute(query)
		except Exception, e:
			print e
			print "No es posible ejecutar query  o no hay resultados validos"
			return []
 def addEstudiante(self, estudiante):
     query =  "INSERT INTO %s  (grupo_id, estudiante_id) VALUES (%s, %s)" % (Grupo.tabla_estudiantes, self.id, estudiante.id)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         return True
     except Exception, e:
         print e
         return False
 def getAll():
     cursor = Config.getCursor()
     query = "SELECT * FROM %s " % Usuario_de_internet.tabla
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible ejecutar query  o no hay resultados validos"
         return []
 def create(nombre, usuario, contrasena, e_mail="*****@*****.**", habilitado="Y"):
     query = " INSERT INTO %s (id, email, contrasena, nombre, habilitado, username) VALUES (sequence_usuarios.nextval,'%s','%s','%s','%s','%s')" % (Usuario.tabla, str(e_mail), contrasena, nombre, habilitado, usuario)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         cursor.execute("select sequence_usuarios.currval from DUAL")
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def getAll():
     query = "SELECT * FROM %s" % (Funcionario.tabla)
     cursor = Config.getCursor()
     funcionarios = []
     try:
         cursor.execute(query)
         rows = cursor.fetchall()
     except Exception, e:
         print e
 def create(periodo, fecha_final, fecha_inicial, tiempo_maximo, plantilla):
     query = " INSERT INTO %s (id, periodo, fecha_final, fecha_inicial, tiempo_maximo, plantilla_id) VALUES (sequence_evaluaciones.nextval,'%s',to_date('%s','yyyy/mm/dd'),to_date('%s','yyyy/mm/dd'),'%s','%s')" % (Evaluacion.tabla, periodo, fecha_final, fecha_inicial, tiempo_maximo, plantilla.id)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         cursor.execute("select sequence_evaluaciones.currval from DUAL")
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def obtenerCiudad(id):
     cursor = Config.getCursor()
     query = "SELECT ciudades.nombre FROM usuarios_de_internet JOIN ciudades ON usuarios_de_internet.dr_ciudad_id = ciudades.id WHERE usuarios_de_internet.id = %d" %id
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible ejecutar query  o no hay resultados validos"
         return []
 def save(self):
     query = "UPDATE  %s SET sexo='%s', fecha_nacimiento='%s', direccion_despacho='%s', dr_ciudad_id=%d telefono =%d WHERE id=%d" % (Usuario_de_internet.tabla, self.sexo, self.fecha_nacimiento, self.direccion_despacho, self.dr_ciudad_id, self.telefono,self.id)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible actualizar el registro"
         return None
 def getTipo(id):
     cursor = Config.getCursor()
     query = "SELECT id FROM administradores WHERE id=%d" %id
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible ejecutar query  o no hay resultados validos"
         return []
 def getById(id):
     query = "SELECT * FROM %s WHERE id=%s" % (Estudiante.tabla, id)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         row = cursor.fetchone()
     except Exception, e:
         print e
         return None
 def setTesis(self, tesis):
     query = "UPDATE %s SET tesis_id=%s WHERE id=%s" % (Estudiante.tabla, str(tesis.id), str(self.usuario.id))
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         return True
     except Exception, e:
         print e
         print "No es posible guardar objeto"
         return False
 def getById(id):
     cursor = Config.getCursor()
     query = "SELECT * FROM %s WHERE id=%s" % (Pregunta.tabla, id)
     try:
         cursor.execute(query)
         row = cursor.fetchone()  
     except:
         print "No es posible ejecutar query  o no hay resultados validos"
         return None
     return Pregunta(row[0], row[1])
 def getAll():
     query =  "SELECT * FROM %s" % (Estudiante.tabla)
     cursor = Config.getCursor()
     estudiantes = []
     try:
         cursor.execute(query)
         rows = cursor.fetchall()
     except Exception, e:
         print e
         return []
 def getById(id):
     cursor = Config.getCursor()
     query = "SELECT * FROM %s WHERE id=%s" % (Usuario.tabla, id)
     try:
         cursor.execute(query)
         row = cursor.fetchone()  
     except Exception, e:
         print e
         print "No es posible ejecutar query  o no hay resultados validos"
         return None
 def create(evaluacion_id, evaluado_id, evaluador_id, preguntas, estado="Completo", fecha=date.today()):
     # Preguntas, arreglo parejas ordenadas (id_pregunta, calificacion)
     calificaciones = [float(p[0]) for p in preguntas]
     promedio =  sum(calificaciones) / len(calificaciones)
     query = "INSERT INTO %s (id, evaluador_id, evaluado_id, fecha, promedio, evaluacion_id, estado) values (sequence_resultados.nextval, %s, %s, to_date('%s', 'yyyy/mm/dd'), %s, %s, '%s')" % (Resultado.tabla, evaluador_id, evaluado_id, fecha.strftime('%Y/%m/%d'), str(promedio), str(evaluacion_id), str(estado))
     try:
         cursor  = Config.getCursor()
         cursor.execute(query)
     except Exception, e:
         return None
 def create(nombre, modificable="Y", eliminada="N"):
     query = " INSERT INTO %s (id, nombre, modificable, eliminada)  VALUES (sequence_plantillas.nextval, '%s', '%s', '%s')" % (Plantilla.tabla, nombre, modificable, eliminada)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         cursor.execute("select sequence_plantillas.currval from DUAL")
     except Exception, e:
         print e
         print query
         print "No es posible guardar objeto"
         return None
 def create(pregunta):
     query = " INSERT INTO %s (id, pregunta)  VALUES (sequence_preguntas.nextval, '%s')" % (Pregunta.tabla, pregunta)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
         cursor.execute("select sequence_preguntas.currval from DUAL")
     except Exception, e:
         print e
         print query
         print "No es posible guardar objeto"
         return None
 def create(usuario, cargo_director, estructura_padre=None):
     if estructura_padre:
         query = " INSERT INTO %s (id, director_id, dependencia_id) VALUES (%s, %s, %s)" % (Estructura.tabla, str(usuario.id),  str(cargo_director.id), str(estructura_padre.id))
     else:
         query = " INSERT INTO %s (id, director_id) VALUES (%s, %s)" % (Estructura.tabla, str(usuario.id), str(cargo_director.id))
     try:
         cursor = Config.getCursor()
         cursor.execute(query)
     except Exception, e:
         print e
         print "No es posible guardar objeto"
 def getAll():
     query = "SELECT * FROM %s" % Evaluacion.tabla
     cursor = Config.getCursor()
     evaluaciones = []
     try:
         cursor.execute(query)
         rows =  cursor.fetchall()
     except:
         return evaluaciones
     for row in rows:
         evaluaciones.append(Evaluacion(row[0], row[1], row[3], row[2], row[4], row[5]))
     return evaluaciones
 def create(identificador,sexo, fecha_nacimiento, direccion_despacho, dr_ciudad_id, telefono):
     if Usuario.getById(identificador) == None :
         print "El usuario no existe, no se puede crear el Usuario_de_internet"
         return None;
     else:
         query = " INSERT INTO %s (id, sexo, fecha_nacimiento, direccion_despacho, dr_ciudad_id, telefono) VALUES (%s,'%s','%s','%s',%s,%s)  RETURNING id " % (Usuario_de_internet.tabla, str(int(identificador)), sexo, fecha_nacimiento, direccion_despacho,str(int(dr_ciudad_id)), str(int(telefono)))
         cursor = Config.getCursor()
         try:
             cursor.execute(query)
         except Exception, e:
             print e 
             print "No es posible guardar objeto"
 def getAvailableForUser(usuario):
     fecha_actual = date.today()
     #Validad que no haya sido contestada y que el usuario pueda contestarla 
     query =  "SELECT evaluacion_id, evaluado_id, evaluador_id FROM %s WHERE evaluador_id=%s MINUS SELECT evaluacion_id, evaluado_id, evaluador_id FROM %s" % (Evaluacion.tabla_usuarios, usuario.id, Evaluacion.tabla_resultados)
     cursor = Config.getCursor()
     available = []
     try:
         cursor.execute(query)
         rows =  cursor.fetchall()
     except Exception, e:
         print e
         return []
 def setCargo(self, cargo, fecha_inicio=date.today()):
     # Primero le doy formato a la fecha
     fecha = fecha_inicio.strftime("%d/%m/%Y")
     query = "INSERT INTO %s (fecha_inicio, funcionario_id, cargo_id)  VALUES (to_date('%s', 'dd/mm/yyyy'), %s, %s)" % (Funcionario.tabla_cargos, fecha, self.id, cargo.id)
     try:
         cursor = Config.getCursor()
         cursor.execute(query)
         return True
     except Exception, e:
         print e
         print "No es posible guardar objeto"
         return False
 def getAll():
     cursor = Config.getCursor()
     query = "SELECT * FROM %s " % Pregunta.tabla
     try:
         cursor.execute(query)
     except:
         print "No es posible ejecutar query  o no hay resultados validos"
         return []
     preguntas  = []
     rows = cursor.fetchall()
     for row in rows:
         cargos.append(Pregunta(row[0], row[1]))
     return preguntas