Skip to content

Commit 7f883c3

Browse files
committed
fixed module template filters and global variables and fixed reflector get_all computation
1 parent 61ff5c0 commit 7f883c3

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

ellar/core/modules/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(cls, name, bases, namespace) -> None:
2020
cls.__MODULE_FIELDS__: t.Dict = {}
2121

2222
for base in reversed(bases):
23-
ModuleBaseBuilder(cls).build(getattr(base, MODULE_FIELDS, {}))
23+
ModuleBaseBuilder(cls).build(getattr(base, MODULE_FIELDS, base.__dict__))
2424
ModuleBaseBuilder(cls).build(namespace)
2525

2626

ellar/core/services/reflector.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ def get_all_and_merge(
3232
return []
3333

3434
if len(metadata_collection) == 1:
35-
return [metadata_collection[0]]
35+
content = metadata_collection[0]
36+
if isinstance(content, (list, tuple, set, dict)):
37+
return content
38+
39+
return [content]
3640

3741
@t.no_type_check
3842
def inline_function(previous_item: t.Any, next_item: t.Any) -> t.Any:

tests/test_reflector.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,30 @@ def test_should_return_an_empty_array_when_there_are_no_targets():
2525
assert reflector.get_all_and_merge(key, *[]) == []
2626

2727

28+
def test_should_original_dict_type_if_one_item_is_found():
29+
key = "key"
30+
value = {"key": "value"}
31+
32+
reflect.define_metadata(key, value, SampleTarget)
33+
assert reflector.get_all_and_merge(key, *[SampleTarget]) == value
34+
35+
36+
def test_should_original_list_type_if_one_item_is_found():
37+
key = "key"
38+
value = {"key": "value"}
39+
40+
reflect.define_metadata(key, [value], SampleTarget)
41+
assert reflector.get_all_and_merge(key, *[SampleTarget]) == [value]
42+
43+
44+
def test_should_original_str_if_one_item_is_found():
45+
key = "key"
46+
value = "value"
47+
48+
reflect.define_metadata(key, value, SampleTarget)
49+
assert reflector.get_all_and_merge(key, *[SampleTarget]) == [value]
50+
51+
2852
def test_should_reflect_metadata_of_all_targets_and_concat_arrays():
2953
key = "key"
3054
value = "value"

tests/test_templating/test_module_templating.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
from jinja2 import Environment
1010

1111

12-
@Module(template_folder="views")
13-
class SomeModule(ModuleBase):
12+
class SomeModuleMixin:
1413
@template_global("dec_global")
1514
def double_global_dec(cls, n):
1615
return n * 2
@@ -24,6 +23,11 @@ def double_global_dec_2(cls, n):
2423
return n * 2
2524

2625

26+
@Module(template_folder="views")
27+
class SomeModule(ModuleBase, SomeModuleMixin):
28+
pass
29+
30+
2731
@Module(
2832
static_folder="module_statics",
2933
)

0 commit comments

Comments
 (0)