validation.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. '''
  2. @author: olivier.massot, sept. 2018
  3. '''
  4. import zipfile
  5. from path import Path, TempDir
  6. class ValidationReport():
  7. def __init__(self, title = ""):
  8. self.title = title
  9. self.errors = {}
  10. self.valid = True
  11. class BaseValidator():
  12. @classmethod
  13. def submit(cls, subject):
  14. """ prends un dossier ou une archive en entrée et vérifie son contenu """
  15. subject = Path(subject)
  16. if subject.isfile():
  17. with TempDir() as dirname:
  18. zip_ref = zipfile.ZipFile(subject, 'r')
  19. zip_ref.extractall(dirname)
  20. zip_ref.close()
  21. if Path(dirname / subject.stem).isdir(): # cas où l'archive contient un dossier qui lui-même contient les fichiers
  22. dirname /= subject.stem
  23. return cls._submit_folder(dirname)
  24. elif subject.isdir():
  25. return cls._submit_folder(subject)
  26. else:
  27. raise FileNotFoundError(f"Impossible de trouver le fichier ou répertoire: {subject}")
  28. @classmethod
  29. def _submit_folder(cls, folder):
  30. raise NotImplementedError()