From fe7ee9ec7bded43f0b2954eb221c6e37f9b4a806 Mon Sep 17 00:00:00 2001 From: Eran Rundstein Date: Tue, 16 Aug 2016 15:14:57 -0700 Subject: [PATCH] add default Entry admin --- CHANGELOG.rst | 5 +++++ papertrail/__init__.py | 2 +- papertrail/admin.py | 31 ++++++++++++++++++++++++++++++- setup.py | 2 +- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index fb80ee1..294b120 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,8 @@ +Version 1.1.2 +=========================================================== +* Add default Entry admin + + Version 1.1.1 =========================================================== * Add a new `data_adapter` argument to `papertrail.log`. The method diff --git a/papertrail/__init__.py b/papertrail/__init__.py index 85da542..c04ea70 100644 --- a/papertrail/__init__.py +++ b/papertrail/__init__.py @@ -1,2 +1,2 @@ -__version__ = '1.1.1' +__version__ = '1.1.2' default_app_config = 'papertrail.apps.PapertrailConfig' diff --git a/papertrail/admin.py b/papertrail/admin.py index 8fe3a50..31664c9 100644 --- a/papertrail/admin.py +++ b/papertrail/admin.py @@ -3,15 +3,22 @@ import json from django.conf.urls import url +from django.contrib import admin from django.core import serializers +from django.core.urlresolvers import reverse from django.db.models import Q from django.shortcuts import get_object_or_404, render from django.utils.encoding import force_text +from django.utils.html import format_html from django.utils.text import capfirst from django.utils.translation import ugettext as _ import papertrail -from papertrail.models import Entry +from papertrail.models import Entry, EntryRelatedObject + + +def admin_reverse_for_model(model): + return reverse('admin:{}_{}_change'.format(model._meta.app_label, model._meta.model_name), args=[model.id]) class AdminEventLoggerMixin(object): @@ -238,3 +245,25 @@ def add_related_change(changes, obj, action='change', fields=None): add_related_change(changes, obj, action='add') return json.dumps(changes) + + +class EntryRelatedObjectInline(admin.StackedInline): + model = EntryRelatedObject + extra = 0 + fields = ('relation_name', 'related_content_type', 'related_model', ) + readonly_fields = ('related_model', ) + + def related_model(self, obj): + related_obj = obj.related_object + return format_html( + u'{}', + admin_reverse_for_model(related_obj), + related_obj, + ) + + +@admin.register(Entry) +class EntryAdmin(admin.ModelAdmin): + list_display = ('type', 'message', 'timestamp', ) + search_fields = ('type', ) + inlines = (EntryRelatedObjectInline, ) diff --git a/setup.py b/setup.py index cc42781..51f64f0 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='django-papertrail', - version='1.1.1', + version='1.1.2', packages=['papertrail'], install_requires=[ 'Django>=1.7',