Merge pull request #6285 from ryanpetrello/user-readonly-last-login

make User.last_login read_only=True in its serializer

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
This commit is contained in:
softwarefactory-project-zuul[bot] 2020-03-13 19:24:58 +00:00 committed by GitHub
commit da48cffa12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 0 deletions

View File

@ -884,6 +884,9 @@ class UserSerializer(BaseSerializer):
fields = ('*', '-name', '-description', '-modified',
'username', 'first_name', 'last_name',
'email', 'is_superuser', 'is_system_auditor', 'password', 'ldap_dn', 'last_login', 'external_account')
extra_kwargs = {
'last_login': {'read_only': True}
}
def to_representation(self, obj):
ret = super(UserSerializer, self).to_representation(obj)

View File

@ -2,6 +2,7 @@ import pytest
from django.contrib.sessions.middleware import SessionMiddleware
from awx.main.models import User
from awx.api.versioning import reverse
@ -48,3 +49,15 @@ def test_create_delete_create_user(post, delete, admin):
response = post(reverse('api:user_list'), EXAMPLE_USER_DATA, admin, middleware=SessionMiddleware())
print(response.data)
assert response.status_code == 201
@pytest.mark.django_db
def test_user_cannot_update_last_login(patch, admin):
assert admin.last_login is None
patch(
reverse('api:user_detail', kwargs={'pk': admin.pk}),
{'last_login': '2020-03-13T16:39:47.303016Z'},
admin,
middleware=SessionMiddleware()
)
assert User.objects.get(pk=admin.pk).last_login is None