Cleanup.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import os
  2. import logging
  3. from time import sleep
  4. from pathlib import Path
  5. from datetime import datetime
  6. from baangt.base.PathManagement import ManagedPaths
  7. from baangt.base.DownloadFolderMonitoring import DownloadFolderMonitoring
  8. from baangt.reports import Report
  9. logger = logging.getLogger("pyC")
  10. class Cleanup:
  11. def __init__(self, days: float = 31):
  12. self.managedPaths = ManagedPaths()
  13. self.threshold = days
  14. def clean_logs(self):
  15. logger.info(f"Removing logs older than {str(self.threshold)} days")
  16. logs_dir = self.managedPaths.getLogfilePath()
  17. files = Path(logs_dir).glob('**/*')
  18. removed = []
  19. for file in files:
  20. timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
  21. if timedelta.total_seconds()/86400 > self.threshold:
  22. try:
  23. os.remove(str(file))
  24. removed.append(file)
  25. except:
  26. logger.debug(f"Cannot remove {str(file)}")
  27. continue
  28. logger.debug(f"{str(file)} deleted")
  29. if len(removed) == 0:
  30. logger.info(f"No log file older than {str(self.threshold)} days found")
  31. else:
  32. logger.info(f"{str(len(removed))} Log file deleted")
  33. def clean_screenshots(self):
  34. logger.info(f"Removing screenshots older than {str(self.threshold)} days")
  35. ss_dir = self.managedPaths.getOrSetScreenshotsPath()
  36. files = Path(ss_dir).glob('**/*')
  37. removed = []
  38. for file in files:
  39. timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
  40. if timedelta.total_seconds()/86400 > self.threshold:
  41. try:
  42. os.remove(str(file))
  43. removed.append(file)
  44. except:
  45. logger.debug(f"Cannot remove {str(file)}")
  46. continue
  47. logger.debug(f"{str(file)} deleted")
  48. if len(removed) == 0:
  49. logger.info(f"No Screenshot older than {str(self.threshold)} days found")
  50. else:
  51. logger.info(f"{str(len(removed))} Screenshot deleted")
  52. def clean_downloads(self):
  53. logger.info(f"Removing downloads older than {str(self.threshold)} days")
  54. downloads_dir = self.managedPaths.getOrSetAttachmentDownloadPath()
  55. files = Path(downloads_dir).glob('**/*')
  56. removed = []
  57. for file in files:
  58. if file.is_file():
  59. timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
  60. if timedelta.total_seconds()/86400 > self.threshold:
  61. try:
  62. os.remove(str(file))
  63. removed.append(file)
  64. except:
  65. logger.debug(f"Cannot remove {str(file)}")
  66. continue
  67. logger.debug(f"{str(file)} deleted")
  68. if len(removed) == 0:
  69. logger.info(f"No downloads older than {str(self.threshold)} days found")
  70. else:
  71. logger.info(f"{str(len(removed))} downloads deleted")
  72. sleep(1)
  73. logger.info("Removing empty folders inside download folder.")
  74. files = Path(downloads_dir).glob('**/*')
  75. removed = []
  76. for file in files:
  77. if file.is_dir():
  78. if len(os.listdir(str(file))) == 0:
  79. try:
  80. os.rmdir(str(file))
  81. removed.append(file)
  82. except:
  83. logger.debug(f"Cannot remove folder {str(file)}")
  84. continue
  85. logger.debug(f"{str(file)} folder deleted")
  86. if len(removed) == 0:
  87. logger.info(f"No empty folder found inside downloads")
  88. else:
  89. logger.info(f"{str(len(removed))} empty folder deleted")
  90. def clean_reports(self):
  91. #
  92. # cleanup reports
  93. #
  94. logger.info(f"Removing reports older than {str(self.threshold)} days")
  95. reports_dir = self.managedPaths.getOrSetReportPath()
  96. files = Path(reports_dir).glob('**/*')
  97. removed = []
  98. for file in files:
  99. timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
  100. if timedelta.total_seconds()/86400 > self.threshold:
  101. try:
  102. os.remove(str(file))
  103. removed.append(file)
  104. except:
  105. logger.debug(f"Cannot remove {str(file)}")
  106. continue
  107. logger.debug(f"{str(file)} deleted")
  108. if len(removed) == 0:
  109. logger.info(f"No report older than {str(self.threshold)} days found")
  110. else:
  111. logger.info(f"{str(len(removed))} reports deleted")
  112. def clean_all(self):
  113. self.clean_logs()
  114. self.clean_screenshots()
  115. self.clean_downloads()
  116. self.clean_reports()