Skip to content

Commit faa4c2f

Browse files
committed
feat(django): support django 5.1
1 parent aa91ccc commit faa4c2f

File tree

12 files changed

+36
-4
lines changed

12 files changed

+36
-4
lines changed

src/_example/django/django_demo/django_demo/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
"django.middleware.common.CommonMiddleware",
9090
"django.middleware.csrf.CsrfViewMiddleware",
9191
"django.contrib.auth.middleware.AuthenticationMiddleware",
92+
# "django.contrib.auth.middleware.LoginRequiredMiddleware",
9293
"django.contrib.messages.middleware.MessageMiddleware",
9394
"django.middleware.clickjacking.XFrameOptionsMiddleware",
9495
]

src/datasource_django/forestadmin/datasource_django/utils/type_converter.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Dict, Set, Tuple
22

3+
import django
34
from django.db import models
45
from forestadmin.datasource_django.exception import DjangoDatasourceException
56
from forestadmin.datasource_toolkit.interfaces.fields import ColumnAlias, Operator, PrimitiveType
@@ -25,11 +26,12 @@ class ConverterException(DjangoDatasourceException):
2526
if postgres_fields is not None:
2627
POSTGRES_TYPE: Dict[type, PrimitiveType] = {
2728
# specific postgres fields
28-
postgres_fields.CIText: PrimitiveType.STRING,
29-
postgres_fields.CIEmailField: PrimitiveType.STRING,
3029
postgres_fields.HStoreField: PrimitiveType.JSON,
3130
# postgres_fields.RangeField and subclassed ones not handles
3231
}
32+
if django.VERSION[0] < 5 or (django.VERSION[0] == 5 and django.VERSION[1] < 1):
33+
POSTGRES_TYPE[postgres_fields.CIText] = PrimitiveType.STRING
34+
POSTGRES_TYPE[postgres_fields.CIEmailField] = PrimitiveType.STRING
3335
else:
3436
POSTGRES_TYPE: Dict[type, PrimitiveType] = {}
3537

src/datasource_django/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ include = "forestadmin"
1717
[tool.poetry.dependencies]
1818
python = ">=3.8,<3.13"
1919
typing-extensions = "~=4.2"
20-
django = ">=3.2,<6.0"
20+
django = ">=3.2,<5.2"
2121
forestadmin-datasource-toolkit = "1.16.1"
2222
forestadmin-agent-toolkit = "1.16.1"
2323

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
try:
2+
from django.contrib.auth.decorators import login_not_required as no_django_login_required # type: ignore
3+
except ImportError:
4+
5+
def no_django_login_required(fn):
6+
return fn

src/django_agent/forestadmin/django_agent/views/actions.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
from django.http import HttpRequest
33
from forestadmin.django_agent.apps import DjangoAgentApp
44
from forestadmin.django_agent.utils.converter import convert_request, convert_response
5+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
56

67

8+
@no_django_login_required
79
@async_to_sync
810
async def hook(request: HttpRequest, **kwargs):
911
resource = (await DjangoAgentApp.get_agent().get_resources())["actions"]
1012
response = await resource.dispatch(convert_request(request, kwargs), "hook")
1113
return convert_response(response)
1214

1315

16+
@no_django_login_required
1417
@async_to_sync
1518
async def execute(request: HttpRequest, **kwargs):
1619
resource = (await DjangoAgentApp.get_agent().get_resources())["actions"]

src/django_agent/forestadmin/django_agent/views/authentication.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
from django.http import HttpRequest
33
from forestadmin.django_agent.apps import DjangoAgentApp
44
from forestadmin.django_agent.utils.converter import convert_request, convert_response
5+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
56

67

8+
@no_django_login_required
79
@transaction.non_atomic_requests
810
async def authentication(request: HttpRequest):
911
resource = (await DjangoAgentApp.get_agent().get_resources())["authentication"]
@@ -15,6 +17,7 @@ async def authentication(request: HttpRequest):
1517
authentication.csrf_exempt = True
1618

1719

20+
@no_django_login_required
1821
@transaction.non_atomic_requests
1922
async def callback(request: HttpRequest):
2023
resource = (await DjangoAgentApp.get_agent().get_resources())["authentication"]

