basics for recording history

This commit is contained in:
Kenneth Love 2013-07-18 13:59:08 -07:00
parent 14d2a20431
commit 598b0a704f
3 changed files with 25 additions and 9 deletions

View file

@ -15,11 +15,11 @@ from . import permissions
class LogEntryManager(models.Manager):
def log_action(self, user_id, content_type_id, object_id, object_repr,
action_flag, change_message=''):
def log_action(self, user_id, obj, action_flag, change_message=''):
content_type_id = ContentType.objects.get_for_model(obj).id
e = self.model(None, None, user_id, content_type_id,
smart_text(object_id), object_repr[:200], action_flag,
change_message)
smart_text(obj.id), obj.__unicode__()[:200],
action_flag, change_message)
e.save()
@ -30,8 +30,10 @@ class LogEntry(models.Model):
DELETION = 3
action_time = models.DateTimeField(_('action time'), auto_now=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
content_type = models.ForeignKey(ContentType, blank=True, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='log_entries')
content_type = models.ForeignKey(ContentType, blank=True, null=True,
related_name='log_entries')
object_id = models.TextField(_('object id'), blank=True, null=True)
object_repr = models.CharField(_('object repr'), max_length=200)
action_flag = models.PositiveSmallIntegerField(_('action flag'))

View file

@ -7,7 +7,7 @@ from datetime import date, time, datetime
from django import template
from django.db.models.fields import FieldDoesNotExist
from .. import utils, renderers
from .. import utils, renderers, models
register = template.Library()
@ -141,6 +141,5 @@ def render(context, model_instance, attribute_name):
@register.inclusion_tag('djadmin2theme_default/includes/history.html',
takes_context=True)
def action_history(context):
from django.contrib.admin.models import LogEntry
actions = LogEntry.objects.filter(user__pk=context['user'].pk)
actions = models.LogEntry.objects.filter(user__pk=context['user'].pk)
return {'actions': actions}

View file

@ -22,6 +22,7 @@ import extra_views
from . import permissions, utils
from .forms import AdminAuthenticationForm
from .models import LogEntry
from .viewmixins import Admin2Mixin, AdminModel2Mixin, Admin2ModelFormMixin
from .filters import build_list_filter
@ -231,6 +232,11 @@ class ModelEditFormView(AdminModel2Mixin, Admin2ModelFormMixin,
context['action_name'] = ugettext_lazy("Change")
return context
def forms_valid(self, form, inlines):
response = super(ModelEditFormView, self).forms_valid(form, inlines)
LogEntry.objects.log_action(self.request.user.id, self.object, 2)
return response
class ModelAddFormView(AdminModel2Mixin, Admin2ModelFormMixin,
extra_views.CreateWithInlinesView):
@ -253,6 +259,11 @@ class ModelAddFormView(AdminModel2Mixin, Admin2ModelFormMixin,
context['action_name'] = ugettext_lazy("Add")
return context
def forms_valid(self, form, inlines):
response = super(ModelAddFormView, self).forms_valid(form, inlines)
LogEntry.objects.log_action(self.request.user.id, self.object, 1)
return response
class ModelDeleteView(AdminModel2Mixin, generic.DeleteView):
"""Context Variables
@ -283,6 +294,10 @@ class ModelDeleteView(AdminModel2Mixin, generic.DeleteView):
})
return context
def delete(self, request, *args, **kwargs):
LogEntry.objects.log_action(request.user.id, self.get_object(), 3)
return super(ModelDeleteView, self).delete(request, *args, **kwargs)
class PasswordChangeView(Admin2Mixin, generic.UpdateView):