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()
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)
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()
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()