Skip to content

Commit 949ced8

Browse files
committed
feat: configuration - add generate_crud and fields handling for get APIs
1 parent 0d1c006 commit 949ced8

File tree

4 files changed

+9
-16
lines changed

4 files changed

+9
-16
lines changed

easy/controller/meta.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def __init__(self, service=None): # type: ignore
4040
"__Meta",
4141
{
4242
"generate_crud": getattr(_meta, "generate_crud", True),
43+
"model_exclude": getattr(_meta, "model_exclude", None),
4344
"model_fields": getattr(_meta, "model_fields", "__all__"),
4445
"model_recursive": getattr(_meta, "model_recursive", False),
4546
"model_join": getattr(_meta, "model_join", True),
@@ -242,7 +243,9 @@ class Meta
242243
self.model_exclude: Optional[Union[str]] = getattr(
243244
options, "model_exclude", None
244245
)
245-
self.model_fields: Optional[Union[str]] = getattr(options, "model_fields", None)
246+
self.model_fields: Optional[Union[str]] = getattr(
247+
options, "model_fields", "__all__"
248+
)
246249
self.model_join: Optional[Union[bool]] = getattr(options, "model_join", True)
247250
self.model_recursive: Optional[Union[bool]] = getattr(
248251
options, "model_recursive", False

easy/domain/serializers.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ def serialize_foreign_key(
6161
self, obj: models.Model, field: Any, referrers: Any = tuple()
6262
) -> Dict[Any, Any]:
6363
"""Serializes foreign key field of Django model instance"""
64-
if not self.show_field(obj, field.name):
65-
return {}
6664
try:
6765
if not hasattr(obj, field.name):
6866
return {field.name: None} # pragma: no cover
@@ -75,9 +73,8 @@ def serialize_foreign_key(
7573
except Exception as exc: # pragma: no cover
7674
logger.error(f"serialize_foreign_key error - {obj}", exc_info=exc)
7775
return {field.name: None}
78-
if hasattr(obj, "__Meta") and getattr(obj, "__Meta").get(
79-
"model_recursive", False
80-
):
76+
77+
if self.get_configuration(obj, "model_recursive", default=False):
8178
return {
8279
field.name: self.serialize_model_instance(related_instance, referrers)
8380
}
@@ -96,9 +93,7 @@ def serialize_many_relationship(
9693
for k, v in obj._prefetched_objects_cache.items(): # type: ignore
9794
field_name = k if hasattr(obj, k) else k + "_set"
9895
if v:
99-
if hasattr(obj, "__Meta") and getattr(obj, "__Meta").get(
100-
"model_join", True
101-
):
96+
if self.get_configuration(obj, "model_join", default=True):
10297
out[field_name] = self.serialize_queryset(v, referrers + (obj,))
10398
else:
10499
out[field_name] = [o.pk for o in v]
@@ -109,16 +104,14 @@ def serialize_many_relationship(
109104
return out
110105

111106
@staticmethod
112-
def get_configuration(obj: models.Model, _name: str) -> Any:
113-
_value = None
107+
def get_configuration(obj: models.Model, _name: str, default: Any = None) -> Any:
108+
_value = default if default else None
114109
if hasattr(obj, "__Meta"):
115110
_value = getattr(obj, "__Meta").get(_name, None)
116111
return _value
117112

118113
def get_model_fields_list(self, obj: models.Model) -> Any:
119114
model_fields = self.get_configuration(obj, "model_fields")
120-
if not model_fields:
121-
model_fields = "__all__"
122115
return model_fields
123116

124117
def get_model_exclude_list(self, obj: models.Model) -> Any:

tests/demo_app/controllers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def __init__(self, service: EventService):
2929

3030
class Meta:
3131
model = Event
32-
model_fields = "__all__"
3332
model_join = True
3433

3534

tests/demo_app/test_async_auto_crud_apis.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,7 @@ async def test_crud_default_create_some_fields(
190190
response = await client.get(
191191
f"/{client_type.id}",
192192
)
193-
from pprint import pprint
194193

195-
pprint(vars(response))
196194
assert response.status_code == 200
197195
assert response.json()["data"]["key"] == "Type"
198196
with pytest.raises(KeyError):

0 commit comments

Comments
 (0)