[Django] #29782: Better error message when filtering users with AnonymousUser

6 views
Skip to first unread message

Django

unread,
Sep 21, 2018, 4:08:08 PM9/21/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: nobody
Type: | Status: new
Uncategorized |
Component: Database | Version: 2.1
layer (models, ORM) |
Severity: Normal | Keywords:
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 1
UI/UX: 0 |
-------------------------------------+-------------------------------------
When trying to filter a model with User ForeignKey on AnonymousUser, we
get a cryptic:
`Exception Value: int() argument must be a string or a number, not
'AnonymousUser'`

For example:
https://stackoverflow.com/questions/3439709/how-to-cater-for-
anonymoususer-when-filtering-based-on-user

I think this deserves a better error message, for example something like:
`ValueError("Can't filter User field with AnonymousUser")`.

--
Ticket URL: <https://code.djangoproject.com/ticket/29782>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Sep 22, 2018, 6:22:52 PM9/22/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner:
| ramonsaraiva
Type: Uncategorized | Status: assigned
Component: Database layer | Version: 2.1
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by ramonsaraiva):

* status: new => assigned
* owner: nobody => ramonsaraiva


--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:1>

Django

unread,
Sep 24, 2018, 4:35:57 AM9/24/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master

(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

* version: 2.1 => master
* type: Uncategorized => Cleanup/optimization
* stage: Unreviewed => Accepted


Comment:

Yep. Great. Better error messages FTW! 🙂

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:2>

Django

unread,
Sep 24, 2018, 5:48:36 PM9/24/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Ramon Saraiva):

Still trying to understand what piece of code would be responsible for
this behaviour.
I wonder if overwriting `AnonymousUser`'s `__int__` would be too naive?

Since `AnonymousUser` is not inheriting from `Model`, it happens that its
instance is passed all the way over to the field `get_prep_value` and then
`int(value -> AnonymousUser)` is called.
Any guidance/idea about what should be responsible for doing this
validation?

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:3>

Django

unread,
Sep 25, 2018, 2:55:24 PM9/25/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

* easy: 1 => 0


Comment:

An obvious implementation doesn't come to mind. I'm not sure if it's
feasible.

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:4>

Django

unread,
Sep 25, 2018, 2:58:20 PM9/25/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Adam (Chainz) Johnson):

{{AnonymousUser.__int__}} might work, if you make the error message more
generic like {{TypeError("Cannot cast AnonymousUser to int. Are you trying
to use it in place of User?")}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:5>

Django

unread,
Sep 25, 2018, 3:38:13 PM9/25/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Ramon Saraiva):

Ok, I'll work on that patch and we can continue from there.

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:6>

Django

unread,
Sep 25, 2018, 8:11:17 PM9/25/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: assigned
Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

* has_patch: 0 => 1


Comment:

[https://github.com/django/django/pull/10443 PR]

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:7>

Django

unread,
Sep 26, 2018, 3:59:33 PM9/26/18
to django-...@googlegroups.com
#29782: Better error message when filtering users with AnonymousUser
-------------------------------------+-------------------------------------
Reporter: Sveder | Owner: Ramon
Type: | Saraiva
Cleanup/optimization | Status: closed

Component: Database layer | Version: master
(models, ORM) |
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham <timograham@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"2349cbd909c387d2d05cda20ce8d0c63c1b1c6c4" 2349cbd9]:
{{{
#!CommitTicketReference repository=""
revision="2349cbd909c387d2d05cda20ce8d0c63c1b1c6c4"
Fixed #29782 -- Added better error message when filtering queryset with
AnonymousUser.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29782#comment:8>

Reply all
Reply to author
Forward
0 new messages