Можно ли получить доступ к информации декоратора метода в Python?

Я разработал метод RBAC в проекте Django, используя следующую концепцию:

  • Объявите атрибут permission_roles в теле View/Viewset
  • .
  • Этот атрибут получает информацию о ролях пользователей, которые могут получить доступ к каждому методу/действию представления (например: 'create': (RoleChoices.ADMIN))

Тогда мне пришлось подумать, как сообщить фронтенду о возможностях роли.

Я подумал об использовании нового класса модели Permission, который хранит массив ролей и имеет уникальный идентификатор имени (например: Permission(action="user_management_list", roles=[1,2,3]))

Для наполнения этой модели я использовал метод autodiscover Django + декоратор, который находится над моими методами/действиями представления:


    @allowed_roles('user_management_list', [RoleChoices.ADMIN])
    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)

Теперь я думаю о том, как объединить обе функциональности, упростив пользовательское разрешение RBAC с помощью имени действия + роли пользователя запроса и запроса непосредственно к БД (позже я буду использовать также стратегию кэширования для снижения нагрузки на БД).

Но проблема в том, как я могу получить доступ к первому параметру декоратора (это имя действия)?

Вернуться на верх