From a2cb219d9b7f343726eb39cafb47bd7c4e6e9108 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 23 Feb 2017 17:52:48 +0100 Subject: [PATCH] Remove GenericRelation to prevent cascade deletion of logs --- src/pretix/base/models/base.py | 9 ++++++--- src/pretix/base/models/log.py | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/base.py b/src/pretix/base/models/base.py index 8814ac7b8..583d0246b 100644 --- a/src/pretix/base/models/base.py +++ b/src/pretix/base/models/base.py @@ -1,7 +1,7 @@ import json import uuid -from django.contrib.contenttypes.fields import GenericRelation +from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models.signals import post_delete from django.dispatch import receiver @@ -60,7 +60,6 @@ class LoggingMixin: class LoggedModel(models.Model, LoggingMixin): - logentries = GenericRelation('pretixbase.LogEntry') class Meta: abstract = True @@ -71,4 +70,8 @@ class LoggedModel(models.Model, LoggingMixin): :return: A QuerySet of LogEntry objects """ - return self.logentries.all().select_related('user', 'event') + from .log import LogEntry + + return LogEntry.objects.filter( + content_type=ContentType.objects.get_for_model(type(self)), object_id=self.pk + ).select_related('user', 'event') diff --git a/src/pretix/base/models/log.py b/src/pretix/base/models/log.py index bb6c4b4f5..c01ef64c6 100644 --- a/src/pretix/base/models/log.py +++ b/src/pretix/base/models/log.py @@ -130,3 +130,6 @@ class LogEntry(models.Model): @cached_property def parsed_data(self): return json.loads(self.data) + + def delete(self, using=None, keep_parents=False): + raise TypeError("Logs cannot be deleted.")