mirror of
https://github.com/ansible/awx.git
synced 2026-03-19 09:57:33 -02:30
Merge pull request #7635 from tchellomello/user_API_created
Exposes created attribute via API for User django ORM Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
This commit is contained in:
@@ -257,6 +257,11 @@ class FieldLookupBackend(BaseFilterBackend):
|
|||||||
if key in self.RESERVED_NAMES:
|
if key in self.RESERVED_NAMES:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# HACK: make `created` available via API for the Django User ORM model
|
||||||
|
# so it keep compatiblity with other objects which exposes the `created` attr.
|
||||||
|
if queryset.model._meta.object_name == 'User' and key.startswith('created'):
|
||||||
|
key = key.replace('created', 'date_joined')
|
||||||
|
|
||||||
# HACK: Make job event filtering by host name mostly work even
|
# HACK: Make job event filtering by host name mostly work even
|
||||||
# when not capturing job event hosts M2M.
|
# when not capturing job event hosts M2M.
|
||||||
if queryset.model._meta.object_name == 'JobEvent' and key.startswith('hosts__name'):
|
if queryset.model._meta.object_name == 'JobEvent' and key.startswith('hosts__name'):
|
||||||
|
|||||||
@@ -127,9 +127,15 @@ def user_get_auditor_of_organizations(user):
|
|||||||
return Organization.objects.filter(auditor_role__members=user)
|
return Organization.objects.filter(auditor_role__members=user)
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def created(user):
|
||||||
|
return user.date_joined
|
||||||
|
|
||||||
|
|
||||||
User.add_to_class('organizations', user_get_organizations)
|
User.add_to_class('organizations', user_get_organizations)
|
||||||
User.add_to_class('admin_of_organizations', user_get_admin_of_organizations)
|
User.add_to_class('admin_of_organizations', user_get_admin_of_organizations)
|
||||||
User.add_to_class('auditor_of_organizations', user_get_auditor_of_organizations)
|
User.add_to_class('auditor_of_organizations', user_get_auditor_of_organizations)
|
||||||
|
User.add_to_class('created', created)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from datetime import date
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from django.contrib.sessions.middleware import SessionMiddleware
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
@@ -61,3 +63,21 @@ def test_user_cannot_update_last_login(patch, admin):
|
|||||||
middleware=SessionMiddleware()
|
middleware=SessionMiddleware()
|
||||||
)
|
)
|
||||||
assert User.objects.get(pk=admin.pk).last_login is None
|
assert User.objects.get(pk=admin.pk).last_login is None
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_user_verify_attribute_created(admin, get):
|
||||||
|
assert admin.created == admin.date_joined
|
||||||
|
resp = get(
|
||||||
|
reverse('api:user_detail', kwargs={'pk': admin.pk}),
|
||||||
|
admin
|
||||||
|
)
|
||||||
|
assert resp.data['created'] == admin.date_joined
|
||||||
|
|
||||||
|
past = date(2020, 1, 1).isoformat()
|
||||||
|
for op, count in (('gt', 1), ('lt', 0)):
|
||||||
|
resp = get(
|
||||||
|
reverse('api:user_list') + f'?created__{op}={past}',
|
||||||
|
admin
|
||||||
|
)
|
||||||
|
assert resp.data['count'] == count
|
||||||
|
|||||||
Reference in New Issue
Block a user