Advertisement
hellsgate

Logging fields

Aug 15th, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.26 KB | None | 0 0
  1. # Old Method
  2. def get_logging_fields(self, model):
  3.     """
  4.    Returns a dictionary mapping of the fields that are used for
  5.    keeping the acutal audit log entries.
  6.    """
  7.     rel_name = '_%s_audit_log_entry'%model._meta.object_name.lower()
  8.    
  9.     def entry_instance_to_unicode(log_entry):
  10.         try:
  11.             result = u'%s: %s %s at %s'%(model._meta.object_name,
  12.                                             log_entry.object_state,
  13.                                             log_entry.get_action_type_display().lower(),
  14.                                             log_entry.action_date,
  15.                                            
  16.                                             )
  17.         except AttributeError:
  18.             result = u'%s %s at %s'%(model._meta.object_name,
  19.                                             log_entry.get_action_type_display().lower(),
  20.                                             log_entry.action_date
  21.                                            
  22.                                             )
  23.         return result
  24.    
  25.     return {
  26.         'action_id' : models.AutoField(primary_key = True),
  27.         'action_date' : models.DateTimeField(default = datetime.datetime.now),
  28.         'action_user' : LastUserField(related_name = rel_name),
  29.         'action_type' : models.CharField(max_length = 1, choices = (
  30.             ('I', _('Created')),
  31.             ('U', _('Changed')),
  32.             ('D', _('Deleted')),
  33.         )),
  34.         'object_state' : LogEntryObjectDescriptor(model),
  35.         '__unicode__' : entry_instance_to_unicode,
  36.     }
  37.  
  38.  
  39. # New method
  40. def get_logging_fields(self, model):
  41.     """
  42.    Returns a dictionary mapping of the fields that are used for
  43.    keeping the acutal audit log entries.
  44.    """
  45.     rel_name = '_%s_audit_log_entry'%model._meta.object_name.lower()
  46.    
  47.     def entry_instance_to_unicode(log_entry):
  48.         try:
  49.             result = u'%s: %s %s at %s'%(model._meta.object_name,
  50.                                             log_entry.object_state,
  51.                                             log_entry.get_action_type_display().lower(),
  52.                                             log_entry.action_date,
  53.                                            
  54.                                             )
  55.         except AttributeError:
  56.             result = u'%s %s at %s'%(model._meta.object_name,
  57.                                             log_entry.get_action_type_display().lower(),
  58.                                             log_entry.action_date
  59.                                            
  60.                                             )
  61.         return result
  62.  
  63.     d = datetime.datetime.now()
  64.     if settings.USE_TZ:
  65.         d = timezone.make_aware(d, timezone.get_current_timezone())
  66.     utz = settings.USE_TZ
  67.     return {
  68.         'action_id' : models.AutoField(primary_key = True),
  69.         'action_date' : models.DateTimeField(default = d),
  70.         'action_user' : LastUserField(related_name = rel_name),
  71.         'action_type' : models.CharField(max_length = 1, choices = (
  72.             ('I', _('Created')),
  73.             ('U', _('Changed')),
  74.             ('D', _('Deleted')),
  75.         )),
  76.         'object_state' : LogEntryObjectDescriptor(model),
  77.         '__unicode__' : entry_instance_to_unicode,
  78.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement