コード例 #1
0
class VistaDipendente(QWidget):
    def __init__(self,
                 dipendente,
                 elimina_dipendente,
                 elimina_callback,
                 parent=None):
        super(VistaDipendente, self).__init__(parent)
        self.controller = ControlloreDipendente(dipendente)
        self.elimina_dipendente = elimina_dipendente
        self.elimina_callback = elimina_callback

        v_layout = QVBoxLayout()

        label_nome = QLabel(self.controller.get_nome_dipendente() + " " +
                            self.controller.get_cognome_dipendente())
        font_nome = label_nome.font()
        font_nome.setPointSize(30)
        label_nome.setFont(font_nome)
        v_layout.addWidget(label_nome)

        v_layout.addItem(
            QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))

        v_layout.addWidget(
            self.get_info("Codice Fiscale: {}".format(
                self.controller.get_cf_dipendente())))
        v_layout.addWidget(
            self.get_info("Data Nascita: {}".format(
                self.controller.get_datanascita_dipendente())))
        v_layout.addWidget(
            self.get_info("Luogo Nascita: {}".format(
                self.controller.get_luogonascita_dipendente())))
        v_layout.addWidget(
            self.get_info("Email: {}".format(
                self.controller.get_email_dipendente())))
        v_layout.addWidget(
            self.get_info("Telefono: {}".format(
                self.controller.get_telefono_dipendente())))
        v_layout.addWidget(
            self.get_info("Licenza: {}".format(
                self.controller.get_licenza_dipendente())))

        v_layout.addItem(
            QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))

        btn_elimina = QPushButton("Elimina")
        btn_elimina.clicked.connect(self.elimina_dipendente_click)
        v_layout.addWidget(btn_elimina)

        self.setLayout(v_layout)
        self.setWindowTitle(self.controller.get_nome_dipendente())

    def get_info(self, text):
        label = QLabel(text)
        font = label.font()
        font.setPointSize(17)
        label.setFont(font)
        return label

    def elimina_dipendente_click(self):
        self.elimina_dipendente(self.controller.get_id_dipendente())
        self.elimina_callback()
        self.close()
