diff --git a/apps/static/img/login_image.png b/apps/static/img/login_image.png index 1cb86eb5f..8188757be 100644 Binary files a/apps/static/img/login_image.png and b/apps/static/img/login_image.png differ diff --git a/apps/users/filters.py b/apps/users/filters.py index 434faf847..7672826d4 100644 --- a/apps/users/filters.py +++ b/apps/users/filters.py @@ -1,8 +1,10 @@ +from django.utils.translation import gettext as _ from django_filters import rest_framework as filters from common.drf.filters import BaseFilterSet -from users.models.user import User +from common.utils import is_uuid from rbac.models import Role +from users.models.user import User class UserFilter(BaseFilterSet): @@ -17,19 +19,34 @@ class UserFilter(BaseFilterSet): ) @staticmethod - def filter_system_roles(queryset, name, value): + def get_role(value): + from rbac.builtin import BuiltinRole + roles = BuiltinRole.get_roles() + for role in roles.values(): + if _(role.name) == value: + return role + + if is_uuid(value): + return Role.objects.filter(id=value).first() + else: + return Role.objects.filter(name=value).first() + + def filter_system_roles(self, queryset, name, value): + role = self.get_role(value) + if not role: + return queryset.none() queryset = queryset.prefetch_related('role_bindings') \ - .filter( - role_bindings__role__name=value, - role_bindings__role__scope='system' - ).distinct() + .filter(role_bindings__role_id=role.id) \ + .filter(role_bindings__role__scope='system') \ + .distinct() return queryset - @staticmethod - def filter_org_roles(queryset, name, value): + def filter_org_roles(self, queryset, name, value): + role = self.get_role(value) + if not role: + return queryset.none() queryset = queryset.prefetch_related('role_bindings') \ - .filter( - role_bindings__role__name=value, - role_bindings__role__scope='org' - ).distinct() + .filter(role_bindings__role_id=role.id) \ + .filter(role_bindings__role__scope='org') \ + .distinct() return queryset