Restructuration + init test system
This commit is contained in:
parent
a3dd6698fc
commit
6b26b89c69
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"todo-tree.tree.showBadges": true,
|
|
||||||
"todo-tree.tree.showCountsInTree": true
|
|
||||||
}
|
|
@ -21,7 +21,9 @@ To start, find the script to use or to add to your code [here](model/WebPicDownl
|
|||||||
To use the script check the following prerequisites.
|
To use the script check the following prerequisites.
|
||||||
|
|
||||||
* Python `>= 3.10.6` ;
|
* Python `>= 3.10.6` ;
|
||||||
|
* beautifulsoup4 `>= 4.11.1` ;
|
||||||
* bs4 (BeautifulSoup) `>= 0.0.1` ;
|
* bs4 (BeautifulSoup) `>= 0.0.1` ;
|
||||||
|
* urllib3 `>= 1.26.12` ;
|
||||||
|
|
||||||
### Console Use ?
|
### Console Use ?
|
||||||
|
|
||||||
|
@ -3,9 +3,8 @@ import pyinstaller_versionfile
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pyinstaller_versionfile.create_versionfile_from_input_file(
|
pyinstaller_versionfile.create_versionfile_from_input_file(
|
||||||
output_file="versionfile.txt",
|
output_file="app_version_file.txt",
|
||||||
input_file="metadata.yml",
|
input_file="app_metadata.yml"
|
||||||
#version="1.2.3.4" # optional, can be set to overwrite version information (equivalent to --version when using the CLI)
|
|
||||||
)
|
)
|
||||||
apte.__name__ = '__main__'
|
apte.__name__ = '__main__'
|
||||||
apte.run()
|
apte.run()
|
19
main.py
19
main.py
@ -1,13 +1,14 @@
|
|||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
from controller.HomeController import HomeController
|
from webpicdownloader.model.WebPicDownloader import WebPicDownloader
|
||||||
from controller.InfoController import InfoController
|
from webpicdownloader.controller.HomeController import HomeController
|
||||||
from controller.MainController import MainController
|
from webpicdownloader.controller.InfoController import InfoController
|
||||||
from controller.Frames import Frames
|
from webpicdownloader.controller.MainController import MainController
|
||||||
from model.WebPicDownloader import WebPicDownloader
|
from webpicdownloader.controller.Frames import Frames
|
||||||
from view.HomeView import HomeView
|
from webpicdownloader.view.HomeView import HomeView
|
||||||
from view.InfoView import InfoView
|
from webpicdownloader.view.InfoView import InfoView
|
||||||
from view.MainWindow import MainWindow
|
from webpicdownloader.view.MainWindow import MainWindow
|
||||||
|
|
||||||
|
|
||||||
def get_sys_directory() -> str:
|
def get_sys_directory() -> str:
|
||||||
@ -29,7 +30,9 @@ def get_config() -> dict:
|
|||||||
'app_folder': os.getcwd(),
|
'app_folder': os.getcwd(),
|
||||||
'app_version': '1.0.0', # This version must match with the version.txt at root
|
'app_version': '1.0.0', # This version must match with the version.txt at root
|
||||||
'app_version_date': '2022-09-05',
|
'app_version_date': '2022-09-05',
|
||||||
|
'app_version_source': 'https://git.endmove.eu/EndMove/WebPicDownloader/src/branch/dev/version.txt',
|
||||||
|
|
||||||
|
'sys_version_matcher': re.compile(r'^(\d{1,2}\.)(\d{1,2}\.)(\d{1,2})$'),
|
||||||
'sys_directory': get_sys_directory(),
|
'sys_directory': get_sys_directory(),
|
||||||
|
|
||||||
'about_title': 'About WebPicDownloader',
|
'about_title': 'About WebPicDownloader',
|
||||||
|
4
run_tests.py
Normal file
4
run_tests.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import unittest
|
||||||
|
loader = unittest.TestLoader()
|
||||||
|
runner = unittest.TextTestRunner()
|
||||||
|
runner.run(loader.discover('./test/'))
|
0
test/__init__.py
Normal file
0
test/__init__.py
Normal file
11
test/test_update_module.py
Normal file
11
test/test_update_module.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import unittest
|
||||||
|
|
||||||
|
|
||||||
|
class TestUpdateModule(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_lol(self):
|
||||||
|
self.assertTrue(True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
@ -1,54 +0,0 @@
|
|||||||
import threading
|
|
||||||
|
|
||||||
|
|
||||||
class AsyncTask(threading.Thread):
|
|
||||||
"""
|
|
||||||
AsyncTask
|
|
||||||
|
|
||||||
AsyncTask is a utility class allowing to execute a task asynchronously in a thread.
|
|
||||||
For more informations read the constructor documentation.
|
|
||||||
|
|
||||||
@author Jérémi Nihart / EndMove
|
|
||||||
@link https://git.endmove.eu/EndMove/WebPicDownloader
|
|
||||||
@version 1.0.1
|
|
||||||
@since 2022-09-04
|
|
||||||
"""
|
|
||||||
# Variables
|
|
||||||
__run_callback = None
|
|
||||||
__run_args: list = None
|
|
||||||
__quite_callback = None
|
|
||||||
__quite_args = None
|
|
||||||
|
|
||||||
# Constructor
|
|
||||||
def __init__(self, rcallback, rargs=None, qcallback=None, qargs=None) -> None:
|
|
||||||
"""
|
|
||||||
Constructor
|
|
||||||
=> Indicate in the constructors, the parameters for launching the process, as
|
|
||||||
well as the stop otpions. Then use the function {AsyncTask.start()} to start
|
|
||||||
the thread and the processing.
|
|
||||||
[!]: The function {AsyncTask.run()} is reserved for the thread and should not be run
|
|
||||||
from outside.
|
|
||||||
|
|
||||||
* :rcallback: -> Asynchronous start function.
|
|
||||||
* :rargs: -> Arguments for the asyncrone startup function.
|
|
||||||
* :qcallback: -> Stop function to stop asynchronous processing.
|
|
||||||
* :qargs: -> Argument for the stop function.
|
|
||||||
"""
|
|
||||||
super().__init__()
|
|
||||||
self.__run_callback = rcallback
|
|
||||||
self.__run_args = rargs if rargs else ()
|
|
||||||
self.__quite_callback = qcallback if qcallback else lambda: print("exiting thread")
|
|
||||||
self.__quite_args = qargs if qargs else ()
|
|
||||||
|
|
||||||
def run(self) -> None:
|
|
||||||
"""
|
|
||||||
[Internal function of (threading.Thread)]
|
|
||||||
[!] : This function must not be used! Start the task with {AsyncTask.start()} !
|
|
||||||
"""
|
|
||||||
self.__run_callback(*self.__run_args)
|
|
||||||
|
|
||||||
def stop(self) -> None:
|
|
||||||
"""
|
|
||||||
Stop the running task, make sure you have previously defined the stop function.
|
|
||||||
"""
|
|
||||||
self.__quite_callback(*self.__quite_args)
|
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 264 KiB |
@ -1,5 +1,5 @@
|
|||||||
from controller.MainController import MainController
|
from webpicdownloader.controller.MainController import MainController
|
||||||
from model.WebPicDownloader import MessageType, WebPicDownloader
|
from webpicdownloader.model.WebPicDownloader import MessageType, WebPicDownloader
|
||||||
|
|
||||||
|
|
||||||
class HomeController:
|
class HomeController:
|
@ -1,5 +1,5 @@
|
|||||||
from controller.Frames import Frames
|
from webpicdownloader.controller.Frames import Frames
|
||||||
from controller.MainController import MainController
|
from webpicdownloader.controller.MainController import MainController
|
||||||
|
|
||||||
|
|
||||||
class InfoController:
|
class InfoController:
|
@ -1,5 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
from controller.Frames import Frames
|
from webpicdownloader.controller.Frames import Frames
|
||||||
|
|
||||||
|
|
||||||
class MainController:
|
class MainController:
|
17
webpicdownloader/util/UpdateModule.py
Normal file
17
webpicdownloader/util/UpdateModule.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
from http.client import HTTPException
|
||||||
|
import re
|
||||||
|
from urllib import request as http
|
||||||
|
|
||||||
|
|
||||||
|
def fetch_version(headers: str, url: str) -> str:
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
request = http.Request(url=url, headers=headers, method='GET')
|
||||||
|
response = http.urlopen(request)
|
||||||
|
if response.getcode() != 200:
|
||||||
|
raise HTTPException("Bad response returned by server")
|
||||||
|
return response.read().decode('utf-8')
|
||||||
|
|
@ -2,8 +2,8 @@ import tkinter as tk
|
|||||||
import tkinter.font as tfont
|
import tkinter.font as tfont
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
from tkinter import scrolledtext as tst
|
from tkinter import scrolledtext as tst
|
||||||
from controller.HomeController import HomeController
|
from webpicdownloader.controller.HomeController import HomeController
|
||||||
from view.MainWindow import MainWindow
|
from webpicdownloader.view.MainWindow import MainWindow
|
||||||
|
|
||||||
|
|
||||||
class HomeView(ttk.Frame):
|
class HomeView(ttk.Frame):
|
@ -1,9 +1,9 @@
|
|||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import font
|
from tkinter import font
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
from controller.Frames import Frames
|
from webpicdownloader.controller.Frames import Frames
|
||||||
from controller.InfoController import InfoController
|
from webpicdownloader.controller.InfoController import InfoController
|
||||||
from view.MainWindow import MainWindow
|
from webpicdownloader.view.MainWindow import MainWindow
|
||||||
|
|
||||||
|
|
||||||
class InfoView(ttk.Frame):
|
class InfoView(ttk.Frame):
|
@ -1,7 +1,7 @@
|
|||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
from controller.Frames import Frames
|
from webpicdownloader.controller.Frames import Frames
|
||||||
from controller.MainController import MainController
|
from webpicdownloader.controller.MainController import MainController
|
||||||
|
|
||||||
|
|
||||||
class MainWindow(tk.Tk):
|
class MainWindow(tk.Tk):
|
||||||
@ -48,7 +48,7 @@ class MainWindow(tk.Tk):
|
|||||||
[internal function]
|
[internal function]
|
||||||
=> Initialize window parameters
|
=> Initialize window parameters
|
||||||
"""
|
"""
|
||||||
self.iconbitmap(f"{self.__controller.get_config('sys_directory')}\\assets\logo.ico") # App logo
|
self.iconbitmap(f"{self.__controller.get_config('sys_directory')}\\webpicdownloader\\assets\\logo.ico") # App logo
|
||||||
window_width = 430 # App width
|
window_width = 430 # App width
|
||||||
window_height = 305 # App height
|
window_height = 305 # App height
|
||||||
x_cordinate = int((self.winfo_screenwidth()/2) - (window_width/2))
|
x_cordinate = int((self.winfo_screenwidth()/2) - (window_width/2))
|
Reference in New Issue
Block a user