def __init__(self, parent=None):
     QtGui.QMainWindow.__init__(self, parent)
     self.ui = Ui_Form()
     self.ui.setupUi(self)
     self.cargar_directores()
     # self.show()
     self.dialogo = Controlador_form_crear_director()
     self.editar = Editar.Editar()
     self.ui.cantidad_peliculas_dirigidas.setText("")
     self.ui.label_numero_peli.setText("Cantidad de peliculas: ")
     self.signals()
class Director(QtGui.QMainWindow):
    table_columns = (
        (u"ID", 0),
        (u"Nombre", 150),
        (u"Pais", 150),
        (u"Fecha nacimiento", 150),
        (u"Fecha defunción", 150),
    )

    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.cargar_directores()
        # self.show()
        self.dialogo = Controlador_form_crear_director()
        self.editar = Editar.Editar()
        self.ui.cantidad_peliculas_dirigidas.setText("")
        self.ui.label_numero_peli.setText("Cantidad de peliculas: ")
        self.signals()

    def signals(self):
        """
        Conecta la base de datos al codigo
        """
        self.ui.grilla.clicked.connect(self.mostrar_imagen)
        self.ui.eliminarDirector.clicked.connect(self.elimina)
        self.ui.agregarDirector.clicked.connect(self.mostrar_ventana_agregar)
        self.dialogo.ui.crear_boton.clicked.connect(self.cargar_directores)
        self.editar.ui.guardar_boton.clicked.connect(self.cargar_directores)
        self.ui.editarDirector.clicked.connect(self.editar_director)

    def cargar_directores(self):
        """
        Carga directores de la base de datos
        """
        directores = Modelo_director.obtener_directores()
        filas = len(directores)
        data = QtGui.QStandardItemModel(filas, len(self.table_columns))
        self.ui.grilla.setModel(data)
        self.ui.grilla.horizontalHeader().setResizeMode(0, self.ui.grilla.horizontalHeader().Stretch)

        for col, h in enumerate(self.table_columns):
            data.setHeaderData(col, QtCore.Qt.Horizontal, h[0])
            self.ui.grilla.setColumnWidth(col, h[1])

        for i, dire in enumerate(directores):
            filas = [dire["id"], dire["nombre"], dire["pais"], dire["fecha_nacimiento"], dire["fecha_defuncion"]]
            for j, field in enumerate(filas):
                index = data.index(i, j, QtCore.QModelIndex())
                data.setData(index, field)
            # Parametros ocultos
            data.item(i).dire = dire

    def mostrar_imagen(self, index):
        """
        Muestra la imagen del director
        """
        index = index if index is not None else self.ui.grilla.currentIndex()
        if index.row() == -1:
            QtGui.QMessageBox.information(None, u"Información", u"Por favor seleccione una orden de trabajo.")
            return
        data = self.ui.grilla.model()
        dire = data.item(index.row(), 0).dire
        peliculas = self.sum_peliculas(dire["id"])
        peliculas = str(peliculas)
        self.ui.cantidad_peliculas_dirigidas.setText(peliculas)
        img = QtGui.QPixmap(str(dire["imagen"]))
        # print(str(dire['imagen'])[1:])
        self.ui.imagen.setPixmap(img)

    def sum_peliculas(self, id_p):
        """
        recorre la query como diccionario para luego contar los actores
        """
        c = 0
        directores = Modelo_director.contar_peliculas(id_p)
        for i, peli in enumerate(directores):
            c = c + 1
        return c

    def elimina(self):
        """
        Elimina un director de la base de datos
        """
        index = self.ui.grilla.currentIndex()
        data = self.ui.grilla.model()
        dire = data.item(index.row(), 0).dire
        iD = str(dire["id"])
        resp = QtGui.QMessageBox.question(
            self,
            "Pregunta",
            "Desea realmente eliminar el director seleccionado?",
            QtGui.QMessageBox.Ok,
            QtGui.QMessageBox.No,
        )
        if resp == QtGui.QMessageBox.Ok:
            Modelo_director.borrar(iD)
            self.cargar_directores()

    def mostrar_ventana_agregar(self):
        self.dialogo.show()

    def editar_director(self):
        """
        Permite editar un director de la base de datos
        """
        index = self.ui.grilla.currentIndex()
        data = self.ui.grilla.model()
        dire = data.item(index.row(), 0).dire
        id = dire["id"]
        print(id)
        self.editar.setID(id)
        self.editar.show()
        pass