def getAlumnos(sef, idAsociacion):
        '''
        Devuelve una lista con los alumnos matriculados en esa asignatura y grupo
        Devuelve: id del alumno, nombre, apellidos e id
        '''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        isAsociacion='\''+idAsociacion+'\''

        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        #query='SELECT nombre, apellidos, id_alumno from Alumno where id_alumno IN (select id_alumno from Matricula where id_asociacion='+idAsociacion+');'

        #Ver justificació de modificación en getProfesores:
        query = 'SELECT nombre, apellidos, Alumno.id_alumno, id_matricula FROM (SELECT id_alumno, id_matricula FROM Matricula WHERE id_asociacion='+idAsociacion+') AS tablaMatricula, Alumno WHERE tablaMatricula.id_alumno = Alumno.id_alumno';

        if v:
            print query

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsociaciones(self):
        '''
        Devuelve una lista simplificada de todas las asociaciones dadas de alta en el sistema.
        '''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query="select * from Asocia"
        if v:
            print '\n'+query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asociacion = Asociacion()
            asociacion.id=row[0]
            asociacion.id_clase=row[1]
            asociacion.id_asignatura=row[2]

            lista.append(asociacion)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def nuevaAsociacion(self, id_clase, id_asignatura):
        '''Introduce entidades en la tabla Asocia'''

        db = dbParams.conecta()

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asignatura='\''+id_asignatura+'\''
        id_clase='\''+id_clase+'\''

        query="INSERT INTO Asocia VALUES(NULL, "+id_clase+","+id_asignatura+");"
        if v:
            print '\n'+query
        cursor = db.cursor()
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asociacion con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsignaturas(self, idAlumno):
        """Devuelve una lista con las asignaturas en las que ese alumno está matriculado
        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        query='select * from Asignatura where id in (select id_asignatura from Matricula where id_alumno='+idAlumno+')'

        query='SELECT * FROM Asignatura WHERE id_asignatura IN (SELECT id_asignatura FROM Asocia WHERE id_asociacion IN (SELECT id_asociacion FROM Matricula WHERE id_alumno='+idAlumno+'));'

        #select * from Matricula, Asignatura where Matricula.id_asignatura=Asignatura.id and id_alumno=4;

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsociacionCompleta(self, idAsociacion):
        """
        Recupera TODA la información de un Asociacion en concreto a través de la clave primaria, su id.
        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        idAsociacion='\''+idAsociacion+'\''

        #Montamos un alias para poder sacar el nombre de la asignatura sin ninguna subconsulta fea.
        query='select * from (select * from Asocia where id_asociacion='+idAsociacion+') AS tablaAsocia, Asignatura where tablaAsocia.id_asignatura = Asignatura.id_asignatura;'

        if v:
            print '\n'+query
        try:
            salida = cursor.execute(query);
            row = cursor.fetchone()
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                #Capturamos el error:
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def modClase(self, idClase, campoACambiar, nuevoValor):
        """
        Esta función permite cambiar cualquier atributo de un Clase.
        Parámetros:
        campoACambiar: nombre del atributo que se quiere cambiar
        nuevoValor: nuevo valor que se quiere guardar en ese campo.
        """
        db = dbParams.conecta()
        # La conexión está clara.
        cursor = db.cursor()

        idClase = "'" + idClase + "'"

        # Al parámetro campoACambiar no se le añaden comillas para no generar un error de sintaxis en MySQL.
        nuevoValor = "'" + nuevoValor + "'"

        query = "UPDATE Clase SET " + campoACambiar + "=" + nuevoValor + " WHERE id_clase=" + idClase + ";"
        if v:
            print "\n" + query

        cursor = db.cursor()
        salida = ""
        # Manejo de excepciones.
        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getClases(self, idProfesor):
        """
        Devuelve una lista con las clases en los que ese profesor da clase, normalmente será al menos uno.
        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        query='SELECT * FROM Clase WHERE id_clase IN (SELECT id_clase FROM Asocia where id_asociacion IN(SELECT id_asociacion FROM Imparte WHERE id_profesor='+idProfesor+'));'


        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def modClaseCompleta(self, idClase, curso, grupo, nivel):
        """
        Modifica todos los atributos de una clase dado su id al mismo tiempo.
        """

        # Info de seguimiento
        if v:
            print apiName
            print "Llamada a modClaseCompleta"
            print "\n"

        db = dbParams.conecta()
        query = "UPDATE Clase SET"
        query = query + " curso= " + "'" + curso + "'"
        query = query + " , grupo= " + "'" + grupo + "'"
        query = query + " , nivel= " + "'" + nivel + "'"
        query = query + " WHERE id_clase=" + idClase + ";"

        if v:
            print apiName
            print query

        cursor = db.cursor()
        salida = ""

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAlumnos(self, idProfesor):
        """
        Devuelve una lista con los alumnos al que imparte clase ese profesor, incluyendo
        los campos id, nombre, apellidos y dni de los alumnos del profesor

        Argumentos:

            dniProfesor: El dni del profsor del que se pide la información.<

        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        query='SELECT nombre, apellidos, id_alumno FROM Alumno WHERE id_alumno IN (SELECT id_alumno FROM Imparte, Matricula WHERE Imparte.id_asociacion=Matricula.id_asociacion AND Imparte.id_profesor='+idProfesor+');'


        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def modClase(self, idClase, campoACambiar, nuevoValor):
        '''
        Esta función permite cambiar cualquier atributo de un Clase.
        Parámetros:
        campoACambiar: nombre del atributo que se quiere cambiar
        nuevoValor: nuevo valor que se quiere guardar en ese campo.
        '''
        db = dbParams.conecta()
        #La conexión está clara.
        cursor = db.cursor()

        idClase = '\'' + idClase + '\''

        #Al parámetro campoACambiar no se le añaden comillas para no generar un error de sintaxis en MySQL.
        nuevoValor = '\'' + nuevoValor + '\''

        query = "UPDATE Clase SET " + campoACambiar + "=" + nuevoValor + " WHERE id_clase=" + idClase + ";"
        if v:
            print '\n' + query

        cursor = db.cursor()
        salida = ''
        #Manejo de excepciones.
        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def nuevaAsociacion(self, id_clase, id_asignatura):
        '''Introduce entidades en la tabla Asocia'''

        db = dbParams.conecta()

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asignatura = '\'' + id_asignatura + '\''
        id_clase = '\'' + id_clase + '\''

        query = "INSERT INTO Asocia VALUES(NULL, " + id_clase + "," + id_asignatura + ");"
        if v:
            print '\n' + query
        cursor = db.cursor()
        salida = ''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asociacion con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAlumnos(sef, idAsociacion):
        '''
        Devuelve una lista con los alumnos matriculados en esa asignatura y grupo
        Devuelve: id del alumno, nombre, apellidos e id
        '''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        isAsociacion = '\'' + idAsociacion + '\''

        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        #query='SELECT nombre, apellidos, id_alumno from Alumno where id_alumno IN (select id_alumno from Matricula where id_asociacion='+idAsociacion+');'

        #Ver justificació de modificación en getProfesores:
        query = 'SELECT nombre, apellidos, Alumno.id_alumno, id_matricula FROM (SELECT id_alumno, id_matricula FROM Matricula WHERE id_asociacion=' + idAsociacion + ') AS tablaMatricula, Alumno WHERE tablaMatricula.id_alumno = Alumno.id_alumno'

        if v:
            print query

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAlumno(self, idAlumno):
        """
        Recupera ``TODA`` la información de un alumno en concreto a través de su id.

        Argumentos:
            idAlumno: identificador unívoco del alumno en la tabla

        """
        db = dbParams.conecta(); #La conexión está clara.
        cursor = db.cursor()
        idAlumno='\''+idAlumno+'\''
        query='select * from Alumno where id_alumno='+idAlumno+';'
        if v:
            print 'Query in GestorAlumnosSQL.getAlumno()'
            print query

        try:
            salida = cursor.execute(query);
            row = cursor.fetchone()
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsignaturas(self):
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query="select * from Asignatura"
        if v:
            print '\n'+query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asignatura = Asignatura()
            #print "LISTA SUPER CHACHI"

            asignatura.id=row[0]
            asignatura.nombre=row[1]


            lista.append(asignatura)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def modAlumno(self, idAlumno, campoACambiar, nuevoValor):
        """
        Esta función permite cambiar cualquier atributo de un alumno, dado su id.
        Parámetros:
        campoACambiar: nombre del atributo que se quiere cambiar
        nuevoValor: nuevo valor que se quiere guardar en ese campo.
        """
        db = dbParams.conecta(); #La conexión está clara.
        nuevoValor='\''+nuevoValor+'\''
        idAlumno='\''+idAlumno+'\''
        query="UPDATE Alumno SET "+campoACambiar+"="+nuevoValor+" WHERE id_alumno="+idAlumno+";"



        cursor = db.cursor()
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el alumno con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
 def modAsociacion(self, id_clase, id_asignatura, campoACambiar,
                   nuevoValor):
     """
     Esta función permite cambiar cualquier atributo de una Asociacion.
     Parámetros:
     campoACambiar: nombre del atributo que se quiere cambiar
     nuevoValor: nuevo valor que se quiere guardar en ese campo.
     Este caso puede ser delicado al tener sólo dos atributos y ambos ser claves foráneas. Por eso no permitiremos que
     se haga, para modificar la relación antes tendremos que destruirla y volverla a crear.
     """
     db = dbParams.conecta()
     nuevoValor = '\'' + nuevoValor + '\''
     id_asignatura = '\'' + id_asignatura + '\''
     id_clase = '\'' + id_clase + '\''
     query = "UPDATE Asocia SET " + campoACambiar + "=" + nuevoValor + " WHERE id_asignatura=" + id_asignatura + " and id_clase=" + id_clase + ";"
     if v:
         print '\n' + query
     cursor = db.cursor()
     salida = ''
     '''
     #Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asociacion con clave
     #que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
     '''
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
    def getMatriculas(self):
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query = "select * from Matricula"
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            matricula = Matricula()
            matricula.id = row[0]
            matricula.id_alumno = row[1]
            matricula.id_asociacion = row[2]

            lista.append(matricula)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def modAsignaturaCompleta(self, idAsignatura, nombre):
        '''
        Modifica todos los atributos de una asignatura dado su id al mismo tiempo.
        '''

        #Info de seguimiento
        if v:
            print apiName
            print "Llamada a modAsignaturaCompleta"
            print '\n'

        db = dbParams.conecta();
        query="UPDATE Asignatura SET"
        query=query+" nombre= "+'\''+nombre+'\''
        query=query+" WHERE id_asignatura="+idAsignatura+";"

        if v:
            print apiName
            print query.encode('utf-8')

        cursor = db.cursor()
        salida =''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def nuevoImparte(self, id_asociacion, id_profesor):
        '''Introduce una tupla en la tabla Imparte de la base de datos'''
        db = dbParams.conecta()
        #query="INSERT INTO Imparte values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asociacion = '\'' + id_asociacion + '\''
        id_profesor = '\'' + id_profesor + '\''

        query = "INSERT INTO Imparte VALUES(NULL, " + id_asociacion + "," + id_profesor + ");"
        if v:
            print '\n' + query
        cursor = db.cursor()
        salida = ''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Imparte con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = str(e.args[0])
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getImpartes(self):
        '''Devuelve una lista simlifacada de todos los elementos Imparte de la tabla imparte de la bd'''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query = "select * from Imparte"
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            imparte = Imparte()
            imparte.id_clase = row[0]
            imparte.id_asignatura = row[1]
            imparte.id_profesor = row[2]

            lista.append(imparte)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def getAsociaciones(self):
        '''
        Devuelve una lista simplificada de todas las asociaciones dadas de alta en el sistema.
        '''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query = "select * from Asocia"
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asociacion = Asociacion()
            asociacion.id = row[0]
            asociacion.id_clase = row[1]
            asociacion.id_asignatura = row[2]

            lista.append(asociacion)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def getProfesores(self, idAlumno):
        """
        Devuelve una lista de los profesores que imparte clase a ese alumno.

        Argumentos:

            idAlumno: El id del alumno del que se pide la información.
        """
        db = dbParams.conecta()
        cursor = db.cursor()
        idAlumno='\''+idAlumno+'\''

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        #Hacemos un JOIN de las tablas que relacionan alumnos con asociaciones y estas con profesores para luego sacar sólo las de cierto identificador e alumno.
        #query='SELECT id_profesor, nombre, apellidos from Profesor where id_profesor in ( select id_profesor from Imparte where id_asignatura in (select id_asignatura from Matricula where id_alumno='+idAlumno+') and id_clase in  (select id_clase from Matricula where id_alumno='+idAlumno+'))'

        query='SELECT nombre, apellidos, id_profesor FROM Profesor WHERE id_profesor IN (SELECT id_profesor FROM Imparte, Matricula WHERE Imparte.id_asociacion=Matricula.id_asociacion and Matricula.id_alumno='+idAlumno+');'

        if v:
            print query

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getMatriculas(self):
        db = dbParams.conecta();
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query="select * from Matricula"
        if v:
            print '\n'+query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            matricula = Matricula()
            matricula.id=row[0]
            matricula.id_alumno=row[1]
            matricula.id_asociacion=row[2]

            lista.append(matricula)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def nuevaMatricula(self, id_alumno, id_asociacion):
        '''
        Da de alta una matrícula en el sistema.
        '''

        db = dbParams.conecta();
        #query="INSERT INTO Matricula values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asociacion='\''+id_asociacion+'\''
        id_alumno='\''+id_alumno+'\''

        query="INSERT INTO Matricula VALUES (NULL, "+id_alumno+","+id_asociacion+");"

        if v:
            print '\n'+query
        cursor = db.cursor()
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Matricula con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getImpartes(self):
        '''Devuelve una lista simlifacada de todos los elementos Imparte de la tabla imparte de la bd'''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query="select * from Imparte"
        if v:
            print '\n'+query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            imparte = Imparte()
            imparte.id_clase=row[0]
            imparte.id_asignatura=row[1]
            imparte.id_profesor=row[2]

            lista.append(imparte)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def getAsociacionCompleta(self, idAsociacion):
        """
        Recupera TODA la información de un Asociacion en concreto a través de la clave primaria, su id.
        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        idAsociacion = '\'' + idAsociacion + '\''

        #Montamos un alias para poder sacar el nombre de la asignatura sin ninguna subconsulta fea.
        query = 'select * from (select * from Asocia where id_asociacion=' + idAsociacion + ') AS tablaAsocia, Asignatura where tablaAsocia.id_asignatura = Asignatura.id_asignatura;'

        if v:
            print '\n' + query
        try:
            salida = cursor.execute(query)
            row = cursor.fetchone()
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                #Capturamos el error:
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def modAsignatura(self, idAsignatura, campoACambiar, nuevoValor):
        """
        Esta función permite cambiar cualquier atributo de un Asignatura.
        Parámetros:
        campoACambiar: nombre del atributo que se quiere cambiar
        nuevoValor: nuevo valor que se quiere guardar en ese campo.
        """
        db = dbParams.conecta(); #La conexión está clara.
        nuevoValor='\''+nuevoValor+'\''
        idAsignatura='\''+idAsignatura+'\''
        query="UPDATE Asignatura SET "+campoACambiar+"="+nuevoValor+" WHERE id_asignatura="+idAsignatura+";"
        if v:
            print '\n'+query

        cursor = db.cursor()
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asignatura con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
 def modAsociacion(self, id_clase, id_asignatura, campoACambiar, nuevoValor):
     """
     Esta función permite cambiar cualquier atributo de una Asociacion.
     Parámetros:
     campoACambiar: nombre del atributo que se quiere cambiar
     nuevoValor: nuevo valor que se quiere guardar en ese campo.
     Este caso puede ser delicado al tener sólo dos atributos y ambos ser claves foráneas. Por eso no permitiremos que
     se haga, para modificar la relación antes tendremos que destruirla y volverla a crear.
     """
     db = dbParams.conecta()
     nuevoValor='\''+nuevoValor+'\''
     id_asignatura='\''+id_asignatura+'\''
     id_clase='\''+id_clase+'\''
     query="UPDATE Asocia SET "+campoACambiar+"="+nuevoValor+" WHERE id_asignatura="+id_asignatura+" and id_clase="+id_clase+";"
     if v:
         print '\n'+query
     cursor = db.cursor()
     salida =''
     '''
     #Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asociacion con clave
     #que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
     '''
     try:
         salida = cursor.execute(query);
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
    def nuevoImparte(self, id_asociacion, id_profesor):
        '''Introduce una tupla en la tabla Imparte de la base de datos'''
        db = dbParams.conecta();
        #query="INSERT INTO Imparte values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asociacion='\''+id_asociacion+'\''
        id_profesor='\''+id_profesor+'\''

        query="INSERT INTO Imparte VALUES(NULL, "+id_asociacion+","+id_profesor+");"
        if v:
            print '\n'+query
        cursor = db.cursor()
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Imparte con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=str(e.args[0])
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsociaciones(self, idClase):

        db = dbParams.conecta()
        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        idClase = '\'' + idClase + '\''

        #query='SELECT * FROM Asocia WHERE id_clase='+idClase+';'
        query = 'select * from (select * from Asocia where id_clase=' + idClase + ') AS tablaAsocia, Asignatura where tablaAsocia.id_asignatura = Asignatura.id_asignatura;'
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asociacion = Asociacion()
            asociacion.id = row[0]
            asociacion.idClase = row[1]
            asociacion.idAsignatura = row[2]
            asociacion.nombreAsignatura = row[4]
            lista.append(asociacion)
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def modClaseCompleta(self, idClase, curso, grupo, nivel):
        '''
        Modifica todos los atributos de una clase dado su id al mismo tiempo.
        '''

        #Info de seguimiento
        if v:
            print apiName
            print "Llamada a modClaseCompleta"
            print '\n'

        db = dbParams.conecta()
        query = "UPDATE Clase SET"
        query = query + " curso= " + '\'' + curso + '\''
        query = query + " , grupo= " + '\'' + grupo + '\''
        query = query + " , nivel= " + '\'' + nivel + '\''
        query = query + " WHERE id_clase=" + idClase + ";"

        if v:
            print apiName
            print query

        cursor = db.cursor()
        salida = ''

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def nuevaMatricula(self, id_alumno, id_asociacion):
        '''
        Da de alta una matrícula en el sistema.
        '''

        db = dbParams.conecta()
        #query="INSERT INTO Matricula values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        id_asociacion = '\'' + id_asociacion + '\''
        id_alumno = '\'' + id_alumno + '\''

        query = "INSERT INTO Matricula VALUES (NULL, " + id_alumno + "," + id_asociacion + ");"

        if v:
            print '\n' + query
        cursor = db.cursor()
        salida = ''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Matricula con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''

        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getProfesores(self, idClase):
        '''
        Devuelve la lista de profesores que están impartien a esa clase.
        Devuelve dni, nombre y apellidos
        '''
        db = dbParams.conecta()
        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        idClase = '\'' + idClase + '\''
        #
        query = 'SELECT id_profesor, nombre, apellidos from Profesor where id_profesor IN (select id_profesor from Imparte where id_asociacion IN (select id_asociacion from Asocia where id_clase=' + idClase + '))'
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            profesor = Profesor()
            profesor.id = row[0]
            profesor.nombre = row[1]
            profesor.apellidos = row[2]

            lista.append(profesor)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
    def modAlumnoCompleto(self, idAlumno, nombre, apellidos='NULL', dni='NULL', direccion='NULL', localidad='NULL', provincia='NULL', fecha_nacimiento='NULL', telefono='NULL',  imagen='NULL'):
        '''
        Modifica todos los atributos de un alumno dado su id al mismo tiempo.
        '''

        #Info de seguimiento
        if v:
            print apiName
            print "Llamada a modAlumnoCompleto"
            print '\n'
            print locals()

        db = dbParams.conecta();
        query="UPDATE Alumno SET"
        query=query+" nombre= "+'\''+nombre+'\''
        query=query+" , apellidos= "+'\''+apellidos+'\''
        if dni=='NULL':
            query=query+" , dni=NULL "
        else:
            query=query+" , dni= "+'\''+dni+'\''
        query=query+" , direccion= "+'\''+direccion+'\''
        query=query+" , localidad= "+'\''+localidad+'\''
        query=query+" , provincia= "+'\''+provincia+'\''

        if fecha_nacimiento=='NULL':
            query=query+" , fecha_nacimiento=NULL "
        else:
            query=query+" , fecha_nacimiento= "+'\''+fecha_nacimiento+'\''


        query=query+" , telefono= "+'\''+telefono+'\''
        query=query+" , url_imagen= "+'\''+imagen+'\''

        #Codificamos el id porque es el único que no viene codificado desde la api para que no de problema al concatenar con la sentencia SQL
        query=query+" WHERE id_alumno="+dbParams.formatOutputText(idAlumno)+";"

        if v:
            print apiName
            print '\n'+query

        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        salida =''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def comprobarUsuario(self, username, password):
        '''
        Comprueba si el usuario tiene permisos de acceso al sistema.
        '''

        if v:
            print apiName
            print ' Calling '+ str(locals()['self'])
            print ' '+str(locals())

        #Usamos el gestor para la conexión
        db = dbParams.conecta()


        #Añadimos al principio y al final una comilla simple a todos los elementos.
        username='******''+username+'\''
        password='******''+password+'\''

        query='SELECT * FROM Credenciales WHERE username='******' and password= AES_ENCRYPT('+password+',"CLAVESECRETA");'

        if v:
            print ' '+query

        cursor = db.cursor()

        salida =''
        cred = Credenciales()


        encontrado = True
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asignatura con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            #Cuando el usuario no es encontrado devuelve 0
            salida = cursor.execute(query)
            row = cursor.fetchone()

            if row != None:
                cred.idUsuario=row[1]
                cred.nombre=row[2]
                cred.rol=row[5]

        except dbParams.MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def nuevoProfesor(self, nombre, apellidos='NULL', dni='NULL', direccion='NULL', localidad='NULL', provincia='NULL', fecha_nacimiento='NULL', telefono='NULL'):
        '''
        Introduce un nuevo elemento Profesor en la base de datos.
        Necesita como mínimo un nombre y un dni
        '''

        if v:
            print apiName
            print ' Calling '+ str(locals()['self'])
            print ' '+str(locals())

        db = dbParams.conecta(); #La conexión está clara.

        nombre='\''+nombre+'\''
        if(apellidos!='NULL'):
            apellidos='\''+apellidos+'\''
        #DNI se pasa como un entero y no es necesario comillarlo.
        if(direccion!='NULL'):
            direccion='\''+direccion+'\''
        if(localidad!='NULL'):
            localidad='\''+localidad+'\''
        if(provincia!='NULL'):
            provincia='\''+provincia+'\''
        if(fecha_nacimiento!='NULL'):
            fecha_nacimiento='\''+fecha_nacimiento+'\''
        if(telefono!='NULL'):
            telefono='\''+telefono+'\''

        query="INSERT INTO Profesor VALUES(NULL,"+nombre+","+apellidos+","+dni+","+direccion+","+localidad+","+provincia+","+fecha_nacimiento+","+telefono+");"

        if v:
            print ' '+query+'\n'

        cursor = db.cursor()
        salida =''
        idProfesor=''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Profesor con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            salida = cursor.execute(query)
            idProfesor = cursor.lastrowid
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
示例#37
0
    def comprobarUsuario(self, username, password):
        '''
        Comprueba si el usuario tiene permisos de acceso al sistema.
        '''

        if v:
            print apiName
            print ' Calling ' + str(locals()['self'])
            print ' ' + str(locals())

        #Usamos el gestor para la conexión
        db = dbParams.conecta()

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        username = '******'' + username + '\''
        password = '******'' + password + '\''

        query = 'SELECT * FROM Credenciales WHERE username='******' and password= AES_ENCRYPT(' + password + ',"CLAVESECRETA");'

        if v:
            print ' ' + query

        cursor = db.cursor()

        salida = ''
        cred = Credenciales()

        encontrado = True
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asignatura con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            #Cuando el usuario no es encontrado devuelve 0
            salida = cursor.execute(query)
            row = cursor.fetchone()

            if row != None:
                cred.idUsuario = row[1]
                cred.nombre = row[2]
                cred.rol = row[5]

        except dbParams.MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def modProfesorCompleto(self, idProfesor, nombre, apellidos='NULL', dni='NULL', direccion='NULL', localidad='NULL', provincia='NULL', fecha_nacimiento='NULL', telefono='NULL'):
        '''
        Modifica todos los atributos de un profesor dado su id al mismo tiempo.
        '''

        #Info de seguimiento
        if v:
            print apiName
            print "Llamada a modProfesorCompleto"
            print '\n'

        db = dbParams.conecta();
        query="UPDATE Profesor SET"
        query=query+" nombre= "+'\''+nombre+'\''
        query=query+" , apellidos= "+'\''+apellidos+'\''
        if dni=='NULL':
            query=query+" , dni=NULL "
        else:
            query=query+" , dni= "+'\''+dni+'\''
        query=query+" , direccion= "+'\''+direccion+'\''
        query=query+" , localidad= "+'\''+localidad+'\''
        query=query+" , provincia= "+'\''+provincia+'\''

        if fecha_nacimiento=='NULL':
            query=query+" , fecha_nacimiento=NULL "
        else:
            query=query+" , fecha_nacimiento= "+'\''+fecha_nacimiento+'\''


        query=query+" , telefono= "+'\''+telefono+'\''
        query=query+" WHERE id_profesor="+idProfesor+";"

        if v:
            print apiName
            print query

        cursor = db.cursor()
        salida =''

        try:
            salida = cursor.execute(query);
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
 def delMatricula(self, id_matricula):
     db = dbParams.conecta();
     cursor = db.cursor()
     id_matricula='\''+id_matricula+'\''
     query="delete from Matricula where id_matricula="+id_matricula+";"
     if v:
         print query
     salida =''
     try:
         salida = cursor.execute(query);
     except MySQLdb.Error, e:
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delAsignatura(self, idAsignatura):
     if v:
         print "Intentado eliminar asignatura con id "+str(idAsignatura)
     db = dbParams.conecta(); #La conexión está clara.
     cursor = db.cursor()
     query="delete from Asignatura where id_asignatura='"+idAsignatura+"';"
     salida =''
     try:
         salida = cursor.execute(query);
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def getNumAlumnos(self):
     '''Devuelve el número de alumnos de la BD'''
     db = dbParams.conecta(); #La conexión está clara.
     cursor = db.cursor()
     query="select count(*) from Alumno;"
     salida =''
     try:
         salida = cursor.execute(query);
         row = cursor.fetchone()
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def getNumAsignaturas(self):
     '''Devuelve el número de asignaturas de la BD'''
     db = dbParams.conecta(); #La conexión está clara.
     cursor = db.cursor()
     query="select count(*) from Asignatura;"
     salida =''
     try:
         salida = cursor.execute(query);
         row = cursor.fetchone()
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
    def getAsignaturas(self, idClase):
        """

        Devuelve una lista con las asignaturas que se dan a esa clase.
        Ejemplo:
        En 2ºESO se da Frances, Lengua, etc...

        Parámetros:
            curso, grupo y nivel: identificadores que forman el unívoco de una clase.

        Devuelve: Una lista de objetos de tipo asignatura

        """
        db = dbParams.conecta()
        cursor = db.cursor()

        # Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        # -----------------------------#
        idClase = "'" + idClase + "'"
        query = (
            "select * from Asignatura where id_asignatura in (select id_asignatura from Asocia where id_clase ="
            + idClase
            + ")"
        )
        if v:
            print "\n" + query

        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asignatura = Asignatura()
            asignatura.id = row[0]
            asignatura.nombre = row[1]
            lista.append(asignatura)
            # print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
 def delMatricula(self, id_matricula):
     db = dbParams.conecta()
     cursor = db.cursor()
     id_matricula = '\'' + id_matricula + '\''
     query = "delete from Matricula where id_matricula=" + id_matricula + ";"
     if v:
         print query
     salida = ''
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delAlumno(self, idAlumno):
     #print "Intentado eliminar alumno con dni "+str(dniAlumno)
     db = dbParams.conecta(); #La conexión está clara.
     cursor = db.cursor()
     idAlumno='\''+idAlumno+'\''
     query='delete from Alumno WHERE id_alumno='+idAlumno+';'
     salida =''
     try:
         salida = cursor.execute(query);
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delImparte(self, id_imparte):
     '''Elimina una tupla imparte de la tabla Imparte'''
     db = dbParams.conecta()
     cursor = db.cursor()
     id_imparte = '\'' + id_imparte + '\''
     query = "delete from Imparte where id_imparte=" + id_imparte + ";"
     if v:
         print query
     salida = ''
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delClase(self, idClase):
     if v:
         print "Intentado eliminar Clase con id_clase " + str(idClase)
     db = dbParams.conecta()
     # La conexión está clara.
     cursor = db.cursor()
     query = "delete from Clase  WHERE id_clase=" + idClase + ";"
     salida = ""
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delImparte(self, id_imparte):
     '''Elimina una tupla imparte de la tabla Imparte'''
     db = dbParams.conecta()
     cursor = db.cursor()
     id_imparte='\''+id_imparte+'\''
     query="delete from Imparte where id_imparte="+id_imparte+";"
     if v:
         print query
     salida =''
     try:
         salida = cursor.execute(query);
     except MySQLdb.Error, e:
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: "+str(e.args[0])
             salida=e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
 def delClase(self, idClase):
     if v:
         print "Intentado eliminar Clase con id_clase " + str(idClase)
     db = dbParams.conecta()
     #La conexión está clara.
     cursor = db.cursor()
     query = "delete from Clase  WHERE id_clase=" + idClase + ";"
     salida = ''
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         # Get data from database
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
    def nuevaClase(self, curso, grupo, nivel):
        '''
        Introduce una nueva clase en la base de datos. Son necesarios los tres primeros parámetros.
        '''
        if v:
            print apiName
            print 'Calling nuevaClase() with params:'
            print locals()

        db = dbParams.conecta()
        #La conexión está clara.
        #query="INSERT INTO Curso values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        curso = '\'' + curso + '\''
        grupo = '\'' + grupo + '\''
        nivel = '\'' + nivel + '\''

        query = "INSERT INTO Clase VALUES(NULL," + curso + "," + grupo + "," + nivel + ");"
        if v:
            print '\n' + query
        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        salida = ''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Clase con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        idClase = ''
        try:
            salida = cursor.execute(query)
            idClase = cursor.lastrowid
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getAsignaturas(self, idClase):
        """

        Devuelve una lista con las asignaturas que se dan a esa clase.
        Ejemplo:
        En 2ºESO se da Frances, Lengua, etc...

        Parámetros:
            curso, grupo y nivel: identificadores que forman el unívoco de una clase.

        Devuelve: Una lista de objetos de tipo asignatura

        """
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        idClase = '\'' + idClase + '\''
        query = 'select * from Asignatura where id_asignatura in (select id_asignatura from Asocia where id_clase =' + idClase + ')'
        if v:
            print '\n' + query

        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            asignatura = Asignatura()
            asignatura.id = row[0]
            asignatura.nombre = row[1]
            lista.append(asignatura)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista
示例#52
0
    def postCredenciales(self, idUsuario, nombre, username, password, rol):
        '''
        Introduce una nueva tupla con la credenciales de algún usuario dado de alta en el sistema.
        '''

        if v:
            print apiName
            print ' Calling ' + str(locals()['self'])
            print ' ' + str(locals())

        #Usamos el gestor para la conexión
        db = dbParams.conecta()

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        idUsuario = '\'' + idUsuario + '\''
        username = '******'' + username + '\''
        password = '******'' + password + '\''
        nombre = '\'' + nombre + '\''
        rol = '\'' + rol + '\''

        query = 'INSERT INTO Credenciales VALUES(NULL' + ',' + idUsuario + ',' + nombre + ',' + username + ',AES_ENCRYPT(' + password + ',"CLAVESECRETA"),' + rol + ');'

        if v:
            print ' ' + query + '\n'

        cursor = db.cursor()

        salida = ''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asignatura con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        try:
            salida = cursor.execute(query)
        except dbParams.MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
 def delImparteSinClave(self, id_asociacion, id_profesor):
     '''Elimina una tupla imparte de la tabla Imparte usando los ides de la asociacion y del profesor,
     se usa cuando no se tiene el id de la tupla imparte en concreto.'''
     db = dbParams.conecta()
     cursor = db.cursor()
     id_asociacion = '\'' + id_asociacion + '\''
     id_profesor = '\'' + id_profesor + '\''
     query = "DELETE FROM Imparte WHERE id_asociacion=" + id_asociacion + " AND id_profesor" + id_profesor + ";"
     if v:
         print query
     salida = ''
     try:
         salida = cursor.execute(query)
     except MySQLdb.Error, e:
         try:
             print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
             print "Error number: " + str(e.args[0])
             salida = e.args[0]
         except IndexError:
             print "MySQL Error: %s" % str(e)
    def delAsociacion(self, id_asociacion):
        db = dbParams.conecta()
        cursor = db.cursor()
        id_asociacion = '\'' + id_asociacion + '\''

        query = "DELETE FROM Asocia WHERE  id_asociacion=" + id_asociacion + ";"

        if v:
            print query
        salida = ''
        try:
            salida = cursor.execute(query)
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: " + str(e.args[0])
                salida = e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def nuevaAsignatura(self, nombre):

        if v:
            print apiName
            print 'Calling nuevaAsignatura() with params:'
            print locals()

        db = dbParams.conecta() #La conexión está clara.
        #query="INSERT INTO Asignatura values("+"'"+nombre+"', "+ "'"+id+"');"

        #Añadimos al principio y al final una comilla simple a todos los elementos.
        nombre='\''+nombre+'\''

        query='INSERT INTO Asignatura VALUES(NULL'+','+nombre+');'

        if v:
            print query


        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query="SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        salida =''
        '''
        Como la ejecución de esta consulta (query) puede producir excepciones como por ejemplo que el Asignatura con clave
        que estamos pasando ya exista tendremos que tratar esas excepciones y conformar una respuesta entendible.
        '''
        idAsignatura=''
        try:
            salida = cursor.execute(query);
            idAsignatura = cursor.lastrowid
        except MySQLdb.Error, e:
            # Get data from database
            try:
                print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
                print "Error number: "+str(e.args[0])
                salida=e.args[0]
            except IndexError:
                print "MySQL Error: %s" % str(e)
    def getClases(self):
        '''
        Devuelve una lista con todas las clases registradas en la base de datos.

        @future:
        Podría pasarse un par de parámetros curso y nivel que por defecto fueran null para aumentar
        la flexibilidad de esta clase y que permitiera buscar  todas las clases de un nivel o de un curso
        en concreto.
        '''
        db = dbParams.conecta()
        cursor = db.cursor()

        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#

        query = "select * from Clase"
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            clase = Clase()
            clase.id = row[0]
            clase.curso = row[1]
            clase.grupo = row[2]
            clase.nivel = row[3]

            lista.append(clase)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        #Devolvemos la lista al completo.
        return lista
    def getAlumnos(self, idClase):
        '''
        Devuelve una lista con los alumnos matriculados en esa clase.
        Campos devueltos: id, nombre y apellidos.
        '''
        db = dbParams.conecta()
        cursor = db.cursor()
        #Sacando los acentos...........
        mysql_query = "SET NAMES 'utf8'"
        cursor.execute(mysql_query)
        #-----------------------------#
        idClase = '\'' + idClase + '\''
        '''
        Usamos la orden distinct para eliminar los duplicados de una consulta, en este caso id_alumno ya que aparecerá
        que un mismo alumno está matriculado muchas veces en un mismo curso con asignaturas disintas, entonces para evitar
        contabilizar esos repetidos, usamos esta orden.
        '''
        #query='SELECT id_alumno, nombre, apellidos FROM Alumno where id_alumno in (select distinct id_alumno from Matricula where id_clase='+idClase+')'
        query = 'select id_alumno, nombre, apellidos from Alumno where id_alumno IN (select id_alumno from Matricula where id_asociacion IN (select id_asociacion from Asocia where id_clase=' + idClase + '));'
        if v:
            print '\n' + query
        cursor.execute(query)
        row = cursor.fetchone()

        lista = []

        while row is not None:
            alumno = Alumno()
            alumno.id = row[0]
            alumno.nombre = row[1]
            alumno.apellidos = row[2]

            lista.append(alumno)
            #print row[0], row[1]
            row = cursor.fetchone()

        cursor.close()
        db.close()

        return lista