From d3061eddafb63fc340125d8ad4b127f652d246aa Mon Sep 17 00:00:00 2001 From: pierre geeraert Date: Thu, 11 Jun 2026 22:12:00 +0100 Subject: [PATCH] work on databse model --- django_code/apps/cloudmanager/__init__.py | 0 django_code/apps/cloudmanager/admin.py | 3 ++ django_code/apps/cloudmanager/apps.py | 13 ++++- .../cloudmanager/migrations/0001_initial.py | 28 +++++++++++ .../apps/cloudmanager/migrations/__init__.py | 0 django_code/apps/cloudmanager/models.py | 12 +++++ django_code/apps/cloudmanager/tests.py | 3 ++ django_code/apps/cloudmanager/views.py | 45 +++++++---------- django_code/apps/cloudmanager_old/apps.py | 28 +++++++++++ .../sql/cloudmanager_machine.sql | 0 .../sql/cloudmanager_scenario_day_of_week.sql | 0 .../sql/cloudmanager_scenario_hour.sql | 0 django_code/apps/cloudmanager_old/views.py | 33 +++++++++++++ django_code/apps/random_simpsons/apps.py | 5 ++ .../migrations/0001_initial.py | 27 ++++++++++ .../0002_alter_simpsonsdata_seen.py | 18 +++++++ django_code/apps/random_simpsons/models.py | 9 +++- django_code/db.sqlite3 | Bin 0 -> 135168 bytes django_code/django_code/routers.py | 46 ++++++++++++++++++ django_code/django_code/settings.py | 31 ++++++++++-- django_code/django_code/urls.py | 13 ++--- django_code/templates/cloudmanager/index.html | 4 +- 22 files changed, 275 insertions(+), 43 deletions(-) create mode 100644 django_code/apps/cloudmanager/__init__.py create mode 100644 django_code/apps/cloudmanager/admin.py create mode 100644 django_code/apps/cloudmanager/migrations/0001_initial.py create mode 100644 django_code/apps/cloudmanager/migrations/__init__.py create mode 100644 django_code/apps/cloudmanager/models.py create mode 100644 django_code/apps/cloudmanager/tests.py create mode 100644 django_code/apps/cloudmanager_old/apps.py rename django_code/apps/{cloudmanager => cloudmanager_old}/sql/cloudmanager_machine.sql (100%) rename django_code/apps/{cloudmanager => cloudmanager_old}/sql/cloudmanager_scenario_day_of_week.sql (100%) rename django_code/apps/{cloudmanager => cloudmanager_old}/sql/cloudmanager_scenario_hour.sql (100%) create mode 100644 django_code/apps/cloudmanager_old/views.py create mode 100644 django_code/apps/random_simpsons/migrations/0001_initial.py create mode 100644 django_code/apps/random_simpsons/migrations/0002_alter_simpsonsdata_seen.py create mode 100644 django_code/django_code/routers.py diff --git a/django_code/apps/cloudmanager/__init__.py b/django_code/apps/cloudmanager/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/django_code/apps/cloudmanager/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/django_code/apps/cloudmanager/apps.py b/django_code/apps/cloudmanager/apps.py index d108d75..1010f1c 100644 --- a/django_code/apps/cloudmanager/apps.py +++ b/django_code/apps/cloudmanager/apps.py @@ -1,3 +1,4 @@ +from django.apps import AppConfig from django.http import HttpResponse from django.http import HttpResponseRedirect from django.shortcuts import render @@ -6,6 +7,14 @@ import psycopg2 from apps.cloudmanager.db_interaction import DB_generation,Check_server_supposed_XXX,Give_current_weekday,Give_current_hour +class CloudmanagerConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.cloudmanager' + label = 'cloudmanager' + +def coucou(request): + return HttpResponse('

Hello cmm!

