summaryrefslogtreecommitdiff
path: root/django/contrib/admin/models/admin.py
blob: b7bcda192b7e2c8b2650b13622aa4131c975fcef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from django.core import meta
from django.models import auth, core
from django.utils.translation import gettext_lazy as _

class LogEntry(meta.Model):
    action_time = meta.DateTimeField(_('action time'), auto_now=True)
    user = meta.ForeignKey(auth.User)
    content_type = meta.ForeignKey(core.ContentType, blank=True, null=True)
    object_id = meta.TextField(_('object id'), blank=True, null=True)
    object_repr = meta.CharField(_('object repr'), maxlength=200)
    action_flag = meta.PositiveSmallIntegerField(_('action flag'))
    change_message = meta.TextField(_('change message'), blank=True)
    class META:
        module_name = 'log'
        verbose_name = _('log entry')
        verbose_name_plural = _('log entries')
        db_table = 'django_admin_log'
        ordering = ('-action_time',)
        module_constants = {
            'ADDITION': 1,
            'CHANGE': 2,
            'DELETION': 3,
        }

    def __repr__(self):
        return str(self.action_time)

    def is_addition(self):
        return self.action_flag == ADDITION

    def is_change(self):
        return self.action_flag == CHANGE

    def is_deletion(self):
        return self.action_flag == DELETION

    def get_edited_object(self):
        "Returns the edited object represented by this log entry"
        return self.get_content_type().get_object_for_this_type(pk=self.object_id)

    def get_admin_url(self):
        """
        Returns the admin URL to edit the object represented by this log entry.
        This is relative to the Django admin index page.
        """
        return "%s/%s/%s/" % (self.get_content_type().get_package(), self.get_content_type().python_module_name, self.object_id)

    def _module_log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
        e = LogEntry(None, None, user_id, content_type_id, object_id, object_repr[:200], action_flag, change_message)
        e.save()