misc: allow integer id when looking up user with roles (#84777)
gitea/wcs/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2023-12-15 09:27:22 +01:00
parent 3504699bc1
commit f124b2befe
2 changed files with 27 additions and 1 deletions

View File

@ -411,6 +411,30 @@ def test_datasource_users(pub):
}
assert datasource.get_display_value('2') == 'John Doe 1'
# by numeric id
assert datasource.get_structured_value(1) == {
'id': 1,
'text': 'John Doe 0',
'user_name_identifier_0': 'abc0',
'user_nameid': 'abc0',
'user_admin_access': False,
'user_backoffice_access': False,
'user_display_name': 'John Doe 0',
'user_email': None,
}
assert datasource.get_display_value(1) == 'John Doe 0'
assert datasource.get_structured_value(2) == {
'id': 2,
'text': 'John Doe 1',
'user_name_identifier_0': 'abc1',
'user_nameid': 'abc1',
'user_admin_access': False,
'user_backoffice_access': False,
'user_display_name': 'John Doe 1',
'user_email': None,
}
assert datasource.get_display_value(2) == 'John Doe 1'
datasource.users_included_roles = [role1.id]
datasource.users_excluded_roles = [role2.id]
datasource.store()

View File

@ -201,7 +201,9 @@ class User(StorableObject):
try:
if 0 < int(user_id) < 2**31:
# user_id may refer to the id column
criterias.append(Or([Equal('id', int(user_id)), Intersects('name_identifiers', [user_id])]))
criterias.append(
Or([Equal('id', int(user_id)), Intersects('name_identifiers', [str(user_id)])])
)
except ValueError:
criterias.append(Intersects('name_identifiers', [user_id])) # user_id considered as name_id