From bb3352ea4a1aa93d60522998cb44cea463a8d904 Mon Sep 17 00:00:00 2001 From: Scheianu Ionut Date: Wed, 10 Sep 2025 21:50:08 +0300 Subject: [PATCH] saved new files --- .../app/__pycache__/__init__.cpython-312.pyc | Bin 1226 -> 1337 bytes py_app/app/__pycache__/models.cpython-312.pyc | Bin 1059 -> 1059 bytes py_app/app/__pycache__/routes.cpython-312.pyc | Bin 15220 -> 24851 bytes .../app/__pycache__/warehouse.cpython-312.pyc | Bin 0 -> 6281 bytes .../create_warehouse_locations_table.py | 25 +++++++++++++ py_app/app/templates/main_page_warehouse.html | 34 ++++++++++++++++++ py_app/app/templates/store_articles.html | 6 ++++ py_app/app/templates/warehouse_reports.html | 6 ++++ 8 files changed, 71 insertions(+) create mode 100644 py_app/app/__pycache__/warehouse.cpython-312.pyc create mode 100644 py_app/app/db_create_scripts/create_warehouse_locations_table.py create mode 100644 py_app/app/templates/main_page_warehouse.html create mode 100644 py_app/app/templates/store_articles.html create mode 100644 py_app/app/templates/warehouse_reports.html diff --git a/py_app/app/__pycache__/__init__.cpython-312.pyc b/py_app/app/__pycache__/__init__.cpython-312.pyc index 22622166ffbb457ae12aec894f450c6f2515a6dc..7f35629234a42779f525f1c1f31b5c82a2a0f1dc 100644 GIT binary patch delta 406 zcmX@bxs!|cG%qg~0}!YmI+$^2BJWJbLlc*8jLK!NWnyHgVaO5$$)SQ8#uUyqT&tNN zqBvDCt!9L&C=r60kR>wNfKg=f21XINED4w(f==PK0dj!WN>4t=sL3b`B&8+`F&Q%Q zOm<<)F)RYvsmXMUDXHKVPkCZdYDRu(acX>0!7oOAO~zYXrA0aM1x2Z8nH9H~^YY6z z`6nM@QWM}xEGW<`$}cTREiU2)8Zh}ilRP8;WPWBtDdt0043pTEhSU delta 291 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°aDTTlfp1$p$RNjOEp%uNg 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 delta 3715 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 diff --git a/py_app/app/__pycache__/warehouse.cpython-312.pyc b/py_app/app/__pycache__/warehouse.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..563fc06b271ec6796963e14603e523c0c5e61ede GIT binary patch literal 6281 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 UB^+xzOvDiJ*twOsNN9rp4N+NL3jhEB literal 0 HcmV?d00001 diff --git a/py_app/app/db_create_scripts/create_warehouse_locations_table.py b/py_app/app/db_create_scripts/create_warehouse_locations_table.py new file mode 100644 index 0000000..37e6be5 --- /dev/null +++ b/py_app/app/db_create_scripts/create_warehouse_locations_table.py @@ -0,0 +1,25 @@ +import mariadb +from app.warehouse import get_db_connection +from flask import Flask +import os + +def create_warehouse_locations_table(): + conn = get_db_connection() + cursor = conn.cursor() + cursor.execute(''' + CREATE TABLE IF NOT EXISTS warehouse_locations ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + location_code VARCHAR(12) NOT NULL UNIQUE, + size INT, + description VARCHAR(250) + ) + ''') + conn.commit() + conn.close() + +if __name__ == "__main__": + instance_path = os.path.abspath("instance") + app = Flask(__name__, instance_path=instance_path) + with app.app_context(): + create_warehouse_locations_table() + print("warehouse_locations table created or already exists.") \ No newline at end of file diff --git a/py_app/app/templates/main_page_warehouse.html b/py_app/app/templates/main_page_warehouse.html new file mode 100644 index 0000000..56dcc6e --- /dev/null +++ b/py_app/app/templates/main_page_warehouse.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} + +{% block title %}Warehouse Module{% endblock %} + +{% block content %} +
+

Warehouse Module

+

This is the page for managing warehouse operations.

+ + +
+ +
+

Store Articles

+

Add or update articles in the warehouse inventory.

+ Go to Store Articles +
+ + +
+

Create Warehouse Locations

+

Define and manage storage locations in the warehouse.

+ Go to Locations +
+ + +
+

Warehouse Reports

+

View and export warehouse activity and inventory reports.

+ Go to Reports +
+
+
+{% endblock %} diff --git a/py_app/app/templates/store_articles.html b/py_app/app/templates/store_articles.html new file mode 100644 index 0000000..da0e7e7 --- /dev/null +++ b/py_app/app/templates/store_articles.html @@ -0,0 +1,6 @@ +{% extends "base.html" %} +{% block title %}Store Articles{% endblock %} +{% block content %} +

Store Articles

+

This is the Store Articles page for the warehouse module.

+{% endblock %} diff --git a/py_app/app/templates/warehouse_reports.html b/py_app/app/templates/warehouse_reports.html new file mode 100644 index 0000000..4cd5120 --- /dev/null +++ b/py_app/app/templates/warehouse_reports.html @@ -0,0 +1,6 @@ +{% extends "base.html" %} +{% block title %}Warehouse Reports{% endblock %} +{% block content %} +

Warehouse Reports

+

This is the Warehouse Reports page for the warehouse module.

+{% endblock %}