コード例 #2
0
class VistaModificaDipendente(QWidget):
    def __init__(self, dipendente_selezionato, controller, callback):
        super(VistaModificaDipendente, self).__init__()

        self.dp = dipendente_selezionato
        # passo alla classe il dipendente che seleziono per avere le sue informazioni
        self.dipendente = ControlloreDipendente(dipendente_selezionato)
        self.controller = controller
        self.callback = callback
        self.info = {}
        self.combo_abilitazione = QComboBox()

        # layout di modifica dei dati del dipendente
        self.v_layout = QVBoxLayout()
        self.setFixedSize(650, 470)

        # pulsante di conferma della modifica
        btn_modifica = QPushButton("Modifica")
        btn_modifica.setStyleSheet(
            "background-color: #90ee90; font-size: 13px; font-weight: bold;")
        btn_modifica.setShortcut("Return")
        btn_modifica.clicked.connect(self.mod_dipendente)
        # pulsante di annullamento delle modifica
        btn_annulla = QPushButton("Annulla")
        btn_annulla.setStyleSheet(
            "background-color: #f08080; font-size: 13px; font-weight: bold;")
        btn_annulla.setShortcut("Esc")
        btn_annulla.clicked.connect(self.close)

        self.label_img = QLabel()
        self.label_img.setPixmap(QPixmap('listadipendenti/data/utente.png'))

        # layout superiore
        h_lay_sup = QHBoxLayout()
        v_lay_sup_sx = QVBoxLayout()
        v_lay_sup_dx = QVBoxLayout()
        v_lay_sup_sx.addStretch()
        v_lay_sup_sx.addLayout(
            self.get_form_entry(self.dipendente.get_nome_dipendente(), "Nome"))
        v_lay_sup_sx.addLayout(
            self.get_form_entry(self.dipendente.get_cognome_dipendente(),
                                "Cognome"))
        v_lay_sup_sx.addLayout(
            self.get_form_entry(self.dipendente.get_cf_dipendente(),
                                "Codice Fiscale"))
        v_lay_sup_sx.addStretch()
        v_lay_sup_dx.addWidget(self.label_img)
        h_lay_sup.addLayout(v_lay_sup_sx)
        h_lay_sup.addLayout(v_lay_sup_dx)
        # layout centrale
        h_lay_cent = QHBoxLayout()
        v_lay_cent_sx = QVBoxLayout()
        v_lay_cent_dx = QVBoxLayout()
        v_lay_cent_sx.addLayout(
            self.get_form_entry(self.dipendente.get_luogo_dipendente(),
                                "Luogo di nascita"))
        v_lay_cent_dx.addLayout(
            self.get_form_entry(self.dipendente.get_data_dipendente(),
                                "Data di nascita"))
        v_lay_cent_sx.addLayout(
            self.get_form_entry(self.dipendente.get_residenza_dipendente(),
                                "Residenza"))
        v_lay_cent_dx.addLayout(
            self.get_form_entry(self.dipendente.get_indirizzo_dipendente(),
                                "Indirizzo"))
        v_lay_cent_sx.addLayout(
            self.get_form_entry(self.dipendente.get_telefono_dipendente(),
                                "Telefono"))
        v_lay_cent_dx.addLayout(
            self.get_form_entry(self.dipendente.get_email_dipendente(),
                                "Email"))
        h_lay_cent.addLayout(v_lay_cent_sx)
        h_lay_cent.addLayout(v_lay_cent_dx)
        # layout inferiore
        v_lay_inf = QVBoxLayout()
        h_lay_inf = QHBoxLayout()
        h_lay_inf_btn = QHBoxLayout()

        password = QLabel("<b>Password</b>")
        self.password = PasswordEdit()
        self.password.setText(self.dipendente.get_password_dipendente())
        h_lay_inf.addWidget(password)
        h_lay_inf.addWidget(self.password)
        self.info["Password"] = self.password

        h_lay_inf_btn.addWidget(btn_annulla)
        h_lay_inf_btn.addWidget(btn_modifica)
        v_lay_inf.addLayout(h_lay_inf)
        v_lay_inf.addStretch()
        v_lay_inf.addLayout(h_lay_inf_btn)

        self.v_layout.addLayout(h_lay_sup)
        self.v_layout.addLayout(
            self.get_combo(["Collaboratore", "Personal Trainer"]))

        self.v_layout.addLayout(h_lay_cent)
        self.v_layout.addLayout(v_lay_inf)

        self.setLayout(self.v_layout)
        self.setWindowTitle("Modifica Dipendente")

    # ritorna layout con i campi da moficiare con relative etichette
    def get_form_entry(self, campo, tipo):
        h_lay = QHBoxLayout()
        h_lay.addWidget(QLabel("<b>{}</b>".format(tipo)))
        current_text_edit = QLineEdit(self)
        current_text_edit.setText(campo)
        h_lay.addWidget(current_text_edit)
        self.info[tipo] = current_text_edit
        return h_lay

    # ottengo i dati della combo per l'abilitazione
    def get_combo(self, lista):
        v_lay = QVBoxLayout()
        v_lay.addWidget(QLabel("<b>Abilitazione</b>"))
        combo_model = QStandardItemModel(self.combo_abilitazione)
        combo_model.appendRow(QStandardItem(""))
        for item in lista:
            combo_model.appendRow(QStandardItem(item))
        self.combo_abilitazione.setModel(combo_model)
        # setto il valore della combo con l'abilitazione attuale del dipendente
        self.combo_abilitazione.setCurrentText(
            self.dipendente.get_abilitazione_dipendente())
        v_lay.addWidget(self.combo_abilitazione)
        return v_lay

    def mod_dipendente(self):
        # recupero i valori del dizionario
        nome = self.info["Nome"].text()
        cognome = self.info["Cognome"].text()
        data_nascita = self.info["Data di nascita"].text()
        luogo_nascita = self.info["Luogo di nascita"].text()
        residenza = self.info["Residenza"].text()
        indirizzo = self.info["Indirizzo"].text()
        cf = self.info["Codice Fiscale"].text()
        telefono = self.info["Telefono"].text()
        email = self.info["Email"].text()
        abilitazione = self.combo_abilitazione.currentText()
        password = self.info["Password"].text()
        # effettuo i controlli per i dati immessi come per l'inserimento di un nuovo cliente
        if nome == "" or cognome == "" or data_nascita == "" or luogo_nascita == "" or cf == "" or telefono == "" or email == "" or abilitazione == "" or password == "":
            QMessageBox.critical(
                self, 'Errore',
                'Per favore, inserisci tutte le informazioni richieste',
                QMessageBox.Ok, QMessageBox.Ok)
        else:
            if telefono.isnumeric() and len(telefono) == 10:
                if len(cf) == 16:
                    dipendente = Dipendente(nome, cognome, data_nascita,
                                            luogo_nascita, residenza,
                                            indirizzo, cf, telefono, email,
                                            abilitazione, password)
                    self.controller.rimuovi_dalla_lista(self.dp)
                    self.controller.aggiungi_dipendente(dipendente)
                    self.callback()
                    self.close()
                else:
                    QMessageBox.critical(
                        self, 'Errore',
                        'Per favore inserisci un codice fiscale di telefono valido, 16 valori',
                        QMessageBox.Ok, QMessageBox.Ok)
            else:
                QMessageBox.critical(
                    self, 'Errore',
                    'Per favore inserisci un numero di telefono valido, 10 cifre',
                    QMessageBox.Ok, QMessageBox.Ok)
