#29132: Incorrect update_last_login signal handler behavior when using custom 
model with an arbitrary last_login attribute (not a Field instance)
               Reporter:  Mikhail    |          Owner:  nobody
  Porokhovnichenko                   |
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  2.0
  contrib.auth                       |       Keywords:  last_login,
               Severity:  Normal     |  update_last_login, signals,
           Triage Stage:             |  user_logged_in
  Unreviewed                         |      Has patch:  0
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
 **Please note! It's not a  #26823 duplicate, and it's just an issue
 related this one.**

 In the current implementation, a signal handler connects with a user model
 when this model has a `last_login` field.

 if hasattr(get_user_model(), 'last_login'):
     from .models import update_last_login

 And it would work when there isn't a `last_login` attribute in the custom
 user model. But what if I've inherited my custom model from `AbstractUser`
 and dropped the `last_login` by setting it to `None`?

 class User(AbstractBaseUser):
     last_login = None     # Drop ``last_login`` field off

 Technically, the model has a ``last_login`` attribute, but it's not a

 Suggesting change the check condition something like that:
 last_login = getattr(get_user_model(), 'last_login', None)
 if last_login is not None:
     # ...
 or even
 if isisintance(last_login, models.Field):
     # ...

Ticket URL: <https://code.djangoproject.com/ticket/29132>
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
For more options, visit https://groups.google.com/d/optout.

Reply via email to