Skip to content

Commit e48a245

Browse files
committed
修复:date的control的input字段错误
增加测试脚本
1 parent 5fdcb1c commit e48a245

File tree

8 files changed

+30
-7
lines changed

8 files changed

+30
-7
lines changed

fast_tmp/site/field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def orm_2_amis(self, value: datetime.datetime) -> Any:
167167

168168

169169
class DateControl(BaseAdminControl):
170-
_control_type = FormItemEnum.date
170+
_control_type = FormItemEnum.input_date
171171

172172
def get_formitem(self, request: Request, codenames: Iterable[str]) -> FormItem:
173173
if not self._control:
@@ -492,7 +492,7 @@ def get_formitem(self, request: Request, codenames: Iterable[str]) -> FormItem:
492492
self._control = ImageItem(
493493
name=self.name,
494494
label=self.label,
495-
receiver=f"{self._field.model.__name__}/file/{self.name}", # type: ignore
495+
receiver=f"{self._field.model.__name__.lower()}/file/{self.name}", # type: ignore
496496
)
497497
if not self._field.null: # type: ignore
498498
self._control.required = True

fast_tmp/site/filter.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ def make_filter_by_str(request: Request, name: str, field: BaseAdminControl) ->
1414
filter_info = control.dict(exclude_none=True)
1515
filter_info["name"] = name
1616
filter_info["label"] = name
17-
filter_info.pop("required")
17+
if filter_info.get("required") is not None:
18+
filter_info.pop("required")
1819
return CommonFilter(field=field, **filter_info)
1920

2021

tests/admin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class DecModel(ModelAdmin):
7171

7272
class IntEnumAdmin(ModelAdmin):
7373
model = IntEnumField
74-
list_display = (
74+
inline = (
7575
"int_enum_1",
7676
"int_enum_2",
7777
"bool_1",
@@ -81,9 +81,9 @@ class IntEnumAdmin(ModelAdmin):
8181
"datetime_3",
8282
"datetime_4",
8383
)
84+
list_display = inline + ("foreignkey_1",)
8485
create_fields = list_display
8586
update_fields = list_display
86-
inline = list_display
8787

8888

8989
register_model_site({"fieldtesting": [IntEnumAdmin()]})

tests/test_example/test_example/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ class AuthorModel(ModelAdmin):
6666
create_fields = ("name", "birthday")
6767
inline = ("name",)
6868
update_fields = ("name", "birthday")
69-
filters = ["birthday", "birthday__gte", "birthday__lte"]
69+
filters = ("birthday", "birthday__gte", "birthday__lte")

tests/test_example/test_example/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def generate_token():
1919

2020
class Author(Model):
2121
name = fields.CharField(max_length=255)
22-
birthday = fields.DateField()
22+
birthday = fields.DateField(default=datetime.date.today)
2323

2424
def __str__(self):
2525
return self.name

tests/test_field.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import datetime
55

66
from tests.base import BaseSite
7+
from tests.testmodels import For
78

89

910
class TestDecimalControl(BaseSite):
@@ -36,6 +37,15 @@ async def test_intenum(self):
3637
assert response.status_code == 200
3738
data = response.json()
3839
assert data["status"] == 0
40+
# 写入一个测试用的外键
41+
await For(name="xx").save()
42+
foreign_data = (await self.client.get("/admin/intenumfield/select/foreignkey_1")).json()
43+
self.assertEqual(
44+
{"status": 0, "msg": "", "data": {"options": [{"value": 1, "label": "xx"}]}},
45+
foreign_data,
46+
)
47+
# self.assertEqual()
48+
3949
# 测试写入数据
4050
role_data = {
4151
"int_enum_2": "two",

tests/test_perm.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"event_delete",
2929
"event_list",
3030
"event_update",
31+
"for_create",
32+
"for_delete",
33+
"for_list",
34+
"for_update",
3135
"group_create",
3236
"group_delete",
3337
"group_list",

tests/testmodels.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,13 @@ class I1(IntEnum):
176176
two = 2
177177

178178

179+
class For(Model):
180+
name = fields.CharField(max_length=32)
181+
182+
def __str__(self):
183+
return self.name
184+
185+
179186
class IntEnumField(Model):
180187
int_enum_1 = fields.IntEnumField(I1, null=True)
181188
int_enum_2 = fields.IntEnumField(I1, default=I1.one)
@@ -185,3 +192,4 @@ class IntEnumField(Model):
185192
datetime_2 = fields.DatetimeField(default=datetime.datetime.now)
186193
datetime_3 = fields.DatetimeField(default=datetime.datetime.fromtimestamp(0))
187194
datetime_4 = fields.DatetimeField()
195+
foreignkey_1 = fields.ForeignKeyField("fast_tmp.For", null=True, related_name="foreignkey_1s")

0 commit comments

Comments
 (0)