Skip to content

Commit 90d1670

Browse files
committed
Fix issue with modal inline dialogs. Fix issue with m2m multiple select.
1 parent d86cb1c commit 90d1670

11 files changed

Lines changed: 98 additions & 65 deletions

File tree

docs/build.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ def read_cls_docstring(cls):
3939

4040
def get_versions():
4141
return [
42+
{
43+
"version": "0.2.9",
44+
"changes": [
45+
"Fix issue with modal inline dialogs. Fix issue with m2m multiple select.",
46+
],
47+
},
4248
{
4349
"version": "0.2.8",
4450
"changes": [

docs/index.html

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

examples/fastapi_sqlalchemy/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
## FastAPI + SQLAlchemy 2.x Example
22

33
- Uses in-memory SQLite 3 instance
4-
- Creates User mode
54
- Creates "admin/admin" superuser
65

76
```bash

examples/fastapi_sqlalchemy/example.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from fastapi import FastAPI
2+
from fastapi.middleware.cors import CORSMiddleware
23
from models import Base, BaseEvent, Event, Tournament, User, sqlalchemy_engine, sqlalchemy_sessionmaker
34
from sqlalchemy import select, update
45

@@ -53,7 +54,6 @@ class BaseEventModelAdmin(SqlAlchemyModelAdmin):
5354
class EventModelAdmin(SqlAlchemyModelAdmin):
5455
actions = ("make_is_active", "make_is_not_active")
5556
list_display = ("id", "name_with_price", "rating", "event_type", "is_active", "started")
56-
raw_id_fields = ("base",)
5757

5858
@action(description="Make user active")
5959
async def make_is_active(self, ids):
@@ -107,3 +107,11 @@ async def startup():
107107

108108

109109
app.mount("/admin", admin_app)
110+
111+
app.add_middleware(
112+
CORSMiddleware,
113+
allow_origins=["*"],
114+
allow_credentials=True,
115+
allow_methods=["*"],
116+
allow_headers=["*"],
117+
)

examples/fastapi_tortoiseorm/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
## FastAPI + Tortoise ORM Example
22

33
- Uses in-memory SQLite 3 instance
4-
- Creates User mode
54
- Creates "admin/admin" superuser
65

76
```bash

examples/fastapi_tortoiseorm/example.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from fastapi import FastAPI
2+
from fastapi.middleware.cors import CORSMiddleware
23
from models import BaseEvent, Event, Tournament, User
34
from tortoise import Tortoise
45

@@ -49,7 +50,6 @@ class BaseEventModelAdmin(TortoiseModelAdmin):
4950
class EventModelAdmin(TortoiseModelAdmin):
5051
actions = ("make_is_active", "make_is_not_active")
5152
list_display = ("id", "name_with_price", "rating", "event_type", "is_active", "started")
52-
raw_id_fields = ("base",)
5353

5454
@action(description="Make user active")
5555
async def make_is_active(self, ids):
@@ -96,3 +96,11 @@ async def shutdown():
9696

9797

9898
app.mount("/admin", admin_app)
99+
100+
app.add_middleware(
101+
CORSMiddleware,
102+
allow_origins=["*"],
103+
allow_credentials=True,
104+
allow_methods=["*"],
105+
allow_headers=["*"],
106+
)

fastadmin/static/index.min.js

Lines changed: 53 additions & 53 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
<meta name="description" content="Fast Admin"/>
88
<title>Fast Admin</title>
99
<script>
10-
window.SERVER_DOMAIN = 'http://localhost:8000';
11-
window.SERVER_URL = 'http://localhost:8000/admin/api';
10+
window.SERVER_DOMAIN = 'http://localhost:8090';
11+
window.SERVER_URL = 'http://localhost:8090/admin/api';
1212
</script>
1313
</head>
1414
<body>

frontend/src/components/async-select/index.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export interface IAsyncSelect {
3737
labelFields: string[];
3838

3939
value?: any;
40-
4140
parentModel: string;
4241
}
4342

@@ -160,6 +159,8 @@ export const AsyncSelect: React.FC<IAsyncSelect> = ({
160159
mutateChange(payload);
161160
};
162161

162+
const isMultipleMode = (props as any).mode === "multiple";
163+
163164
return (
164165
<>
165166
<Space.Compact style={{ width: "100%" }}>
@@ -174,7 +175,7 @@ export const AsyncSelect: React.FC<IAsyncSelect> = ({
174175
<PlusCircleOutlined />
175176
</Button>
176177
</Tooltip>
177-
{value && (
178+
{value && !isMultipleMode && (
178179
<Tooltip
179180
title={_t(
180181
`Edit ${
@@ -200,7 +201,15 @@ export const AsyncSelect: React.FC<IAsyncSelect> = ({
200201
label: item[labelField],
201202
};
202203
})}
203-
value={value ? `${value}` : undefined}
204+
value={
205+
isMultipleMode
206+
? value
207+
? value.map((v: any) => `${v}`)
208+
: []
209+
: value
210+
? `${value}`
211+
: undefined
212+
}
204213
{...props}
205214
/>
206215
</Space.Compact>

frontend/src/components/form-container/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export const FormContainer: React.FC<IFormContainer> = ({
5858
}
5959
}, [hasOperationError, modelConfiguration?.fieldsets]);
6060

61+
useEffect(() => {
62+
form.setFieldsValue(initialValues);
63+
}, [form, initialValues]);
64+
6165
const getWidget = useCallback(
6266
(
6367
configurationField: IAddConfigurationField | IChangeConfigurationField,

0 commit comments

Comments
 (0)