backoffice: don't include deleted users in listing (#42393)
This commit is contained in:
parent
2435cbc032
commit
0791d9af7a
|
@ -325,26 +325,28 @@ class UsersDirectory(Directory):
|
|||
if set(possible_roles) == set(checked_roles):
|
||||
checked_roles = None
|
||||
|
||||
total_count = get_publisher().user_class.count()
|
||||
criterias = [st.Null('deleted_timestamp')]
|
||||
|
||||
total_count = get_publisher().user_class.count(criterias)
|
||||
|
||||
# declarative criteria to only get checked roles
|
||||
criterias = []
|
||||
if checked_roles:
|
||||
roles_criterias = []
|
||||
if 'admin' in checked_roles:
|
||||
criterias.append(st.Equal('is_admin', True))
|
||||
roles_criterias.append(st.Equal('is_admin', True))
|
||||
if 'none' in checked_roles:
|
||||
criterias.append(st.And([
|
||||
roles_criterias.append(st.And([
|
||||
st.Equal('is_admin', False), st.Equal('roles', [])]))
|
||||
other_roles = [x for x in checked_roles if x not in ('admin', 'none')]
|
||||
if other_roles:
|
||||
criterias.append(st.Intersects('roles', other_roles))
|
||||
criterias = [st.Or(criterias)]
|
||||
roles_criterias.append(st.Intersects('roles', other_roles))
|
||||
criterias.append(st.Or(roles_criterias))
|
||||
|
||||
query = get_request().form.get('q')
|
||||
if query:
|
||||
criterias.append(st.Or([st.ILike('name', query), st.ILike('email', query)]))
|
||||
|
||||
if criterias:
|
||||
if len(criterias) > 1:
|
||||
filtered_count = get_publisher().user_class.count(criterias)
|
||||
if filtered_count < offset:
|
||||
# reset offset if we are past the number of elements
|
||||
|
@ -360,7 +362,7 @@ class UsersDirectory(Directory):
|
|||
r += htmltext('<ul>')
|
||||
r += htmltext('<li>%s %s</li>') % (_('Total number of users:'), total_count)
|
||||
|
||||
if criterias:
|
||||
if len(criterias) > 1:
|
||||
r += htmltext('<li>%s %s</li>') % (_('Number of filtered users:'),
|
||||
filtered_count)
|
||||
|
||||
|
|
Loading…
Reference in New Issue