') + def hello(request): list_schedule = ['schedule1','schedule2'] list_servers_up = [['wiki', 'wikijs', 2], ['book', 'bookstack-db', 1]] @@ -17,11 +26,11 @@ def redirect(request): db_user = os.environ.get('DB_USERNAME') db_password = os.environ.get('DB_PASSWORD') db_name = os.environ.get('CUSTOM_DB_DATABASE',os.environ.get('DB_DATABASE')) - + generated_db = DB_generation(db_host, db_port, db_user, db_password,db_name) ##operation: ## Server(s) supposed to be UP - + list_servers_up = Check_server_supposed_XXX(generated_db, "up", Give_current_hour(),Give_current_weekday()) print(list_servers_up) return render(request, 'cloudmanager/cmm_blank_page.html', {'list_servers_up':list_servers_up}) diff --git a/django_code/apps/cloudmanager/migrations/0001_initial.py b/django_code/apps/cloudmanager/migrations/0001_initial.py new file mode 100644 index 0000000..b0b5a28 --- /dev/null +++ b/django_code/apps/cloudmanager/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.29 on 2026-06-11 19:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='CmmData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('namespace', models.CharField(max_length=100)), + ('schedule_day', models.CharField(max_length=100)), + ('schedule_hour', models.CharField(max_length=100)), + ('replicas', models.IntegerField()), + ], + options={ + 'db_table': 'cloudmanager', + }, + ), + ] diff --git a/django_code/apps/cloudmanager/migrations/__init__.py b/django_code/apps/cloudmanager/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_code/apps/cloudmanager/models.py b/django_code/apps/cloudmanager/models.py new file mode 100644 index 0000000..17ac29b --- /dev/null +++ b/django_code/apps/cloudmanager/models.py @@ -0,0 +1,12 @@ +from django.db import models + +class CmmData(models.Model): + name = models.CharField(max_length=100) + namespace = models.CharField(max_length=100) + schedule_day = models.CharField(max_length=100) + schedule_hour = models.CharField(max_length=100) + replicas = models.IntegerField() + + + class Meta: + db_table = 'cloudmanager' \ No newline at end of file diff --git a/django_code/apps/cloudmanager/tests.py b/django_code/apps/cloudmanager/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/django_code/apps/cloudmanager/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/django_code/apps/cloudmanager/views.py b/django_code/apps/cloudmanager/views.py index 9fa0670..da280b3 100644 --- a/django_code/apps/cloudmanager/views.py +++ b/django_code/apps/cloudmanager/views.py @@ -1,33 +1,24 @@ from django.http import HttpResponse -from django.views.decorators.http import require_POST -#from django.contrib.auth.decorators import login_required # optional but recommended -def trigger_my_action(request): - # 1. Run your Django module/function - result = "1" - print('here') - # 2. Return ONLY the HTML fragment you want to show on the page - # This will replace the content inside the "hx-target" div - return HttpResponse("Done!") +# IMPORT AT THE TOP HERE: This is completely safe! +from apps.cloudmanager.models import CmmData +def coucou(request): + # 1. Prepare the data inside the function + data = CmmData( + name="test", + namespace="testspace", + schedule_hour="1", + schedule_day="deux", + replicas=3 + ) -#@login_required -@require_POST -def change_schedule(request): - # HTMX sends these via standard POST data - schedule_id = request.POST.get('schedule_id') - server_name = request.POST.get('server_name') + # 2. This line actually pushes the data into your cloudmanager_db! + data.save() - if not schedule_id or not server_name: - return HttpResponse("Missing parameters.", status=400) + return HttpResponse('

Hello cmm! Data saved successfully!

