refactor(access): cache app settings during perm check

ref: #469 #471
This commit is contained in:
2025-01-17 01:57:06 +09:30
parent fefde281be
commit 7f16a06131

View File

@ -264,6 +264,7 @@ class OrganizationPermissionMixin(
return False
_app_settings: any = None
def has_object_permission(self, request, view, obj):
@ -276,11 +277,15 @@ class OrganizationPermissionMixin(
object_organization: int = getattr(view.get_obj_organization( obj = obj ), 'id', None)
from settings.models.app_settings import AppSettings
if not self._app_settings:
app_settings = AppSettings.objects.get(
owner_organization = None
)
from settings.models.app_settings import AppSettings
app_settings = AppSettings.objects.get(
owner_organization = None
)
self._app_settings = app_settings
if object_organization:
@ -288,7 +293,7 @@ class OrganizationPermissionMixin(
object_organization
in view.get_permission_organizations( view.get_permission_required() )
or request.user.is_superuser
or getattr(app_settings.global_organization, 'id', 0) == int(object_organization)
or getattr(self._app_settings.global_organization, 'id', 0) == int(object_organization)
):
return True