From 016ffbb1a9d8726aff0478002eca15e4c8b88216 Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 10:49:01 +0100 Subject: [PATCH 1/6] remove redis for website redircet --- django_code/apps/website_redirection/admin.py | 10 +++++-- ...0004_rename_redirectdata_historicaldata.py | 17 +++++++++++ .../0005_alter_historicaldata_seendate.py | 18 ++++++++++++ .../0006_alter_historicaldata_table.py | 17 +++++++++++ .../migrations/0007_redirectdata.py | 24 ++++++++++++++++ .../apps/website_redirection/models.py | 10 +++++-- django_code/apps/website_redirection/utils.py | 18 ++++++------ django_code/apps/website_redirection/views.py | 28 ++++++++----------- django_code/core/urls.py | 2 +- 9 files changed, 114 insertions(+), 30 deletions(-) create mode 100644 django_code/apps/website_redirection/migrations/0004_rename_redirectdata_historicaldata.py create mode 100644 django_code/apps/website_redirection/migrations/0005_alter_historicaldata_seendate.py create mode 100644 django_code/apps/website_redirection/migrations/0006_alter_historicaldata_table.py create mode 100644 django_code/apps/website_redirection/migrations/0007_redirectdata.py diff --git a/django_code/apps/website_redirection/admin.py b/django_code/apps/website_redirection/admin.py index 5b99b4f..b3172de 100644 --- a/django_code/apps/website_redirection/admin.py +++ b/django_code/apps/website_redirection/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import redirectData +from .models import historicalData,redirectData from .utils import redirect_method from import_export.admin import ImportExportModelAdmin @@ -19,7 +19,13 @@ def re_redirect(modeladmin, request, queryset): output_generated ) +@admin.register(historicalData) +class historicalAdmin(ImportExportModelAdmin): + list_display = [field.name for field in historicalData._meta.fields if field.name != 'id'] + actions = [re_redirect] + + @admin.register(redirectData) class redirectAdmin(ImportExportModelAdmin): list_display = [field.name for field in redirectData._meta.fields if field.name != 'id'] - actions = [re_redirect] \ No newline at end of file + \ No newline at end of file diff --git a/django_code/apps/website_redirection/migrations/0004_rename_redirectdata_historicaldata.py b/django_code/apps/website_redirection/migrations/0004_rename_redirectdata_historicaldata.py new file mode 100644 index 0000000..88077b5 --- /dev/null +++ b/django_code/apps/website_redirection/migrations/0004_rename_redirectdata_historicaldata.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.30 on 2026-07-28 09:11 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('redirect', '0003_redirectdata_key'), + ] + + operations = [ + migrations.RenameModel( + old_name='redirectData', + new_name='historicalData', + ), + ] diff --git a/django_code/apps/website_redirection/migrations/0005_alter_historicaldata_seendate.py b/django_code/apps/website_redirection/migrations/0005_alter_historicaldata_seendate.py new file mode 100644 index 0000000..dbee48f --- /dev/null +++ b/django_code/apps/website_redirection/migrations/0005_alter_historicaldata_seendate.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.30 on 2026-07-28 09:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('redirect', '0004_rename_redirectdata_historicaldata'), + ] + + operations = [ + migrations.AlterField( + model_name='historicaldata', + name='seenDate', + field=models.DateField(blank=True, null=True, verbose_name='Seen'), + ), + ] diff --git a/django_code/apps/website_redirection/migrations/0006_alter_historicaldata_table.py b/django_code/apps/website_redirection/migrations/0006_alter_historicaldata_table.py new file mode 100644 index 0000000..d7a1fc5 --- /dev/null +++ b/django_code/apps/website_redirection/migrations/0006_alter_historicaldata_table.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.30 on 2026-07-28 09:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('redirect', '0005_alter_historicaldata_seendate'), + ] + + operations = [ + migrations.AlterModelTable( + name='historicaldata', + table='historical', + ), + ] diff --git a/django_code/apps/website_redirection/migrations/0007_redirectdata.py b/django_code/apps/website_redirection/migrations/0007_redirectdata.py new file mode 100644 index 0000000..6a6ee83 --- /dev/null +++ b/django_code/apps/website_redirection/migrations/0007_redirectdata.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.30 on 2026-07-28 09:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('redirect', '0006_alter_historicaldata_table'), + ] + + operations = [ + migrations.CreateModel( + name='redirectData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(default='streaming', max_length=1000)), + ('url', models.CharField(max_length=1000)), + ], + options={ + 'db_table': 'redirect', + }, + ), + ] diff --git a/django_code/apps/website_redirection/models.py b/django_code/apps/website_redirection/models.py index b441355..3aa5857 100644 --- a/django_code/apps/website_redirection/models.py +++ b/django_code/apps/website_redirection/models.py @@ -1,10 +1,16 @@ from django.db import models -class redirectData(models.Model): +class historicalData(models.Model): url = models.CharField(max_length=1000) key = models.CharField(max_length=1000,default="streaming") addedDate = models.DateField('Published', blank=True, null=True, auto_now_add=True) - seenDate = models.DateField('Published', blank=True, null=True) + seenDate = models.DateField('Seen', blank=True, null=True) + class Meta: + db_table = 'historical' + +class redirectData(models.Model): + key = models.CharField(max_length=1000,default="streaming") + url = models.CharField(max_length=1000) class Meta: db_table = 'redirect' diff --git a/django_code/apps/website_redirection/utils.py b/django_code/apps/website_redirection/utils.py index 3e8d913..1c49bbe 100644 --- a/django_code/apps/website_redirection/utils.py +++ b/django_code/apps/website_redirection/utils.py @@ -1,16 +1,16 @@ -import redis -from .models import redirectData +from .models import historicalData,redirectData -r = redis.Redis( - host='django-redis-svc', - port=6379, - db=0 # The default Redis database index -) def redirect_method(key,value): key = key.lower() - r.set(key, value) - redirectData.objects.create(url=value,key=key) + + #Add to the redirect database to be used as a redirection point + # using update_or_create so there is no duplicate of one index/key + redirectData.objects.update_or_create(key=key,defaults={'url': value}) + + #Add to the historical database + historicalData.objects.create(url=value, key=key) + text_generated = "successfully set "+value+" to "+key return text_generated \ No newline at end of file diff --git a/django_code/apps/website_redirection/views.py b/django_code/apps/website_redirection/views.py index 4a32330..ec1b57c 100644 --- a/django_code/apps/website_redirection/views.py +++ b/django_code/apps/website_redirection/views.py @@ -2,22 +2,15 @@ from django.shortcuts import render from django.http import HttpResponse from django.http import HttpResponseRedirect from django.apps import AppConfig -from .models import redirectData +from .models import historicalData,redirectData from .utils import redirect_method -import redis + def hello(request): return HttpResponse('

Hello Django!

') - -r = redis.Redis( - host='django-redis-svc', - port=6379, - db=0 # The default Redis database index -) - def hello(request): return HttpResponse('

Hello redirect!

') @@ -27,7 +20,8 @@ def redirect(request): def clearkey_process(request): key = request.GET.get('key') - r.delete(key) + #commenting this for now , need to see if the function is usefull + #r.delete(key) return 0 def redirect_process(request): @@ -39,22 +33,24 @@ def redirect_process(request): return HttpResponse(text_generated, content_type="text/plain") def display_key(request,key): - value = r.get(key) + value = redirectData.objects.filter(key=key).values('url')[0]['url'] value_extracted = str(value.decode()) text_generated = key+" is set to "+value_extracted return HttpResponse(text_generated, content_type="text/plain") def redirect_to_key(request,key): - value = r.get(key) + redirect_object = redirectData.objects.filter(key=key) + value = str(redirect_object.values('url')[0]['url']) + if value == None: - icon_url = r.get('icon') - if icon_url == None: - icon_url = "https://cdn-icons-png.flaticon.com/512/6402/6402576.png" + #get the icon url, if it doesn't exist , create it with a default icon + icon_url = redirectData.objects.get_or_create(key="icon",defaults={'url':"https://cdn-icons-png.flaticon.com/512/6402/6402576.png"})[0].url + print(key+" is not setup, displaying default page") return render(request, 'website_redirection/blank_page.html', {'title': key,'icon_url':icon_url}) else: - value_extracted = str(value.decode('utf-8')) + value_extracted = str(value) print(key+" is setup to : "+value_extracted) print(value_extracted) return HttpResponseRedirect(value_extracted) \ No newline at end of file diff --git a/django_code/core/urls.py b/django_code/core/urls.py index 95279d1..c8bb224 100644 --- a/django_code/core/urls.py +++ b/django_code/core/urls.py @@ -42,7 +42,7 @@ urlpatterns = [ path('redirect/set/', website_redirectionapp.redirect), path('redirect/get/', website_redirectionapp.display_key), path('redirect/go/', website_redirectionapp.redirect_to_key), - path('redirect/redirect-form/', website_redirectionapp.redirect_process, name='submit_form'), + path('redirect-form/', website_redirectionapp.redirect_process, name='submit_form'), path('redirect/clearkey/', website_redirectionapp.clearkey_process, name='submit_form'), ################### onenote ################### From d8866b038a5f342030dd33b567377abfa0f53f84 Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 11:56:30 +0100 Subject: [PATCH 2/6] add cat of requirements as they don't get build --- infra/testing/dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/testing/dockerfile b/infra/testing/dockerfile index 0c58654..7dba290 100644 --- a/infra/testing/dockerfile +++ b/infra/testing/dockerfile @@ -9,6 +9,8 @@ ENV DEBUG 'True' WORKDIR /code/ +RUN cat Django_kube/requirements.txt + # Install build tools and MaxMind library RUN apt-get update && \ apt-get install -y git nano && \ From 31179d99def7c20a273aec9f3b8759acf6b24cc8 Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 11:58:28 +0100 Subject: [PATCH 3/6] add cat of requirements as they don't get build --- infra/testing/dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/testing/dockerfile b/infra/testing/dockerfile index 7dba290..0927030 100644 --- a/infra/testing/dockerfile +++ b/infra/testing/dockerfile @@ -9,7 +9,6 @@ ENV DEBUG 'True' WORKDIR /code/ -RUN cat Django_kube/requirements.txt # Install build tools and MaxMind library RUN apt-get update && \ @@ -19,6 +18,8 @@ RUN apt-get update && \ # Clone the project RUN git clone -b testing https://gitea.tryton.geeraert.eu/pi-ux-ce/Django_kube.git +RUN cat Django_kube/requirements.txt + RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade pip RUN pip list --cache-dir=/opt/hostedtoolcache/pip --outdated RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade wheel From a1d7d8005d6e88f63c893c3107271a6316d4f72f Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 13:38:41 +0100 Subject: [PATCH 4/6] avoiding git clone within the dockerfile --- infra/production/entrypoint.sh | 15 +++++++++++++++ infra/testing/dockerfile | 8 +++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/infra/production/entrypoint.sh b/infra/production/entrypoint.sh index 3563687..40ab7be 100644 --- a/infra/production/entrypoint.sh +++ b/infra/production/entrypoint.sh @@ -1,5 +1,20 @@ #!/bin/bash +python django_code/manage.py makemigrations +python django_code/manage.py makemigrations redirect +python django_code/manage.py makemigrations cloudmanager +python django_code/manage.py makemigrations simpsons +python django_code/manage.py makemigrations job +python django_code/manage.py makemigrations telegram +python django_code/manage.py makemigrations podcast + +python django_code/manage.py migrate +python django_code/manage.py migrate --database=cloudmanager_db +python django_code/manage.py migrate --database=simpsons_db +python django_code/manage.py migrate --database=redirect_db +python django_code/manage.py migrate --database=job_db +python django_code/manage.py migrate --database=telegram_db +python django_code/manage.py migrate --database=podcast_db python django_code/manage.py runserver "0.0.0.0:8000" diff --git a/infra/testing/dockerfile b/infra/testing/dockerfile index 0927030..c506734 100644 --- a/infra/testing/dockerfile +++ b/infra/testing/dockerfile @@ -15,10 +15,9 @@ RUN apt-get update && \ apt-get install -y git nano && \ rm -rf /var/lib/apt/lists/* -# Clone the project -RUN git clone -b testing https://gitea.tryton.geeraert.eu/pi-ux-ce/Django_kube.git -RUN cat Django_kube/requirements.txt +# Copy only the requirements file first (Changes infrequently) +COPY requirements.txt ./ RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade pip RUN pip list --cache-dir=/opt/hostedtoolcache/pip --outdated @@ -26,6 +25,9 @@ RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade wheel RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade setuptools RUN pip install --cache-dir=/opt/hostedtoolcache/pip -r Django_kube/requirements.txt +# Copy the rest of your application code (Changes frequently, invalidates subsequent cache) +COPY . ./ + COPY infra/testing/entrypoint.sh /code/entrypoint.sh RUN chmod +x /code/entrypoint.sh From 7681aef96e1cebef8154b138c8fbcf08c38d361d Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 13:40:52 +0100 Subject: [PATCH 5/6] avoiding git clone within the dockerfile --- infra/testing/dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/testing/dockerfile b/infra/testing/dockerfile index c506734..ff5bd1c 100644 --- a/infra/testing/dockerfile +++ b/infra/testing/dockerfile @@ -23,7 +23,7 @@ RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade pip RUN pip list --cache-dir=/opt/hostedtoolcache/pip --outdated RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade wheel RUN pip install --cache-dir=/opt/hostedtoolcache/pip --upgrade setuptools -RUN pip install --cache-dir=/opt/hostedtoolcache/pip -r Django_kube/requirements.txt +RUN pip install --cache-dir=/opt/hostedtoolcache/pip -r requirements.txt # Copy the rest of your application code (Changes frequently, invalidates subsequent cache) COPY . ./ From 4f4de780ca56710e6db5354467f7fcd22787ae97 Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Tue, 28 Jul 2026 14:50:22 +0100 Subject: [PATCH 6/6] add docker ignore --- .dockerignore | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f56f31f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.git +.github +**/__pycache__ +*.pyc +.pytest_cache +media +staticfiles +*.sqlite3 +node_modules +.env \ No newline at end of file