Browse Source

integration PathManagement

aguryev 3 years ago
parent
commit
65cc05cfe8

+ 4 - 1
.gitignore

@@ -19,4 +19,7 @@ baangt_*.xlsx
 /venv3_6/
 /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")
-        reports_dir = Report.reports_dir()
-        files = Path(reports_dir).glob('*.html')
+        reports_dir = self.managedPaths.getOrSetReportPath()
+        files = Path(reports_dir).glob('**/*')
         removed = []
         for file in files:
             timedelta = datetime.now() - datetime.fromtimestamp(DownloadFolderMonitoring.creation_date(file))
@@ -122,3 +122,4 @@ class Cleanup:
         self.clean_logs()
         self.clean_screenshots()
         self.clean_downloads()
+        self.clean_reports()

+ 2 - 1
baangt/base/GlobalConstants.py

@@ -85,7 +85,8 @@ EXP_FIELDLIST = "Fieldlist"
 EXP_XLSX = "XLSX"
 EXP_CSV = "CSV"
 
-PATH_QUERIES = '2ResultQueries'
+PATH_REPORT = '3Reports'
+PATH_DB_EXPORT = '2DBResults'
 PATH_EXPORT = '1TestResults'
 PATH_IMPORT = '0TestInput'
 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.
     - 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.
-    - 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.
     - getOrSetIni: Will return path of directory where ini files are managed.
     """
@@ -42,6 +44,8 @@ class ManagedPaths(metaclass=Singleton):
         self.RootPath = ""
         self.ExportPath = ""
         self.ImportPath = ""
+        self.DBExportPath = ""
+        self.ReportPath = ""
         self.IniPath = ""
 
     def getLogfilePath(self):
@@ -200,6 +204,42 @@ class ManagedPaths(metaclass=Singleton):
         self.__makeAndCheckDir(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):
         """
 

+ 6 - 14
baangt/base/ResultsBrowser.py

@@ -2,12 +2,12 @@ from sqlalchemy import create_engine, desc, and_
 from sqlalchemy.orm import sessionmaker
 from baangt.base.DataBaseORM import DATABASE_URL, engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 from baangt.base.ExportResults.ExportResults import ExcelSheetHelperFunctions
+from baangt.base.PathManagement import ManagedPaths
 import baangt.base.GlobalConstants as GC
 import uuid
 from datetime import datetime
 from xlsxwriter import Workbook
 import logging
-import pathlib
 import os
 
 logger = logging.getLogger("pyC")
@@ -27,8 +27,8 @@ class ResultsBrowser:
         self.tag = None
         # set of stages
         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}')
 
     def __del__(self):
@@ -193,13 +193,9 @@ class ResultsBrowser:
         labelTestCase = 'Test Case'
         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
         # green background
@@ -313,7 +309,3 @@ class ResultsBrowser:
 
         return path_to_file
 
-        
-
-
-

+ 7 - 21
baangt/reports.py

@@ -3,6 +3,7 @@ from sqlalchemy.orm import sessionmaker
 from sqlalchemy import desc, and_
 from baangt.base.DataBaseORM import engine, TestrunLog, GlobalAttribute, TestCaseLog, TestCaseSequenceLog, TestCaseField
 import baangt.base.GlobalConstants as GC
+from baangt.base.PathManagement import ManagedPaths
 from jinja2 import Environment, FileSystemLoader
 import json
 import os
@@ -21,22 +22,13 @@ class Report:
 
 	def __init__(self):
 		self.created = datetime.now()
+		self.managedPaths = ManagedPaths()
 		self.generate();
 
 	@property
 	def path(self):
 		return ''
 
-	@classmethod
-	def reports_dir(self):
-		#
-		# path to report dir
-		#
-		return os.path.join(
-			os.path.dirname(__file__),
-			GC.REPORT_PATH,
-		)
-
 	def generate(self):
 		#
 		# report generator
@@ -57,7 +49,7 @@ class Report:
 		# 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)
 
 		return env.get_template(template_name)
@@ -316,11 +308,8 @@ class Dashboard(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):
@@ -460,11 +449,8 @@ class Summary(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):
 		#

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