示例#1
0
    def tout_instancier(self):
        """Cette méthode permet d'instancier les modules chargés auparavant.
        On se base sur le type du module (classe ou objet)
        pour le créer ou non.

        En effet, cette méthode doit pouvoir être appelée quand certains
        modules sont instanciés, et d'autres non.

        NOTE IMPORTANTE: on passe au constructeur de chaque module
        self, c'est-à-dire l'importeur. Les modules en ont en effet
        besoin pour interagir entre eux et avoir accès au parser de
        la ligne de commande, à l'analyseur des fichiers de configuration
        et au gestionnaire des loggers.

        L'ordre d'instanciation des modules est contenu dans la configuration
        globale ('modules_a_instancier').
        Les modules à ignorer sont également définis dans cette configuration
        globale. Leur instance est supprimée de l'importeur.

        """
        conf_glb = Importeur.anaconf.get_config("globale")
        # On supprime avant tout les modules à ignorer
        Importeur.logger.debug("Suppression des modules à ignorer :")
        for nom_module in conf_glb.modules_a_ignorer:
            if hasattr(self, nom_module): # le module est chargé
                delattr(self, nom_module)
                Importeur.logger.debug("  Le module {0} a été ignoré et " \
                        "supprimé de l'importeur".format(nom_module))
            else:
                Importeur.logger.warning("  Le module {0} n'a pas été " \
                        "instancié et ne peut être ignoré".format(nom_module))

        # On instancie d'abord les modules prioritaires
        # (c'est-à-dire ceux définis dans la donnée de configuration)
        Importeur.logger.debug("Instanciation des modules prioritaires :")
        for nom_module in conf_glb.modules_a_instancier:
            if hasattr(self, nom_module): # le module est chargé
                module = getattr(self, nom_module)
                if type(module) is type: # on doit l'instancier
                    setattr(self, nom_module, module(self))
                    Importeur.logger.debug("  Le module {0} a été " \
                            "instancié".format(nom_module))
                elif isinstance(module, BaseModule):
                    pass
                else:
                    Importeur.logger.warning("  Le module {0} n'a pas été " \
                            "instancié".format(nom_module))

        # On charge les modules restants
        Importeur.logger.debug("Instanciation des modules restants :")
        for nom_module, module in self.__dict__.items():
            if type(module) is type: # on doit l'instancier
                setattr(self, nom_module, module(self))
                Importeur.logger.debug("  Le module {0} a été " \
                        "instancié".format(nom_module))
示例#2
0
    def tout_instancier(self):
        """Cette méthode permet d'instancier les modules chargés auparavant.
        On se base sur le type du module (classe ou objet)
        pour le créer ou non.

        En effet, cette méthode doit pouvoir être appelée quand certains
        modules sont instanciés, et d'autres non.

        NOTE IMPORTANTE: on passe au constructeur de chaque module
        self, c'est-à-dire l'importeur. Les modules en ont en effet
        besoin pour interagir entre eux et avoir accès au parser de
        la ligne de commande, à l'analyseur des fichiers de configuration
        et au gestionnaire des loggers.

        L'ordre d'instanciation des modules est contenu dans la configuration
        globale ('modules_a_instancier').
        Les modules à ignorer sont également définis dans cette configuration
        globale. Leur instance est supprimée de l'importeur.

        """
        conf_glb = Importeur.anaconf.get_config("globale")
        # On supprime avant tout les modules à ignorer
        Importeur.logger.debug("Suppression des modules à ignorer :")
        for nom_module in conf_glb.modules_a_ignorer:
            if hasattr(self, nom_module):  # le module est chargé
                delattr(self, nom_module)
                Importeur.logger.debug("  Le module {0} a été ignoré et " \
                        "supprimé de l'importeur".format(nom_module))
            else:
                Importeur.logger.warning("  Le module {0} n'a pas été " \
                        "instancié et ne peut être ignoré".format(nom_module))

        # On instancie d'abord les modules prioritaires
        # (c'est-à-dire ceux définis dans la donnée de configuration)
        Importeur.logger.debug("Instanciation des modules prioritaires :")
        for nom_module in conf_glb.modules_a_instancier:
            if hasattr(self, nom_module):  # le module est chargé
                module = getattr(self, nom_module)
                if type(module) is type:  # on doit l'instancier
                    setattr(self, nom_module, module(self))
                    Importeur.logger.debug("  Le module {0} a été " \
                            "instancié".format(nom_module))
                elif isinstance(module, BaseModule):
                    pass
                else:
                    Importeur.logger.warning("  Le module {0} n'a pas été " \
                            "instancié".format(nom_module))

        # On charge les modules restants
        Importeur.logger.debug("Instanciation des modules restants :")
        for nom_module, module in self.__dict__.items():
            if type(module) is type:  # on doit l'instancier
                setattr(self, nom_module, module(self))
                Importeur.logger.debug("  Le module {0} a été " \
                        "instancié".format(nom_module))
示例#3
0
    def charger_module(self, parser_cmd, m_type, nom):
        """Méthode permettant de charger un module en fonction de son type et
        de son nom.
        
        Si le module est déjà chargé, on ne fait rien.

        Note: à la différence de tout_charger, cette méthode créée directement
        l'objet gérant le module.
        
        """
        if m_type == "primaire":
            rep = REP_PRIMAIRES
        elif m_type == "secondaire":
            rep = REP_SECONDAIRES
        else:
            raise ValueError("le type {0} n'est ni primaire ni secondaire" \
                    .format(type))

        if self.module_est_charge(nom):
            print("Le module {0} est déjà chargé.".format(nom))
        else:
            package = __import__(rep + "." + nom)
            module = getattr(getattr(package, nom), \
                    nom.capitalize())
            setattr(self, nom, module(self, parser_cmd))
示例#4
0
    def tout_instancier(self, parser_cmd):
        """Cette méthode permet d'instancier les modules chargés auparavant.
        On se base sur le type du module (classe ou objet)
        pour le créer ou non.
        
        En effet, cette méthode doit pouvoir être appelée quand certains
        modules sont instanciés, et d'autres non.

        NOTE IMPORTANTE: on passe au constructeur de chaque module
        self, c'est-à-dire l'importeur. Les modules en ont en effet
        besoin pour interragir entre eux.

        """
        for nom_module, module in self.__dict__.items():
            if type(module) is type: # on doit l'instancier
                setattr(self, nom_module, module(self, parser_cmd))