Django 1.10 RemovedInDjango20Warning: Using user.is_authenticated() and user.is_anonymous() as a method is deprecated. · Issue #4354 · encode/django-rest-framework (original) (raw)

user.is_authenticated() is used throughout code (I first noticed it in permissions.py), but in Django 1.10 is_authenticated is now a property, rather than a method.

This causes a warning in Django 1.10, but in Django 2.0 this code will cease to work.

The full exception message is Using user.is_authenticated() and user.is_anonymous() as a method is deprecated. Remove the parentheses to use it as an attribute.

Ref: https://docs.djangoproject.com/en/1.10/releases/1.10/#using-user-is-authenticated-and-user-is-anonymous-as-methods

Checklist

Steps to reproduce

I imagine the easiest way to reproduce this would be to just run DRF's tests and look out for the warnings, or to run tests with -Werror. I reproduced the issue by running a test that calls an API endpoint with APIView as the parent class and with the IsAuthenticated permissions class.

Expected behavior

No warning.

Actual behavior

RemovedInDjango20Warning: Using user.is_authenticated() and user.is_anonymous() as a method is deprecated. Remove the parentheses to use it as an attribute.