#36555: Allow null for LogEntry.user
------------------------+-----------------------------------------
     Reporter:  Siburg  |                     Type:  New feature
       Status:  new     |                Component:  contrib.admin
      Version:  dev     |                 Severity:  Normal
     Keywords:          |             Triage Stage:  Unreviewed
    Has patch:  0       |      Needs documentation:  0
  Needs tests:  0       |  Patch needs improvement:  0
Easy pickings:  0       |                    UI/UX:  0
------------------------+-----------------------------------------
 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.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36555>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/01070198acf7b580-91655a4d-8ade-4a96-9878-d01d0350f58c-000000%40eu-central-1.amazonses.com.

Reply via email to