fastadmin 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastadmin-0.2.1 → fastadmin-0.2.2}/PKG-INFO +3 -2
- {fastadmin-0.2.1 → fastadmin-0.2.2}/README.md +2 -1
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/django/app/api.py +2 -2
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/flask/app.py +2 -2
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/base.py +17 -1
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/helpers.py +1 -1
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/orms/ponyorm.py +0 -1
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/index.html +2 -2
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/index.min.js +71 -71
- {fastadmin-0.2.1 → fastadmin-0.2.2}/pyproject.toml +1 -1
- {fastadmin-0.2.1 → fastadmin-0.2.2}/LICENSE +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/exceptions.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/django/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/django/app/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/django/app/urls.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/django/app/views.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/fastapi/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/fastapi/api.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/fastapi/app.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/fastapi/views.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/flask/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/flask/api.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/frameworks/flask/views.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/helpers.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/schemas.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/api/service.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/decorators.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/orms/__init__.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/orms/django.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/orms/sqlalchemy.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/orms/tortoise.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/models/schemas.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/settings.py +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/images/favicon.png +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/images/header-logo.svg +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/images/sign-in-logo.svg +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/static/index.min.css +0 -0
- {fastadmin-0.2.1 → fastadmin-0.2.2}/fastadmin/templates/index.html +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fastadmin
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.2
|
4
4
|
Summary:
|
5
5
|
Home-page: https://github.com/vsdudakov/fastadmin
|
6
6
|
License: MIT
|
@@ -43,11 +43,12 @@ Description-Content-Type: text/markdown
|
|
43
43
|
|
44
44
|
## Admin Dashboard App for FastAPI/Flask/Django
|
45
45
|
|
46
|
-
[](https://github.com/vsdudakov/fastadmin/workflows/CI/badge.svg?branch=main)
|
47
46
|
[](https://codecov.io/gh/vsdudakov/fastadmin)
|
48
47
|
[](https://github.com/vsdudakov/fastadmin/blob/master/LICENSE)
|
49
48
|
[](https://pypi.org/project/fastadmin/)
|
50
49
|
[](https://www.python.org/downloads/release/python-3100/)
|
50
|
+
[](https://www.python.org/downloads/release/python-3110/)
|
51
|
+
[](https://www.python.org/downloads/release/python-3120/)
|
51
52
|
|
52
53
|
## Screenshots
|
53
54
|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
## Admin Dashboard App for FastAPI/Flask/Django
|
2
2
|
|
3
|
-
[](https://github.com/vsdudakov/fastadmin/workflows/CI/badge.svg?branch=main)
|
4
3
|
[](https://codecov.io/gh/vsdudakov/fastadmin)
|
5
4
|
[](https://github.com/vsdudakov/fastadmin/blob/master/LICENSE)
|
6
5
|
[](https://pypi.org/project/fastadmin/)
|
7
6
|
[](https://www.python.org/downloads/release/python-3100/)
|
7
|
+
[](https://www.python.org/downloads/release/python-3110/)
|
8
|
+
[](https://www.python.org/downloads/release/python-3120/)
|
8
9
|
|
9
10
|
## Screenshots
|
10
11
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import json
|
2
2
|
import logging
|
3
3
|
from dataclasses import asdict
|
4
|
-
from datetime import datetime
|
4
|
+
from datetime import datetime, time
|
5
5
|
from functools import wraps
|
6
6
|
from uuid import UUID
|
7
7
|
|
@@ -23,7 +23,7 @@ api_service = ApiService()
|
|
23
23
|
|
24
24
|
class JsonEncoder(DjangoJSONEncoder):
|
25
25
|
def default(self, o):
|
26
|
-
if isinstance(o, datetime):
|
26
|
+
if isinstance(o, datetime | time):
|
27
27
|
return o.isoformat()
|
28
28
|
if isinstance(o, UUID):
|
29
29
|
return str(o)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import logging
|
2
|
-
from datetime import date
|
2
|
+
from datetime import date, time
|
3
3
|
|
4
4
|
from flask import Blueprint
|
5
5
|
from flask.json.provider import DefaultJSONProvider
|
@@ -14,7 +14,7 @@ logger = logging.getLogger(__name__)
|
|
14
14
|
|
15
15
|
class JSONProvider(DefaultJSONProvider):
|
16
16
|
def default(self, o):
|
17
|
-
if isinstance(o, date):
|
17
|
+
if isinstance(o, date | time):
|
18
18
|
return o.isoformat()
|
19
19
|
return super().default(o)
|
20
20
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import csv
|
2
|
+
import datetime
|
2
3
|
import inspect
|
3
4
|
import json
|
4
5
|
from collections.abc import Sequence
|
@@ -383,6 +384,17 @@ class BaseModelAdmin:
|
|
383
384
|
|
384
385
|
return obj_dict
|
385
386
|
|
387
|
+
def deserialize_value(self, field: ModelFieldWidgetSchema, value: Any) -> Any:
|
388
|
+
if not value:
|
389
|
+
return value
|
390
|
+
match field.form_widget_type:
|
391
|
+
case WidgetType.TimePicker:
|
392
|
+
return datetime.datetime.fromisoformat(value).time()
|
393
|
+
case WidgetType.DatePicker | WidgetType.DateTimePicker:
|
394
|
+
return datetime.datetime.fromisoformat(value)
|
395
|
+
case _:
|
396
|
+
return value
|
397
|
+
|
386
398
|
async def get_list(
|
387
399
|
self,
|
388
400
|
offset: int | None = None,
|
@@ -434,7 +446,11 @@ class BaseModelAdmin:
|
|
434
446
|
m2m_fields = self.get_model_fields_with_widget_types(with_m2m=True)
|
435
447
|
upload_fields = self.get_model_fields_with_widget_types(with_upload=True)
|
436
448
|
|
437
|
-
fields_payload = {
|
449
|
+
fields_payload = {
|
450
|
+
field.column_name: self.deserialize_value(field, payload[field.name])
|
451
|
+
for field in fields
|
452
|
+
if field.name in payload
|
453
|
+
}
|
438
454
|
obj = await self.orm_save_obj(id, fields_payload)
|
439
455
|
if not obj:
|
440
456
|
return None
|
@@ -62,7 +62,7 @@ def get_admin_model(orm_model_cls: str | Any) -> ModelAdmin | None:
|
|
62
62
|
model_name_prefix = admin_model.model_name_prefix
|
63
63
|
if model_name_prefix:
|
64
64
|
model_name = f"{model_name_prefix}.{model_name}"
|
65
|
-
if orm_model_cls
|
65
|
+
if orm_model_cls == model_name:
|
66
66
|
return admin_model
|
67
67
|
return None
|
68
68
|
|
@@ -7,8 +7,8 @@
|
|
7
7
|
<meta name="description" content="Fast Admin"/>
|
8
8
|
<title>Fast Admin</title>
|
9
9
|
<script>
|
10
|
-
window.SERVER_DOMAIN = 'http://localhost:
|
11
|
-
window.SERVER_URL = 'http://localhost:
|
10
|
+
window.SERVER_DOMAIN = 'http://localhost:8000';
|
11
|
+
window.SERVER_URL = 'http://localhost:8000/admin/api';
|
12
12
|
</script>
|
13
13
|
<script type="module" crossorigin src="/index.min.js"></script>
|
14
14
|
<link rel="stylesheet" crossorigin href="/index.min.css">
|