src/django_agent/forestadmin/django_agent/views/charts.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
from django.http import HttpRequest
33
from forestadmin.django_agent.apps import DjangoAgentApp
44
from forestadmin.django_agent.utils.converter import convert_request, convert_response
5+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
56

67

8+
@no_django_login_required
79
@transaction.non_atomic_requests
810
async def chart_collection(request: HttpRequest, **kwargs):
911
resource = (await DjangoAgentApp.get_agent().get_resources())["collection_charts"]
1012
response = await resource.dispatch(convert_request(request, kwargs), "add")
1113
return convert_response(response)
1214

1315

16+
@no_django_login_required
1417
@transaction.non_atomic_requests
1518
async def chart_datasource(request: HttpRequest, **kwargs):
1619
resource = (await DjangoAgentApp.get_agent().get_resources())["datasource_charts"]

src/django_agent/forestadmin/django_agent/views/crud.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
from forestadmin.django_agent.apps import DjangoAgentApp
55
from forestadmin.django_agent.utils.converter import convert_request, convert_response
66
from forestadmin.django_agent.utils.dispatcher import get_dispatcher_method
7+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
78

89

10+
@no_django_login_required
911
@async_to_sync
1012
async def detail(request: HttpRequest, **kwargs):
1113
resource = (await DjangoAgentApp.get_agent().get_resources())["crud"]
@@ -14,20 +16,23 @@ async def detail(request: HttpRequest, **kwargs):
1416
return convert_response(response)
1517

1618

19+
@no_django_login_required
1720
@transaction.non_atomic_requests
1821
async def count(request: HttpRequest, **kwargs):
1922
resource = (await DjangoAgentApp.get_agent().get_resources())["crud"]
2023
response = await resource.dispatch(convert_request(request, kwargs), "count")
2124
return convert_response(response)
2225

2326

27+
@no_django_login_required
2428
@transaction.non_atomic_requests
2529
async def csv(request: HttpRequest, **kwargs):
2630
resource = (await DjangoAgentApp.get_agent().get_resources())["crud"]
2731
response = await resource.dispatch(convert_request(request, kwargs), "csv")
2832
return convert_response(response)
2933

3034

35+
@no_django_login_required
3136
@async_to_sync
3237
async def list_(request: HttpRequest, **kwargs):
3338
resource = (await DjangoAgentApp.get_agent().get_resources())["crud"]

src/django_agent/forestadmin/django_agent/views/crud_related.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,26 @@
44
from forestadmin.django_agent.apps import DjangoAgentApp
55
from forestadmin.django_agent.utils.converter import convert_request, convert_response
66
from forestadmin.django_agent.utils.dispatcher import get_dispatcher_method
7+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
78

89

10+
@no_django_login_required
911
@transaction.non_atomic_requests
1012
async def count(request: HttpRequest, **kwargs):
1113
resource = (await DjangoAgentApp.get_agent().get_resources())["crud_related"]
1214
response = await resource.dispatch(convert_request(request, kwargs), "count")
1315
return convert_response(response)
1416

1517

18+
@no_django_login_required
1619
@transaction.non_atomic_requests
1720
async def csv(request: HttpRequest, **kwargs):
1821
resource = (await DjangoAgentApp.get_agent().get_resources())["crud_related"]
1922
response = await resource.dispatch(convert_request(request, kwargs), "csv")
2023
return convert_response(response)
2124

2225

26+
@no_django_login_required
2327
@async_to_sync
2428
async def list_(request: HttpRequest, **kwargs):
2529
resource = (await DjangoAgentApp.get_agent().get_resources())["crud_related"]

src/django_agent/forestadmin/django_agent/views/index.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
from django.db import transaction
22
from django.http import HttpRequest, HttpResponse
33
from forestadmin.django_agent.apps import DjangoAgentApp
4+
from forestadmin.django_agent.utils.views_decorator import no_django_login_required # type: ignore
45

56

7+
@no_django_login_required
68
@transaction.non_atomic_requests
79
async def index(request: HttpRequest):
810
return HttpResponse(status=200)
911

1012

13+
@no_django_login_required
1114
@transaction.non_atomic_requests
1215
async def scope_cache_invalidation(request: HttpRequest):
1316
DjangoAgentApp.get_agent()._permission_service.invalidate_cache("forest.scopes")

0 commit comments

Comments
 (0)