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:
- 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 theLogEntry
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'}, )
- When a user who took an admin action is deleted then the admin history is effectively corrupted. Because of the
CASCADE
forLogEntry.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.