Browse Source

integration PathManagement

aguryev 3 years ago
parent
commit
65cc05cfe8

+ 4 - 1
.gitignore

@@ -19,4 +19,7 @@ baangt_*.xlsx
 /venv3_6/
 /venv3_6/
 /tests/proxies.csv
 /tests/proxies.csv
 
 
-baangt/reports/*.html
+0TestInput
+1TestResults
+2DBResults
+3Reports

BIN
2ResultQueries/TestrunLogs_None_None_2020-06-10_2020-07-10.xlsx


BIN
2ResultQueries/TestrunLogs_RSantragAll.json_None_2020-06-10_None.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_HF_2020-06-10_2020-06-11.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_HF_2020-06-10_2020-07-11.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_HF_2020-06-11_2020-07-11.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_None_2020-06-10_2020-07-10.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_None_2020-06-10_None.xlsx


BIN
2ResultQueries/TestrunLogs_heartbeat.json_None_2020-06-11_2020-07-11.xlsx


+ 3 - 2
baangt/base/Cleanup.py

@@ -100,8 +100,8 @@ class Cleanup:
         #
         #
 
 
         logger.info(f"Removing reports older than {str(self.threshold)} days")
         logger.info(f"Removing reports older than {str(self.threshold)} days")
-        reports_dir = Report.reports_dir()
-        files = Path(reports_dir).glob('*.html')
+        reports_dir = self.managedPaths.getOrSetReportPath()
+        files = Path(reports_dir).glob('**/*')
         removed = []
         removed = []
         for file in files:
         for file in files:
             timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
             timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
@@ -122,3 +122,4 @@ class Cleanup:
         self.clean_logs()
         self.clean_logs()
         self.clean_screenshots()
         self.clean_screenshots()
         self.clean_downloads()
         self.clean_downloads()
+        self.clean_reports()

+ 2 - 1
baangt/base/GlobalConstants.py

@@ -85,7 +85,8 @@ EXP_FIELDLIST = "Fieldlist"
 EXP_XLSX = "XLSX"
 EXP_XLSX = "XLSX"
 EXP_CSV = "CSV"
 EXP_CSV = "CSV"
 
 
-PATH_QUERIES = '2ResultQueries'
+PATH_REPORT = '3Reports'
+PATH_DB_EXPORT = '2DBResults'
 PATH_EXPORT = '1TestResults'
 PATH_EXPORT = '1TestResults'
 PATH_IMPORT = '0TestInput'
 PATH_IMPORT = '0TestInput'
 PATH_SCREENSHOTS = 'Screenshots'
 PATH_SCREENSHOTS = 'Screenshots'

+ 43 - 3
baangt/base/PathManagement.py

@@ -25,9 +25,11 @@ class ManagedPaths(metaclass=Singleton):
     - getOrSetScreenshotsPath: Will return a path for Screenshots directory. You can also set path.
     - getOrSetScreenshotsPath: Will return a path for Screenshots directory. You can also set path.
     - getOrSetDownloadsPath: Will return a path for Download directory. You can also set path.
     - getOrSetDownloadsPath: Will return a path for Download directory. You can also set path.
     - getOrSetAttachmentDownloadPath: Will return a path for Attachment Download directory. You can also set path.
     - getOrSetAttachmentDownloadPath: Will return a path for Attachment Download directory. You can also set path.
-    - getOrSetDriverPath: Will return path were webdriver is located. You can also set path.
-    - getOrSetImportPath: Will return path were input files are located. You can also set path.
-    - getOrSetExportPath: Will return path were files will be save. You can also set path.
+    - getOrSetDriverPath: Will return path where webdriver is located. You can also set path.
+    - getOrSetImportPath: Will return path where input files are located. You can also set path.
+    - getOrSetExportPath: Will return path where files will be save. You can also set path.
+    - getOrSetDBExportPath: Will return path where DB query outputs should be saved. You can also set path.
+    - getOrSetReportPath: Will return path where reports should be saved. You can also set path.
     - getOrSetRootPath: Will return root directory path. You can also set path.
     - getOrSetRootPath: Will return root directory path. You can also set path.
     - getOrSetIni: Will return path of directory where ini files are managed.
     - getOrSetIni: Will return path of directory where ini files are managed.
     """
     """
