Bridgekeeper

raw JSON →
0.9 verified Mon Apr 27 auth: no python

Bridgekeeper is a Django permissions library that allows rules to be defined as QuerySet filters, enabling efficient, database-level permission checks. Current version is 0.9, compatible with Python >=3.5 and Django 2.0+. Released under MIT License; maintained irregularly with no recent updates.

pip install bridgekeeper
error AttributeError: module 'bridgekeeper' has no attribute 'rules'
cause Importing rules from the wrong location or outdated library version.
fix
Use 'from bridgekeeper import rules' (available since 0.8). Upgrade: pip install --upgrade bridgekeeper
error django.core.exceptions.ImproperlyConfigured: The PERMISSIONS setting must be a dict.
cause PERMISSIONS not defined or set incorrectly in Django settings.
fix
Add 'PERMISSIONS = {}' to settings.py, even if empty.
gotcha Bridgekeeper expects a dictionary named PERMISSIONS in Django settings. If not defined, no permissions are registered.
fix Define PERMISSIONS in settings.py, e.g., PERMISSIONS = {'my_perm': my_permission}
gotcha Rules in Bridgekeeper are applied as QuerySet filters, not as Python predicates. Mixing logic that cannot be expressed as a filter will cause unexpected behavior.
fix Ensure rules return Q objects or booleans that can be translated to database filters.
deprecated Bridgekeeper does not actively support Django 4.x or later; test compatibility before upgrading.
fix Consider alternative libraries like django-guardian or django-rules for newer Django versions.

Create a permission that requires the user to be authenticated.

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
import django
django.setup()

from bridgekeeper import Permission
from bridgekeeper.rules import is_authenticated

# Define a simple permission
view_dashboard = Permission(
    'view_dashboard',
    is_authenticated
)

# In Django settings, define PERMISSIONS dict
# PERMISSIONS = {'view_dashboard': view_dashboard}