diff --git a/marcheolex/exports/FichierUnique.py b/marcheolex/exports/FichierUnique.py index 70b7e8a..3b84370 100644 --- a/marcheolex/exports/FichierUnique.py +++ b/marcheolex/exports/FichierUnique.py @@ -11,6 +11,12 @@ # Imports from . import Organisations +try: + # @WojtekCh https://stackoverflow.com/a/32812228/174027 + LIMIT_NAME_MAX = int(subprocess.check_output("getconf NAME_MAX /", shell=True)) +except: + LIMIT_NAME_MAX = 0 + class FichierUnique( Organisations ): @@ -30,6 +36,8 @@ def __init__( self, extension ): """ self.extension = '.' + extension if extension else '' + self.limite_nom_texte = max(LIMIT_NAME_MAX - len(self.extension), 0) if LIMIT_NAME_MAX is not None else None + self.limite_nom_texte = None if self.limite_nom_texte is 0 else self.limite_nom_texte def obtenir_nom_fichier( self, id, parents, num, titre ): @@ -51,7 +59,7 @@ def obtenir_nom_fichier( self, id, parents, num, titre ): if len(parents) == 0: if not titre: raise Exception() - return titre + self.extension + return titre[:self.limite_nom_texte] + self.extension return None diff --git a/marcheolex/exports/Organisations.py b/marcheolex/exports/Organisations.py index 13b2af7..2561bfa 100644 --- a/marcheolex/exports/Organisations.py +++ b/marcheolex/exports/Organisations.py @@ -8,6 +8,7 @@ # To Public License, Version 2, as published by Sam Hocevar. See # the LICENSE file for more details. + class Organisations: def obtenir_nom_fichier( self, id, parents, num, titre ): diff --git a/marcheolex/exports/StockageGitFichiers.py b/marcheolex/exports/StockageGitFichiers.py index f9781a2..2045dff 100644 --- a/marcheolex/exports/StockageGitFichiers.py +++ b/marcheolex/exports/StockageGitFichiers.py @@ -13,11 +13,6 @@ import subprocess from . import Stockage -try: - # @WojtekCh https://stackoverflow.com/a/32812228/174027 - LIMIT_NAME_MAX = int(subprocess.check_output("getconf NAME_MAX /", shell=True)) -except: - LIMIT_NAME_MAX = 0 class StockageGitFichiers( Stockage ): @@ -44,7 +39,7 @@ def ecrire_ressource( self, id, parents, num, titre, texte ): # Enregistrer les fichiers for fichier in fichiers: - nom_fichier = os.path.join( self.dossier, fichier[0] )[-LIMIT_NAME_MAX:] + nom_fichier = os.path.join( self.dossier, fichier[0] ) os.makedirs( os.path.dirname( nom_fichier ), exist_ok=True ) with open( nom_fichier, 'w' ) as f: contenu = fichier[1].strip() diff --git a/marcheolex/exports/UnArticleParFichierAvecHierarchie.py b/marcheolex/exports/UnArticleParFichierAvecHierarchie.py index 8447282..d76ea96 100644 --- a/marcheolex/exports/UnArticleParFichierAvecHierarchie.py +++ b/marcheolex/exports/UnArticleParFichierAvecHierarchie.py @@ -12,6 +12,12 @@ import os from . import Organisations +try: + # @WojtekCh https://stackoverflow.com/a/32812228/174027 + LIMIT_NAME_MAX = int(subprocess.check_output("getconf NAME_MAX /", shell=True)) +except: + LIMIT_NAME_MAX = 0 + class UnArticleParFichierAvecHierarchie( Organisations ): @@ -31,6 +37,9 @@ def __init__( self, extension ): """ self.extension = '.' + extension if extension else '' + self.limite_nom_section = None if LIMIT_NAME_MAX is 0 else LIMIT_NAME_MAX + self.limite_nom_article = max(LIMIT_NAME_MAX - len(self.extension) - 8, 0) + self.limite_nom_article = None if self.limite_nom_article is 0 else self.limite_nom_article def obtenir_nom_fichier( self, id, parents, num, titre ): @@ -50,11 +59,11 @@ def obtenir_nom_fichier( self, id, parents, num, titre ): """ if id[4:8] == 'ARTI': - chemin = os.path.dirname( os.path.join( *[parent[2] for parent in parents] ) ) + chemin = os.path.dirname( os.path.join( *[parent[2][:self.limite_nom_section] for parent in parents] ) ) if num: - return os.path.join( chemin, 'Article_' + num.replace(' ', '_') + self.extension ) + return os.path.join( chemin, 'Article_' + num.replace(' ', '_')[:self.limite_nom_article] + self.extension ) else: - return os.path.join( chemin, 'Article_' + id + self.extension ) + return os.path.join( chemin, 'Article_' + id[:self.limite_nom_article] + self.extension ) return None diff --git a/marcheolex/exports/UnArticleParFichierSansHierarchie.py b/marcheolex/exports/UnArticleParFichierSansHierarchie.py index ad0c7f9..28be04e 100644 --- a/marcheolex/exports/UnArticleParFichierSansHierarchie.py +++ b/marcheolex/exports/UnArticleParFichierSansHierarchie.py @@ -9,8 +9,15 @@ # the LICENSE file for more details. # Imports +import subprocess from . import Organisations +try: + # @WojtekCh https://stackoverflow.com/a/32812228/174027 + LIMIT_NAME_MAX = int(subprocess.check_output("getconf NAME_MAX /", shell=True)) +except: + LIMIT_NAME_MAX = 0 + class UnArticleParFichierSansHierarchie( Organisations ): @@ -30,6 +37,8 @@ def __init__( self, extension ): """ self.extension = '.' + extension if extension else '' + self.limite_nom_article = max(LIMIT_NAME_MAX - len(self.extension) - 8, 0) + self.limite_nom_article = None if self.limite_nom_article is 0 else self.limite_nom_article def obtenir_nom_fichier( self, id, parents, num, titre ): @@ -50,9 +59,9 @@ def obtenir_nom_fichier( self, id, parents, num, titre ): if id[4:8] == 'ARTI': if num: - return 'Article_' + num.replace(' ', '_') + self.extension + return 'Article_' + num.replace(' ', '_')[:self.limite_nom_article] + self.extension else: - return 'Article_' + id + self.extension + return 'Article_' + id[:self.limite_nom_article] + self.extension return None