- Apply Black formatting to all Python files in core and stiftung modules - Fix import statement ordering with isort - Ensure all code meets automated quality standards - Resolve CI/CD pipeline formatting failures - Maintain consistent code style across the entire codebase
239 lines
8.7 KiB
Python
239 lines
8.7 KiB
Python
# Generated by Django 5.0.6 on 2025-08-26 08:33
|
|
|
|
import uuid
|
|
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
("stiftung", "0014_dokumentlink_rentmeister_id"),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="BackupJob",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.UUIDField(
|
|
default=uuid.uuid4,
|
|
editable=False,
|
|
primary_key=True,
|
|
serialize=False,
|
|
),
|
|
),
|
|
(
|
|
"backup_type",
|
|
models.CharField(
|
|
choices=[
|
|
("full", "Vollständiges Backup"),
|
|
("database", "Nur Datenbank"),
|
|
("files", "Nur Dateien"),
|
|
],
|
|
max_length=20,
|
|
verbose_name="Backup-Typ",
|
|
),
|
|
),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[
|
|
("pending", "Wartend"),
|
|
("running", "Läuft"),
|
|
("completed", "Abgeschlossen"),
|
|
("failed", "Fehlgeschlagen"),
|
|
],
|
|
default="pending",
|
|
max_length=20,
|
|
verbose_name="Status",
|
|
),
|
|
),
|
|
(
|
|
"created_at",
|
|
models.DateTimeField(auto_now_add=True, verbose_name="Erstellt am"),
|
|
),
|
|
(
|
|
"started_at",
|
|
models.DateTimeField(
|
|
blank=True, null=True, verbose_name="Gestartet am"
|
|
),
|
|
),
|
|
(
|
|
"completed_at",
|
|
models.DateTimeField(
|
|
blank=True, null=True, verbose_name="Abgeschlossen am"
|
|
),
|
|
),
|
|
(
|
|
"backup_filename",
|
|
models.CharField(
|
|
blank=True, max_length=255, verbose_name="Backup-Dateiname"
|
|
),
|
|
),
|
|
(
|
|
"backup_size",
|
|
models.BigIntegerField(
|
|
blank=True, null=True, verbose_name="Backup-Größe (Bytes)"
|
|
),
|
|
),
|
|
(
|
|
"error_message",
|
|
models.TextField(blank=True, verbose_name="Fehlermeldung"),
|
|
),
|
|
(
|
|
"database_size",
|
|
models.BigIntegerField(
|
|
blank=True, null=True, verbose_name="Datenbankgröße (Bytes)"
|
|
),
|
|
),
|
|
(
|
|
"files_count",
|
|
models.IntegerField(
|
|
blank=True, null=True, verbose_name="Anzahl Dateien"
|
|
),
|
|
),
|
|
(
|
|
"created_by",
|
|
models.ForeignKey(
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Erstellt von",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Backup-Job",
|
|
"verbose_name_plural": "Backup-Jobs",
|
|
"ordering": ["-created_at"],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="AuditLog",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.UUIDField(
|
|
default=uuid.uuid4,
|
|
editable=False,
|
|
primary_key=True,
|
|
serialize=False,
|
|
),
|
|
),
|
|
(
|
|
"username",
|
|
models.CharField(max_length=150, verbose_name="Benutzername"),
|
|
),
|
|
(
|
|
"timestamp",
|
|
models.DateTimeField(auto_now_add=True, verbose_name="Zeitpunkt"),
|
|
),
|
|
(
|
|
"action",
|
|
models.CharField(
|
|
choices=[
|
|
("create", "Erstellt"),
|
|
("update", "Aktualisiert"),
|
|
("delete", "Gelöscht"),
|
|
("link", "Verknüpft"),
|
|
("unlink", "Verknüpfung entfernt"),
|
|
("login", "Anmeldung"),
|
|
("logout", "Abmeldung"),
|
|
("backup", "Backup erstellt"),
|
|
("restore", "Wiederherstellung"),
|
|
("export", "Export"),
|
|
("import", "Import"),
|
|
],
|
|
max_length=20,
|
|
verbose_name="Aktion",
|
|
),
|
|
),
|
|
(
|
|
"entity_type",
|
|
models.CharField(
|
|
choices=[
|
|
("destinataer", "Destinatär"),
|
|
("land", "Länderei"),
|
|
("paechter", "Pächter"),
|
|
("verpachtung", "Verpachtung"),
|
|
("foerderung", "Förderung"),
|
|
("rentmeister", "Rentmeister"),
|
|
("stiftungskonto", "Stiftungskonto"),
|
|
("verwaltungskosten", "Verwaltungskosten"),
|
|
("banktransaction", "Bank-Transaktion"),
|
|
("dokumentlink", "Dokument-Verknüpfung"),
|
|
("system", "System"),
|
|
("user", "Benutzer"),
|
|
],
|
|
max_length=20,
|
|
verbose_name="Entitätstyp",
|
|
),
|
|
),
|
|
(
|
|
"entity_id",
|
|
models.CharField(
|
|
blank=True, max_length=100, verbose_name="Entitäts-ID"
|
|
),
|
|
),
|
|
(
|
|
"entity_name",
|
|
models.CharField(max_length=255, verbose_name="Entitätsname"),
|
|
),
|
|
("description", models.TextField(verbose_name="Beschreibung")),
|
|
(
|
|
"changes",
|
|
models.JSONField(blank=True, null=True, verbose_name="Änderungen"),
|
|
),
|
|
(
|
|
"ip_address",
|
|
models.GenericIPAddressField(
|
|
blank=True, null=True, verbose_name="IP-Adresse"
|
|
),
|
|
),
|
|
("user_agent", models.TextField(blank=True, verbose_name="User Agent")),
|
|
(
|
|
"session_key",
|
|
models.CharField(
|
|
blank=True, max_length=40, verbose_name="Session-Key"
|
|
),
|
|
),
|
|
(
|
|
"user",
|
|
models.ForeignKey(
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Benutzer",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Audit Log Eintrag",
|
|
"verbose_name_plural": "Audit Log Einträge",
|
|
"ordering": ["-timestamp"],
|
|
"indexes": [
|
|
models.Index(
|
|
fields=["timestamp"], name="stiftung_au_timesta_c4591e_idx"
|
|
),
|
|
models.Index(
|
|
fields=["user", "timestamp"],
|
|
name="stiftung_au_user_id_e3fc12_idx",
|
|
),
|
|
models.Index(
|
|
fields=["entity_type", "timestamp"],
|
|
name="stiftung_au_entity__68f25d_idx",
|
|
),
|
|
models.Index(
|
|
fields=["action", "timestamp"],
|
|
name="stiftung_au_action_288765_idx",
|
|
),
|
|
],
|
|
},
|
|
),
|
|
]
|