From 9a522349b48c23c23fd4af12391b8e12fb1dbb46 Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 17:58:39 +0100 Subject: [PATCH 1/6] added empty tests file --- win_venv/tests.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 win_venv/tests.py diff --git a/win_venv/tests.py b/win_venv/tests.py new file mode 100644 index 0000000..28c61d0 --- /dev/null +++ b/win_venv/tests.py @@ -0,0 +1 @@ +#tests From ffdb50f07f38acdbc570da01f0377d5184b86a11 Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 21:39:56 +0100 Subject: [PATCH 2/6] changed format of main window to class --- win_venv/main.py | 85 +++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/win_venv/main.py b/win_venv/main.py index d7aeaf8..1c8314f 100644 --- a/win_venv/main.py +++ b/win_venv/main.py @@ -15,6 +15,7 @@ def files(path): if os.path.isfile(os.path.join(path, file)): yield file + class LibraryTableButtons(QWidget): def __init__(self, parent=None): super(LibraryTableButtons,self).__init__(parent) @@ -28,7 +29,9 @@ class LibraryTableButtons(QWidget): self.setLayout(layout) + class LibraryTable(QTableWidget): + def __init__(self, parent=None): QTableWidget.__init__(self) self.setColumnCount(3) @@ -57,51 +60,51 @@ class LibraryTable(QTableWidget): if index.isValid(): print(index.row(), index.column()) - + +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + self.initUI() + + # Show raw uploaded files + def showLibrary(self): + libTable = LibraryTable() + self.setCentralWidget(libTable) + + def initUI(self): + self.setGeometry(0, 0, 600, 400) + self.setWindowTitle('VisionScore') + scriptDir = os.path.dirname(os.path.realpath(__file__)) + self.setWindowIcon(QIcon(scriptDir + os.path.sep + 'static/v_logo.jpg')) + + # Toolbar + menuBar = self.menuBar() + homeMenu = QMenu("&Home", self) + menuBar.addMenu(homeMenu) + homeMenu.addAction("Load new file") + + libraryAct = QAction('&Library', self) + libraryAct.triggered.connect(self.showLibrary) + menuBar.addAction(libraryAct) + + # Exit app + exitAct = QAction('&Exit', self) + exitAct.setShortcut('Ctrl+Q') + exitAct.setStatusTip('Exit') + exitAct.triggered.connect(qApp.quit) + homeMenu.addAction(exitAct) + + helpMenu = menuBar.addMenu("&Help") + + self.show() + + def main(): app = QApplication(sys.argv) - #w = QWidget() - w = QMainWindow() - w.setGeometry(0, 0, 600, 400) - w.setWindowTitle('VisionScore') - scriptDir = os.path.dirname(os.path.realpath(__file__)) - w.setWindowIcon(QIcon(scriptDir + os.path.sep + 'static/v_logo.jpg')) - - ''' - label = QLabel() - pixmap = QPixmap(scriptDir + os.path.sep + 'static/visionscore_logo.jpg') - label.setPixmap(pixmap) - label.resize(pixmap.width(), pixmap.height()) - label.setAlignment(QtCore.Qt.AlignTop) - w.setCentralWidget(label) - ''' - # Toolbar - menuBar = w.menuBar() - homeMenu = QMenu("&Home", w) - menuBar.addMenu(homeMenu) - homeMenu.addAction("Load new file") - - # Show raw uploaded files - def showLibrary(): - libTable = LibraryTable() - w.setCentralWidget(libTable) - - libraryAct = QAction('&Library', w) - libraryAct.triggered.connect(showLibrary) - menuBar.addAction(libraryAct) - - # Exit app - exitAct = QAction('&Exit', w) - exitAct.setShortcut('Ctrl+Q') - exitAct.setStatusTip('Exit') - exitAct.triggered.connect(app.quit) - homeMenu.addAction(exitAct) - - helpMenu = menuBar.addMenu("&Help") - - w.show() + w = MainWindow() sys.exit(app.exec_()) + if __name__ == '__main__': main() \ No newline at end of file From fcb6d5f2253635d379698a62088a5430ee00debb Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 22:42:37 +0100 Subject: [PATCH 3/6] fixed uploading file --- win_venv/main.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/win_venv/main.py b/win_venv/main.py index e8deb71..bd5895f 100644 --- a/win_venv/main.py +++ b/win_venv/main.py @@ -1,7 +1,9 @@ #import tkinter as tk import sys import os +import shutil from datetime import datetime +import time from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import QIcon, QPixmap @@ -16,6 +18,16 @@ def files(path): yield file +def save_input(oldpath): + # make timestampt the filename, so it wouln't overwrite + timestamp = str(int(time.time())) + filename = timestamp + '.' + oldpath.split('.')[-1] + newpath = filePath + '\\' + filename + print(oldpath) + print(newpath) + shutil.copy(oldpath, newpath) + + class LibraryTableButtons(QWidget): def __init__(self, filename, parent=None): super(LibraryTableButtons,self).__init__(parent) @@ -60,6 +72,7 @@ class LibraryTable(QTableWidget): class MainWindow(QMainWindow): + def __init__(self): super().__init__() self.initUI() @@ -69,6 +82,14 @@ class MainWindow(QMainWindow): libTable = LibraryTable() self.setCentralWidget(libTable) + def showUploadFile(self): + dialog = QFileDialog(self) + dialog.setFileMode(QFileDialog.AnyFile) + dialog.setFilter(QDir.Files) + if dialog.exec_(): + file_path = dialog.selectedFiles()[0] # ['C:/Users/agatha/Desktop/SYI/VisionScore/win_venv/requirements.txt'] + save_input(file_path) + def initUI(self): self.setGeometry(0, 0, 600, 400) self.setWindowTitle('VisionScore') @@ -79,7 +100,11 @@ class MainWindow(QMainWindow): menuBar = self.menuBar() homeMenu = QMenu("&Home", self) menuBar.addMenu(homeMenu) - homeMenu.addAction("Load new file") + + # Upload file + uploadAct = QAction('&Upload new file', self) + uploadAct.triggered.connect(self.showUploadFile) + homeMenu.addAction(uploadAct) libraryAct = QAction('&Library', self) libraryAct.triggered.connect(self.showLibrary) From 59fb733468e02aa1d5cb51ee4192d77c2cbf4e1c Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 23:10:17 +0100 Subject: [PATCH 4/6] added save_input unittest --- win_venv/main.py | 3 +-- win_venv/tests.py | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/win_venv/main.py b/win_venv/main.py index bd5895f..fce4d13 100644 --- a/win_venv/main.py +++ b/win_venv/main.py @@ -23,9 +23,8 @@ def save_input(oldpath): timestamp = str(int(time.time())) filename = timestamp + '.' + oldpath.split('.')[-1] newpath = filePath + '\\' + filename - print(oldpath) - print(newpath) shutil.copy(oldpath, newpath) + return newpath class LibraryTableButtons(QWidget): diff --git a/win_venv/tests.py b/win_venv/tests.py index 28c61d0..aa92acb 100644 --- a/win_venv/tests.py +++ b/win_venv/tests.py @@ -1 +1,26 @@ -#tests +import unittest +from main import * + +# test saving file +class savingFileTest(unittest.TestCase): + + def test_text_file(self): + print('Testing save_input method \n') + old_file_content = 'testing\n\n\nmore testing' + with open('test.txt', 'w') as file: + file.write(old_file_content) + + script_path = os.path.dirname(os.path.realpath(__file__)) + test_file_path = script_path + '\\test.txt' + newpath = save_input(test_file_path) + + new_file_content = '' + with open(newpath, 'r') as new_file: + for line in new_file: + new_file_content += line + + self.assertEqual(old_file_content, new_file_content) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From 21b49e425dd943c3b460219fcb47feec833267de Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 23:45:46 +0100 Subject: [PATCH 5/6] added 2nd test --- win_venv/tests.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/win_venv/tests.py b/win_venv/tests.py index aa92acb..937b23c 100644 --- a/win_venv/tests.py +++ b/win_venv/tests.py @@ -1,5 +1,7 @@ import unittest from main import * +from unittest.mock import Mock +from pathlib import Path # test saving file class savingFileTest(unittest.TestCase): @@ -21,6 +23,18 @@ class savingFileTest(unittest.TestCase): self.assertEqual(old_file_content, new_file_content) + +# test using mock checking if a file with analysis had been generated +class generetingOutputFile(unittest.TestCase): + def test_output_file(self): + + print('Moock testing outputfile') + m = Mock() + m.output_file_path = scriptPath + '\\files\\output\\test.pdf' + + assert Path(m.output_file_path).is_file() + + if __name__ == '__main__': unittest.main() \ No newline at end of file From 2c19e7f472f26a396e9279bb8ec9e302e8a96f16 Mon Sep 17 00:00:00 2001 From: Agata Date: Mon, 21 Dec 2020 23:47:55 +0100 Subject: [PATCH 6/6] added test output file --- win_venv/files/output/test.pdf | Bin 0 -> 28607 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 win_venv/files/output/test.pdf diff --git a/win_venv/files/output/test.pdf b/win_venv/files/output/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8d354c27e840cdffb8987f9afabd0fe4a1fa1c8 GIT binary patch literal 28607 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 literal 0 HcmV?d00001