| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/erp/accessibility/ |
Upload File : |
"""
accessibility/middlewares.py
"""
from django.core.cache import cache
from accessibility.methods import check_is_accessible
from accessibility.models import ACCESSBILITY_FEATURE
ACCESSIBILITY_CACHE_USER_KEYS = {}
def update_accessibility_cache(cache_key, request):
"""
Cache for get all the queryset
"""
feature_accessible = {}
for accessibility, _display in ACCESSBILITY_FEATURE:
feature_accessible[accessibility] = check_is_accessible(
accessibility, cache_key, getattr(request.user, "employee_get")
)
cache.set(cache_key, feature_accessible)
class AccessibilityMiddleware:
"""
AccessibilityMiddleware
"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
session_key = request.session.session_key
if session_key:
cache_key = session_key + "accessibility_filter"
exists_user_cache_key = ACCESSIBILITY_CACHE_USER_KEYS.get(
request.user.id, []
)
if not exists_user_cache_key:
ACCESSIBILITY_CACHE_USER_KEYS[request.user.id] = exists_user_cache_key
if (
session_key
and getattr(request.user, "employee_get", None)
and not cache.get(cache_key)
):
exists_user_cache_key.append(cache_key)
update_accessibility_cache(cache_key, request)
response = self.get_response(request)
return response