コード例 #1
0
ファイル: database.py プロジェクト: Roromis/SynApps
def get_repository_cfg(uri):
    """Renvoie : L'objet ConfigParser associé au dépôt"""
    # Téléchargement du dépôt
    try:
        tmp = urllib2.urlopen(uri + '/repository.ini').read()
    except (urllib2.URLError, urllib2.HTTPError) as e:
        logger.warning(u'Impossible de se connecter au dépôt %s' % uri)
        raise RepositoryConnectionError(uri, e)
        
    # Lecture du dépôt
    cfg = ConfigParser()
    try:
        cfg.read_string(tmp.decode('utf-8'))
    except Exception as e:
        logger.warning(u'Le dépôt %s est invalide' % uri)
        raise InvalidRepository(uri, e)
    
    return cfg
コード例 #2
0
ファイル: application.py プロジェクト: Roromis/SynApps
    def _get_installation_infos(self, filename=None):
        """
            Arguments : 
                filename : chemin vers le paquet (facultatif)
            
            Renvoie :
                
        """
        infos = {}

        # Emplacement de l'application
        infos["application_root"] = os.path.join("Apps", self.id)
        infos["install_dir"] = "Apps"

        infos["remove"] = {}
        infos["remove"]["files"] = []
        infos["remove"]["dirs"] = []
        infos["remove"]["main"] = ["App", "Other"]
        infos["preserve"] = {}
        infos["preserve"]["files"] = []
        infos["preserve"]["dirs"] = []

        cfg = ConfigParser()
        if filename:
            try:
                package = zipfile.ZipFile(filename, "r")
            except Exception as e:
                logger.error("Le paquet %s n'est pas une archive zip." % self.id)
                raise InvalidPackage(self, e)

            try:
                inifile = package.read(self.id + "/App/AppInfo/installer.ini")
                cfg.read_string(inifile.decode("utf-8"))
            except:
                return infos
        else:
            cfg.read("./cache/installed/" + self.id + "/installer.ini")

        # Emplacement de l'application
        infos["application_root"] = cfg.get("Framakey", "ApplicationRoot", "Apps/%s" % self.id)
        infos["install_dir"] = cfg.get("Framakey", "InstallDir", "Apps")

        # Dossier principaux
        if cfg.get("MainDirectories", "RemoveAppDirectory", "true").lower() != "true":
            infos["remove"]["main"].remove("App")

        if cfg.get("MainDirectories", "RemoveDataDirectory", "false").lower() == "true":
            infos["remove"]["main"].append("Data")

        if cfg.get("MainDirectories", "RemoveOtherDirectory", "true").lower() != "true":
            infos["remove"]["main"].remove("Other")

        # Fichiers à supprimer
        infos["remove"]["files"] = [i.replace("\\", "/") for i in cfg.getlist("FilesToRemove", "RemoveFile")]

        # Fichiers à conserver
        infos["preserve"]["files"] = [i.replace("\\", "/") for i in cfg.getlist("FilesToPreserve", "PreserveFile")]

        # Dossiers à supprimer
        infos["remove"]["dirs"] = [i.replace("\\", "/") for i in cfg.getlist("DirectoriesToRemove", "RemoveDirectory")]

        # Dossiers à conserver
        infos["preserve"]["dirs"] = [
            i.replace("\\", "/") for i in cfg.getlist("DirectoriesToPreserve", "PreserveDirectory")
        ]

        return infos