diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 294b120..88960db 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,11 @@ +Version 1.1.3 +=========================================================== +* Make papertrail admin viewer resilient to the model class referenced + by the related object not being available (this would happen, for example, + when an app is removed from INSTALLED_APPS but it's Content Type object + is still in the database). + + Version 1.1.2 =========================================================== * Add default Entry admin diff --git a/papertrail/__init__.py b/papertrail/__init__.py index c04ea70..438ee67 100644 --- a/papertrail/__init__.py +++ b/papertrail/__init__.py @@ -1,2 +1,2 @@ -__version__ = '1.1.2' +__version__ = '1.1.3' default_app_config = 'papertrail.apps.PapertrailConfig' diff --git a/papertrail/models.py b/papertrail/models.py index 4ca26c4..f78356e 100644 --- a/papertrail/models.py +++ b/papertrail/models.py @@ -240,6 +240,14 @@ class RelatedObject(models.Model): class Meta: abstract = True + @property + def safe_related_object(self): + try: + return self.related_object + # This will happen if the model class of this object is not available, for example if the app providing it has been removed from INSTALLED_APPS + except AttributeError: + return None + class EntryRelatedObject(RelatedObject): entry = models.ForeignKey('Entry', related_name='targets') diff --git a/papertrail/templates/admin/object_papertrail.html b/papertrail/templates/admin/object_papertrail.html index c64ae55..018a651 100644 --- a/papertrail/templates/admin/object_papertrail.html +++ b/papertrail/templates/admin/object_papertrail.html @@ -77,8 +77,8 @@