From 6f8600f8cc56c31425ecbeb82d7993d0a50bd4d7 Mon Sep 17 00:00:00 2001 From: matthewhegarty Date: Wed, 10 Jul 2019 16:11:47 +0100 Subject: [PATCH] optimization: avoid setting role_name for each function" --- drf_roles/mixins.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drf_roles/mixins.py b/drf_roles/mixins.py index b5c0889..8d30a14 100644 --- a/drf_roles/mixins.py +++ b/drf_roles/mixins.py @@ -29,8 +29,9 @@ def __init__(self, **_kwargs): def _call_role_fn(self, fn, *args, **kwargs): """Attempts to call a role-scoped method""" try: - role_name = self._get_role(self.request.user) - role_fn = "{}_for_{}".format(fn, role_name) + if not getattr(self, '_role_name', None): + self._role_name = self._get_role(self.request.user) + role_fn = "{}_for_{}".format(fn, self._role_name) return getattr(self, role_fn)(*args, **kwargs) except (AttributeError, RoleError): return getattr(super(RoleViewSetMixin, self), fn)(*args, **kwargs)