Skip to content

Commit 09db661

Browse files
authored
fix(introspection): editable attribute now determine is_readonly (#168)
1 parent 11aec3f commit 09db661

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

src/_example/django/django_demo/app/flask_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class FlaskCustomer(models.Model):
2929
birthday_date = models.DateTimeField(blank=True, null=True)
3030
age = models.IntegerField(blank=True, null=True)
3131
is_vip = models.BooleanField(blank=True, null=True)
32-
avatar = models.BinaryField(blank=True, null=True)
32+
avatar = models.BinaryField(blank=True, null=True, editable=True)
3333
addresses = models.ManyToManyField("FlaskAddress", through="FlaskCustomersAddresses", related_name="customers")
3434

3535
class Meta:

src/_example/django/django_demo/app/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class Customer(AutoUpdatedCreatedAt):
9898
# age = should_be computed
9999
# addresses = models.ManyToManyField(Address, related_name="customers")
100100
is_vip = models.BooleanField(default=False)
101-
avatar = models.BinaryField(null=True, blank=True)
101+
avatar = models.BinaryField(null=True, blank=True, editable=True)
102102

103103

104104
class Order(AutoUpdatedCreatedAt):

src/datasource_django/forestadmin/datasource_django/utils/model_introspection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def _build_is_read_only(field: Field) -> bool:
5050
return field.auto_now is True or field.auto_now_add is True
5151
if GeneratedField is not None and isinstance(field, GeneratedField):
5252
return True
53-
return False
53+
return not field.editable
5454

5555
@classmethod
5656
def _build_validations(cls, field: Field) -> List[Validation]:

src/datasource_django/tests/utils/test_django_model_introspection.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ def test_build_should_handle_read_only_for_date_auto_now(self):
6666

6767
self.assertEqual(field_schema["is_read_only"], True)
6868

69+
def test_build_should_handle_read_only_field_is_editable(self):
70+
"""readonly"""
71+
field = models.CharField(max_length=254, editable=False)
72+
field_schema = FieldFactory.build(field)
73+
74+
self.assertEqual(field_schema["is_read_only"], True)
75+
76+
def test_build_should_handle_read_only_field_is_not_editable(self):
77+
"""readonly"""
78+
field = models.CharField(max_length=254, editable=True)
79+
field_schema = FieldFactory.build(field)
80+
81+
self.assertEqual(field_schema["is_read_only"], False)
82+
6983
def test_build_should_handle_present_validator(self):
7084
"""validator"""
7185
field = models.DateField()

0 commit comments

Comments
 (0)