From 69cfe58216419c9759754f9a5f316ec43c0a41dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kr=C3=B6ger?= Date: Sat, 26 Sep 2026 10:40:07 +0200 Subject: [PATCH 1/2] Ignore Makefile --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3ed1c2d5..f40283c0 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ __pycache__/ # Local docker-compose overlay (e.g. to mount/install a private app bundle) /docker-compose.override.yml +/Makefile From 4f98e94f36650091b9833da128dcdaa1338739df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kr=C3=B6ger?= Date: Fri, 9 Oct 2026 09:27:02 +0200 Subject: [PATCH 2/2] Fix foreign key error when importing db dump Delete cascade the QueryLog and QueryLoggingRule objects when deleting Users and Applications. The logs are for debugging purpose and are meant to be temporary so we do not care if the data is gone if the User and Application matching these gets deleted. It is probably even what we want because we do not care about performance data for users and apps we do not have anymore. --- .../migrations/0002_on_delete_cascade.py | 42 +++++++++++++++++++ .../serveradmin/querylog/models.py | 10 ++--- 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 packages/serveradmin/serveradmin/querylog/migrations/0002_on_delete_cascade.py diff --git a/packages/serveradmin/serveradmin/querylog/migrations/0002_on_delete_cascade.py b/packages/serveradmin/serveradmin/querylog/migrations/0002_on_delete_cascade.py new file mode 100644 index 00000000..062df6ba --- /dev/null +++ b/packages/serveradmin/serveradmin/querylog/migrations/0002_on_delete_cascade.py @@ -0,0 +1,42 @@ +# Generated by Django 5.2.17 on 2026-10-09 07:29 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('apps', '0004_application_last_login'), + ('querylog', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AlterField( + model_name='querylog', + name='application', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='query_logs', to='apps.application'), + ), + migrations.AlterField( + model_name='querylog', + name='rule', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='logs', to='querylog.queryloggingrule'), + ), + migrations.AlterField( + model_name='querylog', + name='user', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='query_logs', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='queryloggingrule', + name='application', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='query_logging_rules', to='apps.application'), + ), + migrations.AlterField( + model_name='queryloggingrule', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='query_logging_rules', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/packages/serveradmin/serveradmin/querylog/models.py b/packages/serveradmin/serveradmin/querylog/models.py index a77ce73e..8fca5d28 100644 --- a/packages/serveradmin/serveradmin/querylog/models.py +++ b/packages/serveradmin/serveradmin/querylog/models.py @@ -69,11 +69,11 @@ class QueryLoggingRule(models.Model): """ application = models.ForeignKey( - Application, null=True, blank=True, on_delete=models.SET_NULL, + Application, null=True, blank=True, on_delete=models.CASCADE, related_name='query_logging_rules', ) user = models.ForeignKey( - User, null=True, blank=True, on_delete=models.SET_NULL, + User, null=True, blank=True, on_delete=models.CASCADE, related_name='query_logging_rules', ) is_active = models.BooleanField( @@ -230,15 +230,15 @@ class Source(models.TextChoices): SERVERSHELL = 'servershell', 'Servershell' rule = models.ForeignKey( - QueryLoggingRule, null=True, on_delete=models.SET_NULL, + QueryLoggingRule, null=True, on_delete=models.CASCADE, related_name='logs', ) application = models.ForeignKey( - Application, null=True, on_delete=models.SET_NULL, + Application, null=True, on_delete=models.CASCADE, related_name='query_logs', ) user = models.ForeignKey( - User, null=True, on_delete=models.SET_NULL, + User, null=True, on_delete=models.CASCADE, related_name='query_logs', ) source = models.CharField(max_length=16, choices=Source.choices)