') - try: - # --- Your Core Logic Here --- - # e.g., Server.objects.filter(name=server_name).update(schedule_id=schedule_id) - print(f"Updating {server_name} to schedule profile {schedule_id}") - - # Return a success message that will instantly inject into the server's status div - return HttpResponse("✓ Updated successfully!") - - except Exception as e: - return HttpResponse(f"Error: {str(e)}", status=500) \ No newline at end of file +def display(request): + data = CmmData.objects.all() + print(data[0].namespace) + return HttpResponse(data) diff --git a/django_code/apps/cloudmanager_old/apps.py b/django_code/apps/cloudmanager_old/apps.py new file mode 100644 index 0000000..d108d75 --- /dev/null +++ b/django_code/apps/cloudmanager_old/apps.py @@ -0,0 +1,28 @@ +from django.http import HttpResponse +from django.http import HttpResponseRedirect +from django.shortcuts import render +import os +import psycopg2 +from apps.cloudmanager.db_interaction import DB_generation,Check_server_supposed_XXX,Give_current_weekday,Give_current_hour + + +def hello(request): + list_schedule = ['schedule1','schedule2'] + list_servers_up = [['wiki', 'wikijs', 2], ['book', 'bookstack-db', 1]] + return render(request, 'cloudmanager/index.html', {'list_schedule':list_schedule,'list_servers_up':list_servers_up}) + +def redirect(request): + db_host = os.environ.get('DB_HOST') + db_port = os.environ.get('DB_PORT') + db_user = os.environ.get('DB_USERNAME') + db_password = os.environ.get('DB_PASSWORD') + db_name = os.environ.get('CUSTOM_DB_DATABASE',os.environ.get('DB_DATABASE')) + + generated_db = DB_generation(db_host, db_port, db_user, db_password,db_name) + ##operation: + ## Server(s) supposed to be UP + + list_servers_up = Check_server_supposed_XXX(generated_db, "up", Give_current_hour(),Give_current_weekday()) + print(list_servers_up) + return render(request, 'cloudmanager/cmm_blank_page.html', {'list_servers_up':list_servers_up}) + diff --git a/django_code/apps/cloudmanager/sql/cloudmanager_machine.sql b/django_code/apps/cloudmanager_old/sql/cloudmanager_machine.sql similarity index 100% rename from django_code/apps/cloudmanager/sql/cloudmanager_machine.sql rename to django_code/apps/cloudmanager_old/sql/cloudmanager_machine.sql diff --git a/django_code/apps/cloudmanager/sql/cloudmanager_scenario_day_of_week.sql b/django_code/apps/cloudmanager_old/sql/cloudmanager_scenario_day_of_week.sql similarity index 100% rename from django_code/apps/cloudmanager/sql/cloudmanager_scenario_day_of_week.sql rename to django_code/apps/cloudmanager_old/sql/cloudmanager_scenario_day_of_week.sql diff --git a/django_code/apps/cloudmanager/sql/cloudmanager_scenario_hour.sql b/django_code/apps/cloudmanager_old/sql/cloudmanager_scenario_hour.sql similarity index 100% rename from django_code/apps/cloudmanager/sql/cloudmanager_scenario_hour.sql rename to django_code/apps/cloudmanager_old/sql/cloudmanager_scenario_hour.sql diff --git a/django_code/apps/cloudmanager_old/views.py b/django_code/apps/cloudmanager_old/views.py new file mode 100644 index 0000000..9fa0670 --- /dev/null +++ b/django_code/apps/cloudmanager_old/views.py @@ -0,0 +1,33 @@ +from django.http import HttpResponse +from django.views.decorators.http import require_POST +#from django.contrib.auth.decorators import login_required # optional but recommended + +def trigger_my_action(request): + # 1. Run your Django module/function + result = "1" + print('here') + # 2. Return ONLY the HTML fragment you want to show on the page + # This will replace the content inside the "hx-target" div + return HttpResponse("Done!") + + +#@login_required +@require_POST +def change_schedule(request): + # HTMX sends these via standard POST data + schedule_id = request.POST.get('schedule_id') + server_name = request.POST.get('server_name') + + if not schedule_id or not server_name: + return HttpResponse("Missing parameters.", status=400) + + try: + # --- Your Core Logic Here --- + # e.g., Server.objects.filter(name=server_name).update(schedule_id=schedule_id) + print(f"Updating {server_name} to schedule profile {schedule_id}") + + # Return a success message that will instantly inject into the server's status div + return HttpResponse("✓ Updated successfully!") + + except Exception as e: + return HttpResponse(f"Error: {str(e)}", status=500) \ No newline at end of file diff --git a/django_code/apps/random_simpsons/apps.py b/django_code/apps/random_simpsons/apps.py index f3aaf43..30a2968 100644 --- a/django_code/apps/random_simpsons/apps.py +++ b/django_code/apps/random_simpsons/apps.py @@ -11,6 +11,11 @@ import psycopg2 import random import mimetypes +class RandomSimpsonsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.random_simpsons' + label = 'simpsons' + def DB_generation(host_in,port_in,user_in,password_in,db_in): #db = pymysql.connect(host=host_in, port=port_in, user=user_in, passwd=password_in,db=db_in) db = psycopg2.connect(host=host_in, port=port_in, user=user_in, password=password_in,database=db_in) diff --git a/django_code/apps/random_simpsons/migrations/0001_initial.py b/django_code/apps/random_simpsons/migrations/0001_initial.py new file mode 100644 index 0000000..0ae7a6e --- /dev/null +++ b/django_code/apps/random_simpsons/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.29 on 2026-06-11 19:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='SimpsonsData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('season', models.IntegerField()), + ('episode', models.IntegerField()), + ('url', models.CharField(max_length=100)), + ('seen', models.CharField(max_length=100)), + ], + options={ + 'db_table': 'simpsons', + }, + ), + ] diff --git a/django_code/apps/random_simpsons/migrations/0002_alter_simpsonsdata_seen.py b/django_code/apps/random_simpsons/migrations/0002_alter_simpsonsdata_seen.py new file mode 100644 index 0000000..0796b90 --- /dev/null +++ b/django_code/apps/random_simpsons/migrations/0002_alter_simpsonsdata_seen.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.29 on 2026-06-11 20:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('simpsons', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='simpsonsdata', + name='seen', + field=models.BooleanField(), + ), + ] diff --git a/django_code/apps/random_simpsons/models.py b/django_code/apps/random_simpsons/models.py index 71a8362..8af42cc 100644 --- a/django_code/apps/random_simpsons/models.py +++ b/django_code/apps/random_simpsons/models.py @@ -1,3 +1,10 @@ from django.db import models -# Create your models here. +class SimpsonsData(models.Model): + season = models.IntegerField() + episode = models.IntegerField() + url = models.CharField(max_length=100) + seen = models.BooleanField() + + class Meta: + db_table = 'simpsons' \ No newline at end of file diff --git a/django_code/db.sqlite3 b/django_code/db.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..059f3e35b74f7eb7b405dd436067bf111af7f45a 100644 GIT binary patch literal 135168 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 x0T2KI5C8!X009sHfyYV!`~Sy^8 - @@ -274,7 +274,7 @@ {% endfor %}