From 289ffdc08fc263781414a13b34e1c2a0f94cca48 Mon Sep 17 00:00:00 2001 From: Lautaro Nahuel Dapino <43883304+lautarodapin@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:47:04 -0300 Subject: [PATCH 1/6] Handle generated field --- djangoql/schema.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/djangoql/schema.py b/djangoql/schema.py index 6af9982..35c6ba8 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -10,6 +10,7 @@ from django.db.models import ManyToManyRel, ManyToOneRel from django.db.models.fields.related import ForeignObjectRel from django.utils.timezone import get_current_timezone +from django.db.models.fields.generated import GeneratedField from .ast import Comparison, Const, List, Logical, Name, Node from .compat import text_type @@ -417,6 +418,8 @@ def get_field_instance(self, model, field_name): return field_cls(**field_kwargs) def get_field_cls(self, field): + if isinstance(field, GeneratedField): + field = field.output_field str_fields = ( models.CharField, models.TextField, From 604911788776c6b1f34e73d6047039161594f4be Mon Sep 17 00:00:00 2001 From: Lautaro Nahuel Dapino <43883304+lautarodapin@users.noreply.github.com> Date: Thu, 7 Nov 2024 20:55:45 -0300 Subject: [PATCH 2/6] Update schema.py --- djangoql/schema.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangoql/schema.py b/djangoql/schema.py index 35c6ba8..bb4cb25 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -8,9 +8,9 @@ from django.core.exceptions import FieldDoesNotExist from django.db import models from django.db.models import ManyToManyRel, ManyToOneRel +from django.db.models.fields.generated import GeneratedField from django.db.models.fields.related import ForeignObjectRel from django.utils.timezone import get_current_timezone -from django.db.models.fields.generated import GeneratedField from .ast import Comparison, Const, List, Logical, Name, Node from .compat import text_type From 2d44cde47512cd523400ade32476f53a45315003 Mon Sep 17 00:00:00 2001 From: lautarodapin-magoya Date: Fri, 8 Nov 2024 09:13:17 -0300 Subject: [PATCH 3/6] try catch import to support less than v5 --- djangoql/schema.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/djangoql/schema.py b/djangoql/schema.py index bb4cb25..a5ba04f 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -8,7 +8,6 @@ from django.core.exceptions import FieldDoesNotExist from django.db import models from django.db.models import ManyToManyRel, ManyToOneRel -from django.db.models.fields.generated import GeneratedField from django.db.models.fields.related import ForeignObjectRel from django.utils.timezone import get_current_timezone @@ -16,6 +15,11 @@ from .compat import text_type from .exceptions import DjangoQLSchemaError +try: + from django.db.models.fields.generated import GeneratedField # Django >= 5.0 +except ImportError: + GeneratedField = None + class DjangoQLField(object): """ From 4b06e1574472d6c698329e2d6de7b3f7fca7bda3 Mon Sep 17 00:00:00 2001 From: lautarodapin Date: Fri, 8 Nov 2024 21:53:47 -0300 Subject: [PATCH 4/6] lint --- djangoql/schema.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/djangoql/schema.py b/djangoql/schema.py index a5ba04f..8628405 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -16,7 +16,9 @@ from .exceptions import DjangoQLSchemaError try: - from django.db.models.fields.generated import GeneratedField # Django >= 5.0 + from django.db.models.fields.generated import ( + GeneratedField # Django >= 5.0 + ) except ImportError: GeneratedField = None From 87a9194f09ae3adc139f88c7489dc32c391cf454 Mon Sep 17 00:00:00 2001 From: lautarodapin Date: Sat, 9 Nov 2024 22:17:59 -0300 Subject: [PATCH 5/6] isort --- djangoql/schema.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/djangoql/schema.py b/djangoql/schema.py index 8628405..2dc6be0 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -15,10 +15,10 @@ from .compat import text_type from .exceptions import DjangoQLSchemaError + try: - from django.db.models.fields.generated import ( + from django.db.models.fields.generated import \ GeneratedField # Django >= 5.0 - ) except ImportError: GeneratedField = None From 8cbc73e809569919fad3f6660be3e15b195ff24d Mon Sep 17 00:00:00 2001 From: lautarodapin Date: Sat, 9 Nov 2024 22:22:12 -0300 Subject: [PATCH 6/6] check if exists --- djangoql/schema.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangoql/schema.py b/djangoql/schema.py index 2dc6be0..4f8436e 100644 --- a/djangoql/schema.py +++ b/djangoql/schema.py @@ -424,7 +424,7 @@ def get_field_instance(self, model, field_name): return field_cls(**field_kwargs) def get_field_cls(self, field): - if isinstance(field, GeneratedField): + if GeneratedField and isinstance(field, GeneratedField): field = field.output_field str_fields = ( models.CharField,