Skip to content

Commit dcdfd80

Browse files
committed
fix: lazy init and infinite recursion fixes
- Remove CasbinAdapterConfig initialization in ready - Fix infinite recursion in __getattribute__ - Prevent test runner crash in testing environment
1 parent 5196741 commit dcdfd80

3 files changed

Lines changed: 5 additions & 11 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ Based on [Officially Supported Databases](https://docs.djangoproject.com/en/3.0/
2828
pip install casbin-django-orm-adapter
2929
```
3030

31-
Add `casbin_adapter.apps.CasbinAdapterConfig` to your `INSTALLED_APPS`
31+
Add `casbin_adapter` to your `INSTALLED_APPS`
3232

3333
```python
3434
# settings.py
3535
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
3636

3737
INSTALLED_APPS = [
3838
...
39-
'casbin_adapter.apps.CasbinAdapterConfig',
39+
'casbin_adapter',
4040
...
4141
]
4242

casbin_adapter/apps.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,3 @@
44

55
class CasbinAdapterConfig(AppConfig):
66
name = "casbin_adapter"
7-
8-
def ready(self):
9-
from .enforcer import initialize_enforcer
10-
11-
db_alias = getattr(settings, "CASBIN_DB_ALIAS", "default")
12-
initialize_enforcer(db_alias)

casbin_adapter/enforcer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
class ProxyEnforcer(Enforcer):
1414
_initialized = False
15-
db_alias = "default"
15+
db_alias = getattr(settings, "CASBIN_DB_ALIAS", "default")
1616

1717
def __init__(self, *args, **kwargs):
1818
if self._initialized:
@@ -43,9 +43,9 @@ def _load(self):
4343
self.set_role_manager(role_manager)
4444

4545
def __getattribute__(self, name):
46-
safe_methods = ["__init__", "_load", "_initialized"]
46+
safe_methods = ["__init__", "_load", "_initialized", "__class__"]
4747
if not super().__getattribute__("_initialized") and name not in safe_methods:
48-
initialize_enforcer(self.db_alias)
48+
initialize_enforcer(super().__getattribute__("db_alias"))
4949
if not super().__getattribute__("_initialized"):
5050
raise Exception(
5151
(

0 commit comments

Comments
 (0)