def searchmydata(self,keyword): ligne = 0 randomChars="%%%%%%%%%%%%%%%%%%%%%%%%%%%%" print keyword Users = EnsUtilisateurs.rechercher("%%%%%%%%%%%%%%%%"+keyword+"%%%%%%%%%%%%%%%%") self.setRowCount(len(Users)) for User in Users: currentUser = EnsUtilisateurs.get_user(int(User[0])) self.setItem(ligne, 0, QTableWidgetItem(str(User[0]))) if currentUser.get_abonnementValide(): self.item(ligne, 0).setBackground(QColor(178,255,102)) else: self.item(ligne, 0).setBackground(QColor(255,102,102)) self.setItem(ligne, 1, QTableWidgetItem(User[1])) if (EnsEmprunt.a_un_emprunt_en_cours(currentUser)): emprunt = "Oui" else: emprunt = "Non" self.setItem(ligne, 2, QTableWidgetItem(emprunt)) self.setItem(ligne, 3, QTableWidgetItem(str(User[6]))) ligne=ligne+1
def listeUtilisateurs(): connecte() print "====== LISTE UTILISATEURS ======" rows=EnsUtilisateurs.printAll() for row in rows: print('{0} - {1} '.format(row[0], row[1])) print "================================" print "\n1. Selectionner un utilisateur" print "2. Ajouter un utilisateur" print "3. Re-initialiser tous les abonnements" print "0. Retour au menu" choixUtilisateur=int(raw_input("Choix: ")) if choixUtilisateur==1: user_id=int(raw_input("\nID de l'utilisateur: ")) # Verifier si existe !!! selectionnerUtilisateur(user_id) elif choixUtilisateur==2: ajouterUtilisateur() elif choixUtilisateur==3: confirm = str(raw_input("Etes vous surs de vouloir réinitialiser les abonnements de TOUS les utilisateurs ? (OK pour valider / 0 pour quitter) : ")) if confirm == "OK": try: EnsUtilisateurs.reinitAbonnements() listeUtilisateurs() except: print "Oops ! Grosseu mistake" else: listeUtilisateurs() elif choixUtilisateur == 0: menu() else: listeUtilisateurs()
def ReinitAll(self): try: reply = QMessageBox.question(self, 'Attention', u"Vous êtes sur le point de réinitialiser TOUS les abonnements.\nÊtes vous sûrs de vouloir continuer ?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: EnsUtilisateurs.reinitAbonnements() self.refresh() except: self.criticalError()
def creer_session(self): global session if self.est_valide(): User=EnsUtilisateurs.get_user(username=self.username) # ID Associe à username fourni session=Session(User) else: print "Oops !"
def selectionnerUtilisateur(user_id): selectedUser = EnsUtilisateurs.get_user(user_id=user_id) connecte() print "===== Utilisateur selectionné =====" print "ID: "+str(selectedUser.get_user_id()) print "Nom d'utilisateur: "+selectedUser.get_username() if EnsAdmins.est_admin(selectedUser): status="Admin" else: status="Adhérent" print "Statut: "+status print "===================================" print "\n" print "1. Modifier" print "2. Supprimer" if (status!="Admin"): print "3. Promouvoir administrateur" print "0. Retour" choix = int(raw_input("Choix: ")) if (choix==1): print "En construction..." elif (choix==2): selectedUser.delete_user() raw_input("Utilisateur supprimé. Appuyez sur Entrer pour continuer.") listeUtilisateurs() elif (choix==3 and status != "admin"): selectedUser.make_admin() selectionnerUtilisateur(selectedUser.get_user_id()) elif (choix==0): listeUtilisateurs() else: selectionnerUtilisateur(user_id)
def __init__(self, *args): QTableWidget.__init__(self) # On défini le nombre de colonnes self.setSortingEnabled(True) self.setMinimumSize(800, 300) self.setColumnCount(5) self.setRowCount(EnsUtilisateurs.get_nombre_utilisateurs()) self.setheaders() self.setmydata() # Selection de lignes activé self.setSelectionBehavior(self.SelectRows) # Pas de sélection de cellule self.setSelectionMode(self.NoSelection) # Desactive la selection de lignes self.setEditTriggers(QAbstractItemView.NoEditTriggers) # Desactive l'edition de cellules self.setFocusPolicy(Qt.NoFocus) self.setAlternatingRowColors(True) self.verticalHeader().hide() # Affichage de la grille désactivé self.setShowGrid(False) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.horizontalHeader().setStretchLastSection(True) self.cellDoubleClicked.connect(self.selectedUser)
def get_emprunt_en_cours(User): if a_un_emprunt_en_cours(User): cur.execute("""SELECT * FROM EnsEmprunt WHERE user_id = ? AND date_rendu IS NULL""",(User.get_user_id(),) ) res = cur.fetchone() return Emprunt(Emprunt_id=res[0],User=EnsUtilisateurs.get_user(res[1]),Exemplaire=EnsExemplaires.get_Exemplaire(res[2]),date_emprunt=res[3],date_echeance=res[4],date_rendu=res[5]) else: return None
def setmydata(self): ligne = 0 Emprunts = EnsEmprunt.printAll() for Emprunt in Emprunts: self.Table.setItem(ligne, 0, QTableWidgetItem(str(EnsUtilisateurs.get_user(Emprunt[1]).get_username()))) self.Table.setItem(ligne, 1, QTableWidgetItem(str(EnsExemplaires.get_Exemplaire(Emprunt[2]).get_Jeu_Exemplaire().get_Nom_jeu()))) self.Table.setItem(ligne, 2, QTableWidgetItem(str(Emprunt[3]))) self.Table.setItem(ligne, 3, QTableWidgetItem(str(Emprunt[4]))) ligne=ligne+1
def setmydata(self): ligne = 0 Users = EnsUtilisateurs.printAll() for User in Users: self.setItem(ligne, 0, QTableWidgetItem(str(User[0]))) self.setItem(ligne, 1, QTableWidgetItem(User[1])) self.setItem(ligne, 2, QTableWidgetItem(str(User[3]))) self.setItem(ligne, 3, QTableWidgetItem(str(User[4]))) self.setItem(ligne, 4, QTableWidgetItem(str(User[6]))) ligne=ligne+1
def searchmydata(self,keyword): ligne = 0 randomChars="%%%%%%%%%%%%%%%%%%%%%%%%%%%%" print keyword Users = EnsUtilisateurs.rechercher("%%%%%%%%%%%%%%%%"+keyword+"%%%%%%%%%%%%%%%%") self.setRowCount(len(Users)) for User in Users: self.setItem(ligne, 0, QTableWidgetItem(str(User[0]))) self.setItem(ligne, 1, QTableWidgetItem(User[1])) self.setItem(ligne, 2, QTableWidgetItem(str(User[3]))) self.setItem(ligne, 3, QTableWidgetItem(str(User[4]))) self.setItem(ligne, 4, QTableWidgetItem(str(User[6]))) ligne=ligne+1
def setmydata(self): ligne = 0 Users = EnsUtilisateurs.printAll() for User in Users: currentUser = EnsUtilisateurs.get_user(int(User[0])) self.setItem(ligne, 0, QTableWidgetItem(str(User[0]))) if currentUser.get_abonnementValide(): self.item(ligne, 0).setBackground(QColor(178,255,102)) else: self.item(ligne, 0).setBackground(QColor(255,102,102)) self.setItem(ligne, 1, QTableWidgetItem(User[1])) if (EnsEmprunt.a_un_emprunt_en_cours(currentUser)): emprunt = "Oui" else: emprunt = "Non" self.setItem(ligne, 2, QTableWidgetItem(emprunt)) self.setItem(ligne, 3, QTableWidgetItem(str(User[6]))) ligne=ligne+1
def selectionnerUtilisateur(user_id): selectedUser = EnsUtilisateurs.get_user(user_id=user_id) connecte() print "===== Utilisateur selectionné =====" print "ID: "+str(selectedUser.get_user_id()) print "Nom d'utilisateur: "+str(selectedUser.get_username()) if EnsAdmins.est_admin(selectedUser): status="Admin" else: status="Adhérent" print "Statut: "+status if selectedUser.get_abonnementValide(): print "[V] Abonnement valide" else: print "[X] Abonnement non valide" if EnsEmprunt.a_un_emprunt_en_cours(selectedUser): print "\nEmprunt en cours: \n"+EnsEmprunt.get_emprunt_en_cours(selectedUser).display() print "===================================" print "\n" print "1. Emprunt rendu" if not(selectedUser.get_abonnementValide()): print "2. Valider abonnement" print "8. Modifier" print "9. Supprimer" if (status!="Admin"): print "10. Promouvoir administrateur" print "0. Retour" choix = int(raw_input("Choix: ")) if (choix == 1 and EnsEmprunt.a_un_emprunt_en_cours(selectedUser)): rendreEmprunt(selectedUser) selectionnerUtilisateur(selectedUser.get_user_id()) if (choix==2 and not(selectedUser.get_abonnementValide())): selectedUser.set_abonnementValide(True) selectionnerUtilisateur(selectedUser.get_user_id()) if (choix==8): modifierUtilisateur(selectedUser) elif (choix==9): selectedUser.delete_user() raw_input("Utilisateur supprimé. Appuyez sur Entrer pour continuer.") listeUtilisateurs() elif (choix==10 and status != "admin"): selectedUser.make_admin() selectionnerUtilisateur(selectedUser.get_user_id()) elif (choix==0): listeUtilisateurs() else: selectionnerUtilisateur(selectedUser.get_user_id())
def selectedUser(self): row = self.currentItem().row() print "row=",row col = self.currentItem().column() print "col=",col item = self.item(row,0).text() print "item=",item selected=EnsUtilisateurs.get_user(user_id=int(item)) if selected.est_admin(): statut = "Administrateur" else: statut = "Adhérent" selection = QMessageBox.information(self, self.trUtf8("Selection"), self.trUtf8("Vous avez séléctionné l'utilisateur: \nID: "+item+" \nNom d'utilisateur: "+self.item(row,1).text()+"\nStatut: "+statut))
def ouvrirDialogue(self): # Renvoie le résultat de la connexion username=str(self.usernameText.text()) # Récupération des entrées password=str(self.passwordText.text()) conn=Connexion(username,password) # Création d'une connexion avec les paramètres des textboxes if conn.est_valide(): reponse = QtGui.QMessageBox.information(self, # Création d'une message box d'information (SUCCES) self.trUtf8("Bienvenue"), self.trUtf8("Bienvenue "+username)) user = EnsUtilisateurs.get_user(username=username) self.ActiveSession = Session(user) self.state = True self.close() else: QtGui.QMessageBox.warning(self, # Création d'une message box d'avertissement (ECHEC) self.trUtf8("Erreur"), self.trUtf8("Nom d'utilisateur / mot de passe incorrect !")) self.state=False
def selectedUser(self): row = self.currentItem().row() print "row=",row col = self.currentItem().column() print "col=",col item = self.item(row,0).text() print "item=",item selected=EnsUtilisateurs.get_user(user_id=int(item)) if selected.est_admin(): statut = "Administrateur" else: statut = "Adhérent" #selection = QMessageBox.information(self, #self.trUtf8("Selection"), #self.trUtf8("Vous avez séléctionné l'utilisateur: \nID: "+item+" \nNom d'utilisateur: "+self.item(row,1).text()+"\nStatut: "+statut)) # Changer vue vers 1 Seul User et sa fiche ! User = UserView(item=item,session=self.parent().parent().session) # JEU VIEW ? OU POPUP. self.close() self.parent().parent().setCentralWidget(User)
def listeUtilisateurs(): connecte() print "====== LISTE UTILISATEURS ======" rows=EnsUtilisateurs.printAll() for row in rows: print('{0} - {1} '.format(row[0], row[1])) print "================================" print "\n1. Selectionner un utilisateur" print "2. Ajouter un utilisateur" print "0. Retour au menu" choixUtilisateur=int(raw_input("Choix: ")) if choixUtilisateur==1: user_id=int(raw_input("\nID de l'utilisateur: ")) # Verifier si existe !!! selectionnerUtilisateur(user_id) elif choixUtilisateur==2: ajouterUtilisateur() elif choixUtilisateur == 0: menu() else: listeUtilisateurs()
def get_Emprunt (Emprunt_id): cur.execute("""SELECT * FROM EnsEmprunt WHERE emprunt_id = (?)""",(Emprunt_id,)) res = cur.fetchone() return Emprunt(Emprunt_id=res[0],User=EnsUtilisateurs.get_user(res[1]),Exemplaire=EnsExemplaires.get_Exemplaire(res[2]),date_emprunt=res[3],date_echeance=res[4],date_rendu=res[5])
def save(self): EnsUtilisateurs.insert(self)
def newSession(login): global user global ActiveSession user = EnsUtilisateurs.get_user(username=login) ActiveSession = Session(user)
def save(self): if self.user_id == None: EnsUtilisateurs.insert(self) else: EnsUtilisateurs.update(self)
def emprunt_valide(self, User_id): """ emprunt_valide : Emprunt x Adherent -> Bool, renvoie True si l'utilisateur a les droits d'emprunt et qu'il n'a pas d'emprunt en cours, False sinon""" User = EnsUtilisateurs.get_user(User_id,) return User.empruntEnCours == False """ Il manque le droit d'emprunt dans utilisateurs, que faire si il y a une reservation en cours (conflit de dates)"""
def delete_user(self): """Supprime un utilisateur de l'ensemble des EnsUtilisateurs (#) Si cet utilisateur est admin => Supprime l'utilisateur de l'ensemble des admins """ if self.est_admin(): EnsAdmins.delete_admin(self) EnsUtilisateurs.delete_user(self)
def rechercher_Exemplaire (Exemplaire): cur.execute("""SELECT * FROM EnsEmprunt WHERE Exemplaire_id = ?""",(Exemplaire.get_Exemplaire_id())) res = cur.fetchall() return Emprunt(Emprunt_id=res[0],User=EnsUtilisateurs.get_user(res[1]),Exemplaire=EnsExemplaires.get_Exemplaire(res[2]),date_emprunt=res[3],date_echeance=res[4],date_rendu=res[5])
def __init__(self,item="",session="",*args): # ESPACEMENT super(UserView, self).__init__() spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.session = session self.Display = QWidget() self.Display.setMinimumSize(300, 300) self.item = int(item) self.selectedUser = EnsUtilisateurs.get_user(self.item) QWidget.__init__(self) HBox1 = QHBoxLayout() Grid = QVBoxLayout() # Titre Principale font = QFont() font.setBold(True) font.setWeight(75) font.setPointSize(36) Username = QLabel(str(self.selectedUser.get_username())) Username.setFont(font) HBox1.addWidget(spacer) if (self.selectedUser.get_abonnementValide()): Icon = QLabel("<html><img src='./img/green.png' height='35' width='35'></html>") else: Icon = QLabel("<html><img src='./img/red.png' height='35' width='35'></html>") HBox1.addWidget(Icon) HBox1.addWidget(Username) HBox1.addWidget(spacer) Grid.addLayout(HBox1) Grid.addWidget(spacer) # TOUS LES CHAMPS CompteTitre = QLabel("# Compte\n") EmpruntTitre = QLabel("\n# Emprunt") font = QFont() font.setBold(True) font.setWeight(75) font.setPointSize(20) CompteTitre.setFont(font) EmpruntTitre.setFont(font) usernametxt = QLabel("Nom d'utilisateur: ") username=QLabel(str(self.selectedUser.get_username())) statutTxt = QLabel("Statut: ") if self.selectedUser.get_abonnementValide() and self.selectedUser.est_admin(): statut = QLabel("Administrateur - Adherent") elif not(self.selectedUser.get_abonnementValide()) and self.selectedUser.est_admin(): statut = QLabel("Administrateur - Non adherent") elif self.selectedUser.get_abonnementValide(): statut= QLabel("Adherent") else: statut=QLabel("Utilisateur") retardTxt = QLabel("Retard: ") retard = QLabel(str(self.selectedUser.get_nbRetard())+" jours") abonnementValideTxt = QLabel("Abonnement: ") if (self.selectedUser.get_abonnementValide()): abonnementValide = QLabel("Valide") else: abonnementValide = QLabel("Non Valide") empruntEnCoursTxt = QLabel("\nEmprunt en cours:") if EnsEmprunt.a_un_emprunt_en_cours(self.selectedUser): empruntEnCours=EnsEmprunt.get_emprunt_en_cours(self.selectedUser) else: empruntEnCours=None # Grande Horizontale Milieu HBoxCentre = QHBoxLayout() # Vertical Gauche VBoxTextes = QVBoxLayout() # Layout titre Compte VBoxTextes.addWidget(CompteTitre) # Horizontale Gauches HBoxGauche = QHBoxLayout() VBoxTextes.addLayout(HBoxGauche) VBox1 = QVBoxLayout() VBox2 = QVBoxLayout() HBoxGauche.addLayout(VBox1) HBoxGauche.addLayout(VBox2) # Ajout des Widgets de texte VBox1.addWidget(usernametxt) VBox2.addWidget(username) VBox1.addWidget(statutTxt) VBox2.addWidget(statut) VBox1.addWidget(retardTxt) VBox2.addWidget(retard) VBox1.addWidget(abonnementValideTxt) VBox2.addWidget(abonnementValide) EmpruntRendu = QPushButton("Emprunt Rendu") HBox3=QHBoxLayout() # En dessous gauche et droite VBox3=QVBoxLayout() VBox4=QVBoxLayout() HBox3.addLayout(VBox3) HBox3.addLayout(VBox4) VBoxTextes.addWidget(EmpruntTitre) #VBox3.addWidget(empruntEnCoursTxt) #VBox3.addWidget(empruntEnCours) HBox31 = QHBoxLayout() VBox3.addLayout(HBox31) VBox31 = QVBoxLayout() VBox32 = QVBoxLayout() HBox31.addLayout(VBox31) HBox31.addLayout(VBox32) VBox4.addWidget(spacer) if empruntEnCours != None: #### INFORMATIONS EMPRUNT #### NomDuJeuTxt=QLabel("Nom du jeu:") NomDuJeu=QLabel(str(empruntEnCours.get_Exemplaire_Emprunt().get_Jeu_Exemplaire().get_Nom_jeu())) DateEmpruntTxt=QLabel("Nom d'emprunt:") DateEmprunt=QLabel(str(empruntEnCours.get_date_emprunt())) DateEcheanceTxt=QLabel(u"Date d'écheance:") DateEcheance=QLabel(str(empruntEnCours.get_date_echeance())) #### AJOUT EMPRUNT AU LAYOUT #### VBox31.addWidget(NomDuJeuTxt) VBox32.addWidget(NomDuJeu) VBox31.addWidget(DateEmpruntTxt) VBox32.addWidget(DateEmprunt) VBox31.addWidget(DateEcheanceTxt) VBox32.addWidget(DateEcheance) else: VBox31.addWidget(QLabel("Aucun")) VBox32.addWidget(QLabel(" ")) # Blank if EnsEmprunt.a_un_emprunt_en_cours(self.selectedUser): VBox3.addWidget(EmpruntRendu) # Verticale Droite VBoxBoutons = QVBoxLayout() HBoxCentre.addLayout(VBoxTextes) Blank = QVBoxLayout() Blank.addWidget(spacer) HBoxCentre.addLayout(Blank) HBoxCentre.addLayout(VBoxBoutons) Modifier = QPushButton("Modifier") if self.selectedUser.get_abonnementValide(): Abonnement = QPushButton("Desactiver Abonnement") else: Abonnement = QPushButton("Activer Abonnement") ReinitRetard = QPushButton("Reinitialiser retard") if self.selectedUser.est_admin(): Promote = QPushButton("Retrograder Utilisateur") else: Promote = QPushButton("Promouvoir Administrateur") Supprimer = QPushButton("Supprimer") # Ajout des widgets Boutons VBoxBoutons.addWidget(Modifier) VBoxBoutons.addWidget(ReinitRetard) VBoxBoutons.addWidget(Abonnement) VBoxBoutons.addWidget(Supprimer) # On empêche un admin de se retirer ses propres droits. Car c'est nul. Vive le pouvoir. if self.selectedUser.get_user_id() != self.session.get_session_User().get_user_id(): VBoxBoutons.addWidget(Promote) Grid.addLayout(HBoxCentre) Grid.addLayout(HBox3) # On connecte les boutons ! EmpruntRendu.clicked.connect(self.rendreEmprunt) ReinitRetard.clicked.connect(self.reinitRetard) Abonnement.clicked.connect(self.abonnement) Supprimer.clicked.connect(self.supprimer) Promote.clicked.connect(self.promote) Modifier.clicked.connect(self.modifier) # ESPACEMENT spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) Grid.addWidget(spacer) self.setLayout(Grid)
def est_valide(self): if EnsUtilisateurs.has_username(self.username): User=EnsUtilisateurs.get_user(username=self.username) # On récupère l'utilisateur return EnsUtilisateurs.is_password(self.password,User) else: return False