@@ -42,6 +44,8 @@ class ManagedPaths(metaclass=Singleton):
         self.RootPath = ""
         self.RootPath = ""
         self.ExportPath = ""
         self.ExportPath = ""
         self.ImportPath = ""
         self.ImportPath = ""
+        self.DBExportPath = ""
+        self.ReportPath = ""
         self.IniPath = ""
         self.IniPath = ""
 
 
     def getLogfilePath(self):
     def getLogfilePath(self):
@@ -200,6 +204,42 @@ class ManagedPaths(metaclass=Singleton):
         self.__makeAndCheckDir(self.ImportPath)
         self.__makeAndCheckDir(self.ImportPath)
         return self.ImportPath
         return self.ImportPath
 
 
+    def getOrSetDBExportPath(self, path=None):
+        """
+        Will return path where DB queriy outputs should be saved.
+
+        :param path: Path to be set for DB exports.
+        :return: DB Export path
+        """
+        if self.DBExportPath != "":
+            return self.DBExportPath
+
+        if path:
+            self.DBExportPath = path
+        else:
+            self.DBExportPath = self.__combineBasePathWithObjectPath(GC.PATH_DB_EXPORT)
+
+        self.__makeAndCheckDir(self.DBExportPath)
+        return self.DBExportPath
+
+    def getOrSetReportPath(self, path=None):
+        """
+        Will return path where reports should be saved.
+
+        :param path: Path to be set for reports.
+        :return: Report path
+        """
+        if self.ReportPath != "":
+            return self.ReportPath
+
+        if path:
+            self.ReportPath = path
+        else:
+            self.ReportPath = self.__combineBasePathWithObjectPath(GC.PATH_REPORT)
+
+        self.__makeAndCheckDir(self.ReportPath)
+        return self.ReportPath
+
     def __combineBasePathWithObjectPath(self, objectPath: str):
     def __combineBasePathWithObjectPath(self, objectPath: str):
         """
         """
 
 

+ 6 - 14
baangt/base/ResultsBrowser.py

@@ -2,12 +2,12 @@ from sqlalchemy import create_engine, desc, and_
 from sqlalchemy.orm import sessionmaker
 from sqlalchemy.orm import sessionmaker
 from baangt.base.DataBaseORM import DATABASE_URL, engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 from baangt.base.DataBaseORM import DATABASE_URL, engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 from baangt.base.ExportResults.ExportResults import ExcelSheetHelperFunctions
 from baangt.base.ExportResults.ExportResults import ExcelSheetHelperFunctions
+from baangt.base.PathManagement import ManagedPaths
 import baangt.base.GlobalConstants as GC
 import baangt.base.GlobalConstants as GC
 import uuid
 import uuid
 from datetime import datetime
 from datetime import datetime
 from xlsxwriter import Workbook
 from xlsxwriter import Workbook
 import logging
 import logging
-import pathlib
 import os
 import os
 
 
 logger = logging.getLogger("pyC")
 logger = logging.getLogger("pyC")
@@ -27,8 +27,8 @@ class ResultsBrowser:
         self.tag = None
         self.tag = None
         # set of stages
         # set of stages
         self.stages = None
         self.stages = None
-        # create export folder
-        pathlib.Path(GC.PATH_QUERIES).mkdir(parents=True, exist_ok=True)
+        # path management
+        self.managedPaths = ManagedPaths()
         logger.info(f'Initiated with DATABASE_URL: {db_url if db_url else DATABASE_URL}')
         logger.info(f'Initiated with DATABASE_URL: {db_url if db_url else DATABASE_URL}')
 
 
     def __del__(self):
     def __del__(self):
@@ -193,13 +193,9 @@ class ResultsBrowser:
         labelTestCase = 'Test Case'
         labelTestCase = 'Test Case'
         labelAvgDuration = 'Avg. Duration'
         labelAvgDuration = 'Avg. Duration'
 
 
