PageRenderTime 37ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/django/contrib/admin/models.py

https://code.google.com/p/mango-py/
Python | 56 lines | 54 code | 2 blank | 0 comment | 0 complexity | 883e38ce7ad8e6accfd3dd1038ef5b31 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. from django.db import models
  2. from django.contrib.contenttypes.models import ContentType
  3. from django.contrib.auth.models import User
  4. from django.contrib.admin.util import quote
  5. from django.utils.translation import ugettext_lazy as _
  6. from django.utils.encoding import smart_unicode
  7. from django.utils.safestring import mark_safe
  8. ADDITION = 1
  9. CHANGE = 2
  10. DELETION = 3
  11. class LogEntryManager(models.Manager):
  12. def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
  13. e = self.model(None, None, user_id, content_type_id, smart_unicode(object_id), object_repr[:200], action_flag, change_message)
  14. e.save()
  15. class LogEntry(models.Model):
  16. action_time = models.DateTimeField(_('action time'), auto_now=True)
  17. user = models.ForeignKey(User)
  18. content_type = models.ForeignKey(ContentType, blank=True, null=True)
  19. object_id = models.TextField(_('object id'), blank=True, null=True)
  20. object_repr = models.CharField(_('object repr'), max_length=200)
  21. action_flag = models.PositiveSmallIntegerField(_('action flag'))
  22. change_message = models.TextField(_('change message'), blank=True)
  23. objects = LogEntryManager()
  24. class Meta:
  25. verbose_name = _('log entry')
  26. verbose_name_plural = _('log entries')
  27. db_table = 'django_admin_log'
  28. ordering = ('-action_time',)
  29. def __repr__(self):
  30. return smart_unicode(self.action_time)
  31. def is_addition(self):
  32. return self.action_flag == ADDITION
  33. def is_change(self):
  34. return self.action_flag == CHANGE
  35. def is_deletion(self):
  36. return self.action_flag == DELETION
  37. def get_edited_object(self):
  38. "Returns the edited object represented by this log entry"
  39. return self.content_type.get_object_for_this_type(pk=self.object_id)
  40. def get_admin_url(self):
  41. """
  42. Returns the admin URL to edit the object represented by this log entry.
  43. This is relative to the Django admin index page.
  44. """
  45. if self.content_type and self.object_id:
  46. return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, quote(self.object_id)))
  47. return None