From 7f908157bf08a94e2a43864c7d4e725f348823ae Mon Sep 17 00:00:00 2001 From: Emanuele Date: Fri, 28 Nov 2025 11:48:29 +0100 Subject: [PATCH] Added git hash as version number --- cntmanage/docker/build.sh | 5 +++++ cntmanage/docker/docker-compose.yml | 2 ++ cntmanage/docker/entrypoint.sh | 2 +- cntmanage/docker/flightslot.Dockerfile | 13 +++++-------- cntmanage/flightslot/admin.py | 14 ++++++++++---- cntmanage/flightslot/admins/mission_adm.py | 2 +- 6 files changed, 24 insertions(+), 14 deletions(-) create mode 100755 cntmanage/docker/build.sh diff --git a/cntmanage/docker/build.sh b/cntmanage/docker/build.sh new file mode 100755 index 0000000..acd9c88 --- /dev/null +++ b/cntmanage/docker/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +GIT_HASH=$(git rev-parse --short HEAD) +echo "Building Flightslot version ${GIT_HASH}" +docker compose build --build-arg GIT_HASH=${GIT_HASH} diff --git a/cntmanage/docker/docker-compose.yml b/cntmanage/docker/docker-compose.yml index 6a1fd0b..2dc0d18 100644 --- a/cntmanage/docker/docker-compose.yml +++ b/cntmanage/docker/docker-compose.yml @@ -22,6 +22,8 @@ services: build: context: .. dockerfile: ./docker/flightslot.Dockerfile + args: + GIT_HASH: image: flightslot:latest container_name: tech-flightslot restart: unless-stopped diff --git a/cntmanage/docker/entrypoint.sh b/cntmanage/docker/entrypoint.sh index 8491eef..ff3a37f 100755 --- a/cntmanage/docker/entrypoint.sh +++ b/cntmanage/docker/entrypoint.sh @@ -23,5 +23,5 @@ else echo "👁️ Superuser ${DJANGO_SUPERUSER_USERNAME} created successfully ..." fi -echo "🚀 Launching Flightslot..." +echo "🚀 Launching Flightslot version ${VERSION} ..." exec "$@" diff --git a/cntmanage/docker/flightslot.Dockerfile b/cntmanage/docker/flightslot.Dockerfile index a5c3a90..7fea967 100644 --- a/cntmanage/docker/flightslot.Dockerfile +++ b/cntmanage/docker/flightslot.Dockerfile @@ -4,7 +4,6 @@ FROM python:3.12 AS builder # Install Poetry RUN curl -sSL https://install.python-poetry.org | python3 - ENV PATH="${PATH}:/root/.local/bin" -RUN env # Create build directory WORKDIR /build # Copy project files @@ -14,28 +13,26 @@ RUN poetry update --no-interaction --no-ansi # Build project RUN poetry build -### STAGE 2 — Final image +### STAGE 2 — Final image ### FROM python:3.12-slim AS deploy - +# Create app run directory WORKDIR /app - # Copy application custom static files RUN mkdir -p static COPY ./static/cantorair.jpg ./static COPY ./static/cantorair_blue.jpg ./static - # Copy application custom templates for admin page RUN mkdir -p /templates/admin COPY ./templates/admin/* ./templates/admin/ - # Copy and install application wheel package COPY --from=builder /build/dist/*.whl ./ RUN pip install --no-cache-dir *.whl RUN pip install gunicorn whitenoise - # Copy entryupoint bash script COPY ./docker/entrypoint.sh ./ +# Collect build number from build arg +ARG GIT_HASH +ENV VERSION=${GIT_HASH} ENTRYPOINT ["/app/entrypoint.sh"] - # Command to be executed after entry point CMD ["gunicorn", "cntmanage.wsgi:application", "--bind", "0.0.0.0:8000", "--timeout", "600"] diff --git a/cntmanage/flightslot/admin.py b/cntmanage/flightslot/admin.py index c42ebce..af1f613 100644 --- a/cntmanage/flightslot/admin.py +++ b/cntmanage/flightslot/admin.py @@ -15,6 +15,9 @@ from .admins.weekpref_adm import WeekPreferenceAdmin from django.contrib.admin import AdminSite +from os import environ + +# User website under /user/ URL class FlightSlotUserSite(AdminSite): site_header = "Flight Scheduler 🛫" site_title = "Flight Scheduler 🛫" @@ -28,13 +31,16 @@ class FlightSlotUserSite(AdminSite): return app_list +# Register only user visible models flightslot_user = FlightSlotUserSite(name="user_site") - -# registra SOLO i modelli autorizzati flightslot_user.register(WeekPreference, WeekPreferenceAdmin) -admin.site.site_header = "Flight Scheduler Admin 🛫" -admin.site.site_title = "Flight Scheduler Admin 🛫" + +# Get version for debug purposes +ver: str = environ.get("VERSION", "dev") +# Register all visible models +admin.site.site_header = f"Flight Scheduler Admin 🛫 - ver.{ver}" +admin.site.site_title = f"Flight Scheduler Admin 🛫 - ver.{ver}" admin.site.index_title = "Welcome to CantorAir Flight Scheduler Administrator Portal" admin.site.register(Aircraft, AircraftAdmin) diff --git a/cntmanage/flightslot/admins/mission_adm.py b/cntmanage/flightslot/admins/mission_adm.py index b707a7e..9932f43 100644 --- a/cntmanage/flightslot/admins/mission_adm.py +++ b/cntmanage/flightslot/admins/mission_adm.py @@ -1,4 +1,4 @@ -from django.forms import ModelChoiceField, TypedMultipleChoiceField, ModelMultipleChoiceField +from django.forms import ModelMultipleChoiceField from django.contrib import admin, messages from django.http import HttpRequest from django.db.models.query import QuerySet, Q