Exposes the User.created attribute via API

Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
This commit is contained in:
Marcelo Moreira de Mello 2020-07-16 17:45:07 -04:00
parent f0aec0d444
commit 3803763c53
3 changed files with 17 additions and 0 deletions

View File

@ -257,6 +257,11 @@ class FieldLookupBackend(BaseFilterBackend):
if key in self.RESERVED_NAMES:
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
# when not capturing job event hosts M2M.
if queryset.model._meta.object_name == 'JobEvent' and key.startswith('hosts__name'):

View File

@ -127,9 +127,15 @@ def user_get_auditor_of_organizations(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('admin_of_organizations', user_get_admin_of_organizations)
User.add_to_class('auditor_of_organizations', user_get_auditor_of_organizations)
User.add_to_class('created', created)
@property

View File

@ -61,3 +61,9 @@ def test_user_cannot_update_last_login(patch, admin):
middleware=SessionMiddleware()
)
assert User.objects.get(pk=admin.pk).last_login is None
@pytest.mark.django_db
def test_user_verify_attribute_created(admin):
assert admin.created == admin.date_joined
User.objects.get(pk=admin.pk).created == User.objects.get(pk=admin.pk).date_joined