Compare commits
	
		
			5 Commits
		
	
	
		
			88425198ed
			...
			8588eda3ce
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8588eda3ce | |||
| 87893febac | |||
| 48cfa5fee6 | |||
| 46e67e1edf | |||
| 4d7151b513 | 
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							@ -26,3 +26,14 @@ In addition to these criteria, there are the following extras:
 | 
				
			|||||||
	- All test cases are in `PDF` format
 | 
						- All test cases are in `PDF` format
 | 
				
			||||||
	- 1 Test case is for running the app including importing database structure
 | 
						- 1 Test case is for running the app including importing database structure
 | 
				
			||||||
	- 2 Test cases are for testing the app itself and all possible errors and edge cases and configurability
 | 
						- 2 Test cases are for testing the app itself and all possible errors and edge cases and configurability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Solution
 | 
				
			||||||
 | 
					My solution will use the following tech stack:
 | 
				
			||||||
 | 
					1. **Python** language
 | 
				
			||||||
 | 
					2. **MySQL** for database
 | 
				
			||||||
 | 
					3. **PySide6** for user interface made in Qt
 | 
				
			||||||
 | 
					4. **SqlAlchemy** for database management
 | 
				
			||||||
 | 
					5. **`python-dotenv`** for configurability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The problem in question will be demonstrated on a library application
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								db/Model.mwb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								db/Model.mwb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					greenlet==3.1.1
 | 
				
			||||||
 | 
					mypy==1.14.1
 | 
				
			||||||
 | 
					mypy-extensions==1.0.0
 | 
				
			||||||
 | 
					PySide6==6.8.1
 | 
				
			||||||
 | 
					PySide6_Addons==6.8.1
 | 
				
			||||||
 | 
					PySide6_Essentials==6.8.1
 | 
				
			||||||
 | 
					python-dotenv==1.0.1
 | 
				
			||||||
 | 
					shiboken2==5.13.2
 | 
				
			||||||
 | 
					shiboken6==6.8.1
 | 
				
			||||||
 | 
					sqlalchemy-stubs==0.4
 | 
				
			||||||
 | 
					typing_extensions==4.12.2
 | 
				
			||||||
							
								
								
									
										0
									
								
								src/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										14
									
								
								src/app.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/app.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import sys
 | 
				
			||||||
 | 
					from PySide6.QtGui import QGuiApplication
 | 
				
			||||||
 | 
					from PySide6.QtQml import QQmlApplicationEngine
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    app = QGuiApplication(sys.argv)
 | 
				
			||||||
 | 
					    engine = QQmlApplicationEngine()
 | 
				
			||||||
 | 
					    engine.addImportPath(sys.path[0])
 | 
				
			||||||
 | 
					    engine.loadFromModule("ui", "Main")
 | 
				
			||||||
 | 
					    if not engine.rootObjects():
 | 
				
			||||||
 | 
					        sys.exit(-1)
 | 
				
			||||||
 | 
					    exit_code = app.exec()
 | 
				
			||||||
 | 
					    del engine
 | 
				
			||||||
 | 
					    sys.exit(exit_code)
 | 
				
			||||||
							
								
								
									
										0
									
								
								src/models/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/models/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										12
									
								
								src/models/author.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/models/author.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					from sqlalchemy import Column, Integer, VARCHAR
 | 
				
			||||||
 | 
					from sqlalchemy.orm import relationship
 | 
				
			||||||
 | 
					from sqlalchemy.ext.declarative import declarative_base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Base = declarative_base()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Author(Base):
 | 
				
			||||||
 | 
					    __tablename__ = "author"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    id = Column(Integer, primary_key=True)
 | 
				
			||||||
 | 
					    first_name = Column(VARCHAR(length=50))
 | 
				
			||||||
 | 
					    last_name = Column(VARCHAR(length=50))
 | 
				
			||||||
							
								
								
									
										32
									
								
								src/ui/Main.qml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/ui/Main.qml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					import QtQuick
 | 
				
			||||||
 | 
					import QtQuick.Controls
 | 
				
			||||||
 | 
					import QtQuick.Layouts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Window {
 | 
				
			||||||
 | 
					    width: 300
 | 
				
			||||||
 | 
					    height: 200
 | 
				
			||||||
 | 
					    visible: true
 | 
				
			||||||
 | 
					    title: "Hello World"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    readonly property list<string> texts: ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function setText() {
 | 
				
			||||||
 | 
					        var i = Math.round(Math.random() * 3);
 | 
				
			||||||
 | 
					        text.text = texts[i];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ColumnLayout {
 | 
				
			||||||
 | 
					        anchors.fill: parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Text {
 | 
				
			||||||
 | 
					            id: text
 | 
				
			||||||
 | 
					            text: "Hello World"
 | 
				
			||||||
 | 
					            Layout.alignment: Qt.AlignHCenter
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Button {
 | 
				
			||||||
 | 
					            text: "Click me"
 | 
				
			||||||
 | 
					            Layout.alignment: Qt.AlignHCenter
 | 
				
			||||||
 | 
					            onClicked: setText()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								src/ui/qmldir
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/ui/qmldir
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					module Example
 | 
				
			||||||
 | 
					Main 254.0 Main.qml
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user