diff --git a/epictrack-api/migrations/versions/8ef7aa13abdd_add_joint_complex_amendment_work.py b/epictrack-api/migrations/versions/8ef7aa13abdd_add_joint_complex_amendment_work.py new file mode 100644 index 000000000..958204ef5 --- /dev/null +++ b/epictrack-api/migrations/versions/8ef7aa13abdd_add_joint_complex_amendment_work.py @@ -0,0 +1,47 @@ +"""Add Joint Complex Amendment Work + +Revision ID: 8ef7aa13abdd +Revises: 6d65d9ec068b +Create Date: 2026-04-17 12:00:00.000000 +""" + +from alembic import op + + +# revision identifiers, used by Alembic. +revision = '8ef7aa13abdd' +down_revision = '6d65d9ec068b' +branch_labels = None +depends_on = None + + +def upgrade(): + op.execute(""" + INSERT INTO work_types ( + sort_order, + id, + name, + created_by, + created_at, + updated_by, + updated_at, + is_active, + is_deleted, + report_title + ) + VALUES ( + 15, + 16, + 'Joint Complex Amendment', + NULL, + NOW(), + NULL, + NULL, + TRUE, + FALSE, + 'Joint Complex Amendment' + ); + """) + +def downgrade(): + op.execute("DELETE FROM work_types WHERE name = 'Joint Complex Amendment'") \ No newline at end of file diff --git a/epictrack-api/requirements.txt b/epictrack-api/requirements.txt index 559969490..939588d41 100644 --- a/epictrack-api/requirements.txt +++ b/epictrack-api/requirements.txt @@ -1,17 +1,18 @@ -alembic==1.14.1 -aniso8601==10.0.0 -attrs==25.1.0 +alembic==1.18.4 +aniso8601==10.0.1 +attrs==26.1.0 cachelib==0.13.0 -certifi==2025.1.31 -cffi==1.17.1 -charset-normalizer==3.4.1 -click==8.1.8 -contourpy==1.3.1 -cryptography==44.0.2 +certifi==2026.2.25 +cffi==2.0.0 +charset-normalizer==3.4.7 +click==8.3.2 +contourpy==1.3.2 +cryptography==46.0.7 cycler==0.12.1 +defusedxml==0.7.1 dpath==2.2.0 et_xmlfile==2.0.0 -flake8-import-order==0.18.2 +flake8_import_order==0.19.2 Flask==2.2.5 Flask-Caching==2.3.1 flask-jwt-oidc==0.8.0 @@ -20,47 +21,48 @@ Flask-Migrate==4.1.0 Flask-Moment==1.0.6 flask-restx==1.1.0 Flask-SQLAlchemy==3.0.5 -fonttools==4.56.0 -greenlet==3.1.1 -gunicorn==23.0.0 -idna==3.10 +fonttools==4.62.1 +greenlet==3.4.0 +gunicorn==25.3.0 +idna==3.11 Inflector==3.1.1 itsdangerous==2.2.0 -Jinja2==3.1.5 -jsonschema==4.23.0 -jsonschema-specifications==2024.10.1 -kiwisolver==1.4.8 -Mako==1.3.9 -MarkupSafe==3.0.2 +Jinja2==3.1.6 +jsonschema==4.26.0 +jsonschema-specifications==2025.9.1 +kiwisolver==1.5.0 +Mako==1.3.11 +MarkupSafe==3.0.3 marshmallow==3.17.0 marshmallow-sqlalchemy==0.29.0 matplotlib==3.7.4 natsort==8.4.0 numpy==1.26.4 +odfpy==1.4.1 openpyxl==3.0.10 -packaging==24.2 +packaging==26.1 pandas==2.0.2 -pillow==11.1.0 -psycopg2-binary==2.9.10 -pycodestyle==2.12.1 -pycparser==2.22 -pyflakes==3.2.0 -PyJWT==2.10.1 -pyparsing==3.2.1 +pillow==12.2.0 +psycopg2-binary==2.9.11 +pycodestyle==2.14.0 +pycparser==3.0 +pyflakes==3.4.0 +PyJWT==2.12.1 +pyparsing==3.3.2 python-dateutil==2.8.2 -python-dotenv==1.0.1 -pytz==2025.1 -referencing==0.36.2 +python-dotenv==1.2.2 +pytz==2026.1.post1 +referencing==0.37.0 reportlab==3.6.12 -requests==2.32.3 -rpds-py==0.23.1 +requests==2.33.1 +rpds-py==0.30.0 six==1.17.0 SQLAlchemy==2.0.17 -SQLAlchemy-Utils==0.41.2 -tomli==2.2.1 -typing_extensions==4.12.2 -tzdata==2025.1 -urllib3==2.3.0 +SQLAlchemy-Utils==0.42.1 +tomli==2.4.1 +typing_extensions==4.15.0 +tzdata==2026.1 +urllib3==2.6.3 Werkzeug==2.3.6 XlsxWriter==3.0.6 -zimports==0.6.1 +zimports==0.6.3 diff --git a/epictrack-api/requirements/prod.txt b/epictrack-api/requirements/prod.txt index cfb9e9e75..fa5e83732 100644 --- a/epictrack-api/requirements/prod.txt +++ b/epictrack-api/requirements/prod.txt @@ -25,5 +25,6 @@ flask-marshmallow==0.15.0 marshmallow-sqlalchemy==0.29.0 pandas==2.0.2 openpyxl==3.0.10 +odfpy matplotlib==3.7.4 natsort==8.4.0 diff --git a/epictrack-api/src/api/models/work_type.py b/epictrack-api/src/api/models/work_type.py index 98313a591..bdace9f12 100644 --- a/epictrack-api/src/api/models/work_type.py +++ b/epictrack-api/src/api/models/work_type.py @@ -40,6 +40,7 @@ class WorkTypeEnum(enum.Enum): EAC_ORDER_CANCELLATION = 13 OTHER = 14 MATERIAL_ALTERATION = 15 + JOINT_COMPLEX_AMENDMENT = 16 class WorkType(db.Model, CodeTableVersioned): diff --git a/epictrack-api/src/api/templates/event_templates/joint_complex_amendment/001_Joint_Complex_Amendment.xlsx b/epictrack-api/src/api/templates/event_templates/joint_complex_amendment/001_Joint_Complex_Amendment.xlsx new file mode 100644 index 000000000..fcb16a767 Binary files /dev/null and b/epictrack-api/src/api/templates/event_templates/joint_complex_amendment/001_Joint_Complex_Amendment.xlsx differ