Opened 4 weeks ago

Last modified 4 weeks ago

#36555 closed New feature

Allow null for LogEntry.user — at Initial Version

Reported by: Siburg Owned by:
Component: contrib.admin Version: dev
Severity: Normal Keywords:
Cc: Siburg Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The user attribute of LogEntry is currently required. That causes two problems for me:

  1. I have admin actions that can be performed by users as well as by periodically scheduled tasks (think Celery). For the latter case I now have to get_or_create a proxy user record for the LogEntry for that action. For example:
    proxy_user, created = User.objects.get_or_create(
        username='DataScrubTask',
        defaults={'first_name': 'Proxy user for LogEntry records from "archive_and_scrub_records" task'},
    )
    
  2. When a user who took an admin action is deleted then the admin history is effectively corrupted. Because of the CASCADE for LogEntry.user, their actions are deleted from the history.

To eliminate those problems I propose to add blank=True, null=True to the user field definition, and change CASCADE to SET_NULL.

To provide more flexibility for tracking actions, I also propose to add a CharField that can contain a text representation of who or what performed the action.

I have created a preliminary, incomplete PR to show my proposed approach. I will gladly continue work on that if this proposal is accepted.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top