コード例 #3
0
class VistaDipendente(QWidget):
    def __init__(self,
                 dipendente,
                 elimina_dipendente,
                 elimina_callback,
                 parent=None):
        super(VistaDipendente, self).__init__(parent)
        self.controller = ControlloreDipendente(dipendente)
        self.elimina_dipendente = elimina_dipendente
        self.elimina_callback = elimina_callback
        self.setWindowIcon(QtGui.QIcon('logos/logo.png'))
        v_layout = QVBoxLayout()

        #Impostazioni generali per titolo finestra
        label_nome = QLabel(self.controller.get_nome_dipendente() + " " +
                            self.controller.get_cognome_dipendente())
        font_nome = label_nome.font()
        font_nome.setPointSize(30)
        label_nome.setFont(font_nome)
        v_layout.addWidget(label_nome)

        v_layout.addItem(
            QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))

        # Aggiunge tramite metodo get_label_info il titolo di una informazione e l'informazione stessa tramite controller
        v_layout.addWidget(
            self.get_label_info("Codice Fiscale",
                                self.controller.get_cf_dipendente()))
        v_layout.addWidget(
            self.get_label_info("Indirizzo",
                                self.controller.get_indirizzo_dipendente()))
        v_layout.addWidget(
            self.get_label_info("Email",
                                self.controller.get_email_dipendente()))
        v_layout.addWidget(
            self.get_label_info("Telefono",
                                self.controller.get_telefono_dipendente()))
        v_layout.addWidget(
            self.get_label_info("Età", self.controller.get_eta_dipendente()))
        v_layout.addItem(
            QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
        v_layout.addWidget(
            self.get_label_info("Username",
                                self.controller.get_id_dipendente()))
        v_layout.addWidget(
            self.get_label_info("Password",
                                self.controller.get_password_dipendente()))

        v_layout.addItem(
            QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))

        # Bottone per eliminare un dipendente
        btn_elimina = QPushButton("Elimina")
        btn_elimina.clicked.connect(self.elimina_dipendente_click)
        v_layout.addWidget(btn_elimina)

        self.setLayout(v_layout)
        self.setWindowTitle(self.controller.get_nome_dipendente() + " " +
                            self.controller.get_cognome_dipendente())

    # Metodo che prende come parametri il testo di una informazione e il valore assegnato come sopra tramite il controller
    def get_label_info(self, testo, valore):
        current_label = QLabel("{}: {}".format(testo, valore))
        current_font = current_label.font()
        current_font.setPointSize(17)
        current_label.setFont(current_font)
        return current_label

    # Metodo che si occupa di eliminare il dipendente
    def elimina_dipendente_click(self):
        self.elimina_dipendente(self.controller.get_id_dipendente())
        self.elimina_callback()
        self.close()
