Code source de gestionSession

"""
    pyFormation.gestionSession
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    Le module implémente la gestion du cas d'utilisation des sessions.

    :copyright: (c) 2015 par moulinux.
    :license: GPLv3, voir la LICENCE pour plus d'informations.
"""
import config
import dict_fr as lang
import gestionErreurs as valid
from app import bdd, efface_ecran


[docs]class Session(object): """Définition d'une gestion de sessions"""
[docs] def __init__(self): """Constructeur de Session""" self.numActivite = None self.codeAction = None self.viderLesErreurs() efface_ecran() while self.numActivite is None: self.numActivite = self.choisirUneActivite() self.codeAction = self.choisirUneAction()
[docs] def viderLesErreurs(self): """ Ré-initialise la liste de gestion des erreurs :return: Pas de valeur de retour :rtype: None """ self.lesErreurs = []
[docs] def ajouterErreur(self, uneErreur): """ Ajoute une erreur à la liste des erreurs. :param uneErreur: nouvelle erreur à ajouter :type uneErreur: chaîne de caractères :return: Pas de valeur de retour :rtype: None """ self.lesErreurs.append(uneErreur)
[docs] def listerLesErreurs(self): """ Affiche les différents éléments de la collection des erreurs. :return: Pas de valeur de retour :rtype: None """ for uneErreur in self.lesErreurs: print(config.FAIL, " - {}". format(uneErreur, config.ENDC))
[docs] def listerLesActivites(self): """ Recherche le jeu des enregistrements des activités, puis les affiche. :return: Pas de valeur de retour :rtype: None """ lesActivites = bdd.obtenirActivites() for uneActivite in lesActivites: print(config.OKBLUE, "{} - {}". format(uneActivite['numero'], uneActivite['libelle']), config.ENDC)
[docs] def listerLesActions(self): """ Recherche le jeu des enregistrements des actions de formation, puis les affiche. :return: Pas de valeur de retour :rtype: None """ lesActions = bdd.obtenirActions(self.numActivite) for uneAction in lesActions: print(config.OKBLUE, "{} - {}". format(uneAction['code'], uneAction['intitule']), config.ENDC)
[docs] def listerLesSessions(self): """ Recherche le jeu des enregistrements des sessions, puis les affiche. :return: Pas de valeur de retour :rtype: None """ lesSessions = bdd.obtenirSessions(self.codeAction) for uneSession in lesSessions: print(config.OKBLUE, "| {}\t| {} |". format(uneSession['numero'], uneSession['nomLieu']), config.ENDC)
[docs] def listerLesLieux(self): """ Recherche le jeu des enregistrements des lieux, puis les affiche. :return: Pas de valeur de retour :rtype: None """ lesLieux = bdd.obtenirLieux() for unLieu in lesLieux: print("{} - {}".format(unLieu['id'], unLieu['libelle']))
[docs] def choisirUneActivite(self): """ Vue permettant de choisir une activité, parmi la liste des activités affichées. :return: Renvoie le numéro d'activité ou None en cas d'erreur de saisie :rtype: entier """ self.listerLesActivites() try: return int(input(lang.dico['choixActivite'])) except ValueError: strErreur = "choisirUneActivite : " strErreur += lang.dico['errNombre'] self.ajouterErreur(strErreur)
[docs] def choisirUneAction(self): """ Vue permettant de choisir une action de formation, parmi la liste des actions affichés. :return: Renvoie le code de l'action saisie :rtype: chaîne de caractères """ efface_ecran() self.listerLesActions() return input(lang.dico['choixAction'])
[docs] def choisirUnLieu(self): """ Vue permettant de choisir un lieu, parmi la liste des lieux affichés. :return: Renvoie l'identifiant du lieu ou None en cas d'erreur de saisie :rtype: entier """ self.listerLesLieux() try: return int(input(lang.dico['choixLieu'])) except ValueError: strErreur = "choisirUnLieu : " strErreur += lang.dico['errNombre'] self.ajouterErreur(strErreur)
[docs] def choisirUneSession(self): """ Vue permettant de choisir une session, parmi la liste des sessions affichées. :return: Renvoie l'identifiant de la session ou None en cas d'erreur de saisie :rtype: entier """ efface_ecran() self.listerLesSessions() try: numero = int(input(lang.dico['choixSession'])) return numero except ValueError: strErreur = "choisirUneSession : " strErreur += lang.dico['errNombre'] self.ajouterErreur(strErreur)
[docs] def ajouterUneSession(self, dicParam): """ Vue permettant d'ajouter une nouvelle session. :param dicParam: paramètres issus de la base :type dicParam: dictionnaire :return: Renvoie l'enregistrement à ajouter ou None, en cas d'erreur de saisie :rtype: tuple """ efface_ecran() try: codeAction = self.codeAction idLieu = None while idLieu is None: idLieu = self.choisirUnLieu() nombreMaxParticipant = \ int(input(lang.dico['choixNumMaxParticipant']+" : ")) dateSession = input(lang.dico['choixDateSession']+" : ") coutPrevu = float(input(lang.dico['choixCoutPrevu']+" : ")) forfaitJournalier = dicParam['forfaitJournalier'] distanceMin = dicParam['distanceMin'] return codeAction, idLieu, nombreMaxParticipant, dateSession,\ coutPrevu, forfaitJournalier, distanceMin except ValueError: strErreur = "ajouterUneSession : " strErreur += lang.dico['errNombre'] self.ajouterErreur(strErreur)
[docs] def modifierUneSession(self, dicSession): """ Vue permettant de modifier une session. :param dicSession: enregistrement correspondant à la session à modifier :type dicSession: dictionnaire :return: Renvoie l'enregistrement modifié ou None, en cas d'erreur de saisie :rtype: tuple """ efface_ecran() try: # attributs non proposés à la modification numero = dicSession['numero'] codeAction = self.codeAction # choix idLieu idLieu = None while idLieu is None: idLieu = self.choisirUnLieu() # choix nombreMaxParticipant strChoix = lang.dico['choixNumMaxParticipant'] strChoix += " ({}) : ".format(dicSession['nombreMaxParticipant']) nombreMaxParticipant = int(input(strChoix)) # choix dateSession strChoix = lang.dico['choixDateSession'] strChoix += " ({}) : ".format(dicSession['dateSession']) dateSession = input(strChoix) # choix coutPrevu strChoix = lang.dico['choixCoutPrevu'] strChoix += " ({}) : ".format(dicSession['coutPrevu']) coutPrevu = float(input(strChoix)) # choix coutReel strChoix = lang.dico['choixCoutReel'] strChoix += " ({}) : ".format(dicSession['coutReel']) coutReel = float(input(strChoix)) # retour return idLieu, nombreMaxParticipant, dateSession,\ coutPrevu, coutReel, numero except ValueError: strErreur = "modifierUneSession : " strErreur += lang.dico['errNombre'] self.ajouterErreur(strErreur)
[docs] def run(self): """ Boucle principal permettant de gérer le cas d'utilisation des sessions. :return: Pas de valeur de retour :rtype: None """ while True: efface_ecran() print(config.OKBLUE, lang.dico['listeSession']. format(self.numActivite, self.codeAction), sep='') self.listerLesSessions() print(config.ENDC) self.listerLesErreurs() self.viderLesErreurs() print(config.HEADER, lang.dico['menuSession'], config.ENDC, end='') try: choix = int(input()) if choix == 1: pass elif choix == 2: dicParam = bdd.obtenirParametres() tupSession = None while tupSession is None: tupSession = self.ajouterUneSession(dicParam) if valid.verifierDonneesSessionC(self.lesErreurs, tupSession): if not bdd.creerSession(tupSession): # erreur création Bdd strErreur = lang.dico['errCreerSession'] self.ajouterErreur(strErreur) elif choix == 3: numSession = None while numSession is None: numSession = self.choisirUneSession() dicSession = bdd.detailSession(numSession) tupSession = None while tupSession is None: tupSession = self.modifierUneSession(dicSession) if valid.verifierDonneesSessionM(numSession, self.lesErreurs, tupSession): if not bdd.modifierSession(tupSession): # erreur maj Bdd strErreur = lang.dico['errModifSession'] self.ajouterErreur(strErreur) elif choix == 4: numSession = None while numSession is None: numSession = self.choisirUneSession() if not bdd.supprimerSession(numSession): strErreur = lang.dico['errSupprSession'] self.ajouterErreur(strErreur) else: break except Exception as err: print(config.FAIL, lang.dico['err'], ":", str(err), config.ENDC)