-        path_to_file = os.path.join(
-            os.getcwd(),
-            GC.PATH_QUERIES,
-            f'TestrunLogs_{"_".join(list(map(str, self.tag.values())))}.xlsx',
-        )
-        #print(path_to_file)
-        workbook = Workbook(path_to_file)
+        # initialize workbook
+        path_to_file = self.managedPaths.getOrSetDBExportPath().joinpath(f'TestrunLogs_{"_".join(list(map(str, self.tag.values())))}.xlsx')
+        workbook = Workbook(str(path_to_file))
         
         
         # define cell formats
         # define cell formats
         # green background
         # green background
@@ -313,7 +309,3 @@ class ResultsBrowser:
 
 
         return path_to_file
         return path_to_file
 
 
-        
-
-
-

+ 7 - 21
baangt/reports.py

@@ -3,6 +3,7 @@ from sqlalchemy.orm import sessionmaker
 from sqlalchemy import desc, and_
 from sqlalchemy import desc, and_
 from baangt.base.DataBaseORM import engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 from baangt.base.DataBaseORM import engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 import baangt.base.GlobalConstants as GC
 import baangt.base.GlobalConstants as GC
+from baangt.base.PathManagement import ManagedPaths
 from jinja2 import Environment, FileSystemLoader
 from jinja2 import Environment, FileSystemLoader
 import json
 import json
 import os
 import os
@@ -21,22 +22,13 @@ class Report:
 
 
 	def __init__(self):
 	def __init__(self):
 		self.created = datetime.now()
 		self.created = datetime.now()
+		self.managedPaths = ManagedPaths()
 		self.generate();
 		self.generate();
 
 
 	@property
 	@property
 	def path(self):
 	def path(self):
 		return ''
 		return ''
 
 
-	@classmethod
-	def reports_dir(self):
-		#
-		# path to report dir
-		#
-		return os.path.join(
-			os.path.dirname(__file__),
-			GC.REPORT_PATH,
-		)
-
 	def generate(self):
 	def generate(self):
 		#
 		#
 		# report generator
 		# report generator
@@ -57,7 +49,7 @@ class Report:
 		# returns jinja2 template
 		# returns jinja2 template
 		#
 		#
 
 
-		file_loader = FileSystemLoader(os.path.join(os.path.dirname(__file__), GC.REPORT_PATH, template_dir))
+		file_loader = FileSystemLoader(os.path.join(os.path.dirname(__file__), template_dir))
 		env = Environment(loader=file_loader)
 		env = Environment(loader=file_loader)
 
 
 		return env.get_template(template_name)
 		return env.get_template(template_name)
@@ -316,11 +308,8 @@ class Dashboard(Report):
 		#
 		#
 		# path to report
 		# path to report
 		#
 		#
-		return os.path.join(
-			os.path.dirname(__file__),
-			GC.REPORT_PATH,
-			self.created.strftime('dashboard-%Y%m%d-%H%M%S.html'),
-		)
+
+		return self.managedPaths.getOrSetReportPath().joinpath(self.created.strftime('dashboard-%Y%m%d-%H%M%S.html'))
 
 
 
 
 	def generate(self):
 	def generate(self):
@@ -460,11 +449,8 @@ class Summary(Report):
 		#
 		#
 		# path to report
 		# path to report
 		#
 		#
-		return os.path.join(
-			os.path.dirname(__file__),
-			GC.REPORT_PATH,
-			self.created.strftime('summary-%Y%m%d-%H%M%S.html'),
-		)
+
+		return self.managedPaths.getOrSetReportPath().joinpath(self.created.strftime('summary-%Y%m%d-%H%M%S.html'))
 
 
 	def generate(self):
 	def generate(self):
 		#
 		#

baangt/reports/templates/base.html → baangt/templates/base.html


baangt/reports/templates/dashboard.html → baangt/templates/dashboard.html


baangt/reports/templates/summary.html → baangt/templates/summary.html