コード例 #4
0
class VistaHome(QWidget):
    selezione_campo = None
    def __init__(self, parent=None):
        super(VistaHome, self).__init__(parent)

        #self.setFixedSize(1250, 700)
        self.showMaximized()
        from home.login.Login import Login
        self.controller = ControlloreDipendente(Login.accesso_utente)
        # layout a griglia per la pagina
        self.layout_admin = QGridLayout()
        self.layout_pt = QHBoxLayout()
        self.layout_collab = QHBoxLayout()
        self.layout_admin.setAlignment(Qt.AlignCenter)
        self.layout_pt.setAlignment(Qt.AlignCenter)
        self.layout_collab.setAlignment(Qt.AlignCenter)
        self.layout_admin.setSpacing(25)
        self.layout_pt.setSpacing(25)
        self.layout_collab.setSpacing(25)
        # lista dei campi presenti nel centro polisportivo
        self.lista_campi = ["Calcio", "Calcetto", "Tennis", "Paddle"]
        # inserimento sfondo
        image = QLabel(self)
        pixmap = QPixmap("home/views/centro.png")
        image.setPixmap(pixmap)
        #self.resize(pixmap.width(), pixmap.height())
        image.show()
        # costruttore condizionale
        if Login.autorizzazione_accesso == "Amministratore":
            self.setWindowTitle("Home - Amministratore")
            # VISTA HOME AMMINISTRATORE
            self.layout_admin.addWidget(QLabel("<font size = '6'> <b><u> Bentornato nell'area amministratore! </b></u> </font>"), 0, 0, 1, 2)
            self.layout_admin.addWidget(QLabel("<font size = '5'> <b> Selezionare l'attività da svolgere </b> </font>"),1, 0)
            self.layout_admin.addWidget(QLabel("<font size = '4'> <b> Gestisci prenotazioni campi da gioco </b> </font>"), 2, 0)
            self.layout_admin.addWidget(self.get_combo(self.lista_campi), 2, 1)
            self.layout_admin.addWidget(QLabel("<font size = '4'> <b> Gestisci i dipendenti del tuo centro </b> </font>"), 3, 0)
            self.layout_admin.addWidget(self.pulsante_con_nome("Gestione dipendenti", self.go_lista_dipendenti), 3, 1)
            self.layout_admin.addWidget(QLabel("<font size = '4'> <b> Gestisci i clienti della palestra </b> </font>"), 4, 0)
            self.layout_admin.addWidget(self.pulsante_con_nome("Gestione Palestra", self.go_gestione_palestra), 4, 1)
            self.layout_admin.addWidget(QLabel("<font size = '4'> <b> Gestisci i movimenti di cassa </b> </font>"), 5, 0)
            self.layout_admin.addWidget(self.pulsante_con_nome("Gestione movimenti cassa", self.go_gestione_cassa), 5, 1)
            self.layout_admin.addWidget(self.pulsante_con_nome("Esci", self.funz_esci), 6, 2)
            self.setLayout(self.layout_admin)
        elif Login.autorizzazione_accesso == "Personal Trainer":
            self.setWindowTitle("Home - Personal Trainer")
            # VISTA HOME PERSONAL TRAINER
            v_lay_dip_sx = QVBoxLayout()
            v_lay_dip_dx = QVBoxLayout()
            v_lay_dip_esci = QVBoxLayout()
            v_lay_dip_sx.addStretch()
            v_lay_dip_sx.addWidget(QLabel("<font size = '6'> <b><u> Bentornato nell'area dipendente! </b></u> </font>"))
            v_lay_dip_sx.addStretch()
            v_lay_dip_sx.addWidget(QLabel("<font size = '5'> <b> I tuoi dati: </b> </font>"))
            v_lay_dip_sx.addWidget(self.get_label_info("Nome", self.controller.get_nome_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Cognome", self.controller.get_cognome_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Nato a ", self.controller.get_luogo_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("il", self.controller.get_data_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Codice Fiscale", self.controller.get_cf_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Telefono", self.controller.get_telefono_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Email", self.controller.get_email_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Abilitazione", self.controller.get_abilitazione_dipendente()))
            v_lay_dip_sx.addStretch()
            v_lay_dip_dx.addStretch()
            v_lay_dip_dx.addWidget(QLabel("<font size = '5'> <b> Le tue attività: </b> </font>"))
            v_lay_dip_dx.addWidget(QLabel("<font size = '4'> <b> Gestisci prenotazione campi: </b> </font>"))
            v_lay_dip_dx.addWidget(self.get_combo(self.lista_campi))
            v_lay_dip_dx.addWidget(QLabel("<font size = '4'> <b> Gesisci clienti della palestra: </b> </font>"))
            v_lay_dip_dx.addWidget(self.pulsante_con_nome("Gestione Palestra", self.go_gestione_palestra))
            v_lay_dip_dx.addStretch()
            v_lay_dip_esci.addStretch()
            v_lay_dip_esci.addWidget(self.pulsante_con_nome("Esci", self.funz_esci))
            self.layout_pt.addLayout(v_lay_dip_sx)
            self.layout_pt.addItem(QSpacerItem(100, 100, QSizePolicy.Minimum, QSizePolicy.Minimum))
            self.layout_pt.addLayout(v_lay_dip_dx)
            self.layout_pt.addItem(QSpacerItem(100, 100, QSizePolicy.Minimum, QSizePolicy.Minimum))
            self.layout_pt.addLayout(v_lay_dip_esci)
            self.setLayout(self.layout_pt)
        elif Login.autorizzazione_accesso == "Collaboratore":
            self.setWindowTitle("Home - Collaboratore")
            # VISTA HOME COLLABORATORE
            v_lay_dip_sx = QVBoxLayout()
            v_lay_dip_dx = QVBoxLayout()
            v_lay_dip_esci = QVBoxLayout()
            v_lay_dip_sx.addStretch()
            v_lay_dip_sx.addWidget(QLabel("<font size = '6'> <b><u> Bentornato nell'area dipendente! </b></u> </font>"))
            v_lay_dip_sx.addStretch()
            v_lay_dip_sx.addWidget(QLabel("<font size = '5'> <b> I tuoi dati: </b> </font>"))
            v_lay_dip_sx.addWidget(self.get_label_info("Nome", self.controller.get_nome_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Cognome", self.controller.get_cognome_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Nato a ", self.controller.get_luogo_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("il", self.controller.get_data_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Codice Fiscale", self.controller.get_cf_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Telefono", self.controller.get_telefono_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Email", self.controller.get_email_dipendente()))
            v_lay_dip_sx.addWidget(self.get_label_info("Abilitazione", self.controller.get_abilitazione_dipendente()))
            v_lay_dip_sx.addStretch()
            v_lay_dip_dx.addStretch()
            v_lay_dip_dx.addWidget(QLabel("<font size = '5'> <b> Le tue attività: </b> </font>"))
            v_lay_dip_dx.addWidget(QLabel("<font size = '4'> <b> Gestisci prenotazione campi: </b> </font>"))
            v_lay_dip_dx.addWidget(self.get_combo(self.lista_campi))
            v_lay_dip_dx.addWidget(QLabel("<font size = '4'> <b> Gesisci clienti della palestra: </b> </font>"))
            v_lay_dip_dx.addWidget(self.pulsante_con_nome("Gestione Palestra", self.go_gestione_palestra))
            v_lay_dip_dx.addWidget(QLabel("<font size = '4'> <b> Gesisci movimenti di cassa: </b> </font>"))
            v_lay_dip_dx.addWidget(self.pulsante_con_nome("Gestione movimenti cassa", self.go_gestione_cassa))
            v_lay_dip_dx.addStretch()
            v_lay_dip_esci.addStretch()
            v_lay_dip_esci.addWidget(self.pulsante_con_nome("Esci", self.funz_esci))
            self.layout_collab.addLayout(v_lay_dip_sx)
            self.layout_collab.addItem(QSpacerItem(100, 100, QSizePolicy.Minimum, QSizePolicy.Minimum))
            self.layout_collab.addLayout(v_lay_dip_dx)
            self.layout_collab.addItem(QSpacerItem(100, 100, QSizePolicy.Minimum, QSizePolicy.Minimum))
            self.layout_collab.addLayout(v_lay_dip_esci)
            self.setLayout(self.layout_collab)

    # metodo che legge la selezione della combobox
    def get_combo(self, lista_campi):
        self.combo_campo = QComboBox()
        combo_model = QStandardItemModel(self.combo_campo)
        combo_model.appendRow(QStandardItem("Gestione campi"))
        for campo in lista_campi:
            combo_model.appendRow(QStandardItem(campo))
        self.combo_campo.activated.connect(self.go_gestione_campi)
        self.combo_campo.setModel(combo_model)
        self.combo_campo.setStyleSheet("background-color: #add8e6; font-size: 15px; font-weight: bold;")
        return self.combo_campo

    def get_label_info(self, testo, valore):
        current_label = QLabel("{}: {}".format('<b>{}</b>'.format(testo), valore))
        font_nome = current_label.font()
        current_label.setFont(font_nome)
        current_font = current_label.font()
        current_font.setPointSize(18)
        current_label.setFont(current_font)
        return current_label

    # metodo che definisce la costruzione di un bottone con il suo titolo
    def pulsante_con_nome(self, titolo, on_click):
        pulsante = QPushButton(titolo)
        pulsante.setStyleSheet("background-color: #add8e6; font-size: 15px; font-weight: bold;")
        # pulsante.setFixedWidth(500)
        # pulsante.setFixedHeight(40)
        # pulsante.setStyleSheet("font-size: 24px")
        if titolo == 'Esci':
            pulsante.setStyleSheet("background-color: #66cdaa; font-size: 13px; font-weight: bold;")
            pulsante.setShortcut("Esc")
        pulsante.clicked.connect(on_click)
        return pulsante

    # metodo che restituisce la lista dei clienti iscritti e registrati nella palestra
    def go_gestione_palestra(self):
        self.vista_lista_clienti = VistaListaClienti()
        self.close()
        return self.vista_lista_clienti.show()

    # metodo che restituisce la lista dei dipendenti del centro sportivo
    def go_lista_dipendenti(self):
        self.vista_lista_dipendenti = VistaListaDipendenti()
        self.close()
        return self.vista_lista_dipendenti.show()

    # metodo che reindirizza alla finestra di gestione delle prenotazioni
    def go_gestione_campi(self):
        if self.combo_campo.currentIndex()!=0:
            VistaHome.selezione_campo = self.combo_campo.currentText()
            self.cal = Calendario()
            self.close()
            return self.cal.show()

    # metodo che reindirizza alla gestione della cassa
    def go_gestione_cassa(self):
        self.vista_lista_movimenti = VistaListaMovimenti()
        self.close()
        return self.vista_lista_movimenti.show()

    def funz_esci(self):
        from home.login.Login import Login
        self.vista_login = Login()
        self.close()
        return self.vista_login.show()