Skip to content

Commit 732dc26

Browse files
committed
Fixes
1 parent e7fac82 commit 732dc26

13 files changed

Lines changed: 277 additions & 1510 deletions

File tree

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ clean:
88
.PHONY: fix
99
fix:
1010
@echo "Run ruff"
11-
@exec poetry run ruff --fix fastadmin tests docs examples
11+
@exec poetry run ruff check --fix fastadmin tests docs examples
1212
@echo "Run isort"
1313
@exec poetry run isort fastadmin tests docs examples
1414
@echo "Run black"
@@ -21,7 +21,7 @@ fix:
2121
.PHONY: lint
2222
lint:
2323
@echo "Run ruff"
24-
@exec poetry run ruff fastadmin tests docs examples
24+
@exec poetry run ruff check fastadmin tests docs examples
2525
@echo "Run isort"
2626
@exec poetry run isort --check-only fastadmin tests docs examples
2727
@echo "Run black"

docs/build.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import inspect
22
import os
3+
import re
34
import sys
45
from datetime import datetime, timezone
56
from pathlib import Path
67

78
from django.apps import apps
89
from django.apps.registry import Apps
9-
from htmlmin import minify
1010
from jinja2 import Environment, FileSystemLoader, select_autoescape
1111

1212
from fastadmin.settings import ROOT_DIR, Settings
@@ -18,6 +18,12 @@
1818
Apps.check_apps_ready = lambda x: None
1919

2020

21+
def html_minify(html: str) -> str:
22+
html = re.sub(r">\s+<", "><", html)
23+
html = re.sub(r"\s+", " ", html)
24+
return html.strip()
25+
26+
2127
class App:
2228
label = "app"
2329

@@ -654,7 +660,7 @@ def build():
654660
index_template = env.get_template("templates/index.html")
655661
index_html = index_template.render(**context)
656662
with Path.open(Path("index.html"), "w") as fh:
657-
fh.write(minify(index_html))
663+
fh.write(html_minify(index_html))
658664

659665
readme_template = env.get_template("templates/readme.md")
660666
readme_md = readme_template.render(**context)

docs/index.html

Lines changed: 1 addition & 1314 deletions
Large diffs are not rendered by default.

fastadmin/api/frameworks/django/app/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def get_admin_urls():
4141
path("api/action/<str:model>/<str:action>", action),
4242
path("api/configuration", configuration),
4343
re_path(
44-
r"^%s(?P<path>.*)$" % re.escape("static"),
44+
r"^%s(?P<path>.*)$" % re.escape("static"), # noqa: UP031
4545
serve,
4646
kwargs={"document_root": ROOT_DIR / "static"},
4747
),

fastadmin/models/helpers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ async def generate_models_schema(
110110
:return: A list of models / inline models schemas.
111111
"""
112112
models_schemas: list[ModelSchema | InlineModelSchema] = []
113-
for orm_model_cls in admin_models:
114-
admin_model_obj: ModelAdmin | InlineModelAdmin = admin_models[orm_model_cls]
113+
for orm_model_cls, admin_model_obj in admin_models.items():
115114
orm_model_fields = admin_model_obj.get_model_fields_with_widget_types()
116115
orm_model_fields_for_serialize = admin_model_obj.get_fields_for_serialize()
117116

fastadmin/models/orms/django.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,18 @@ def get_model_fields_with_widget_types(
113113
form_widget_props["mode"] = "tags"
114114
filter_widget_type = WidgetType.Select
115115
filter_widget_props["mode"] = "tags"
116-
case "SmallAutoField" | "AutoField" | "BigAutoField" | "SmallIntegerField" | "BigIntegerField" | "PositiveIntegerField" | "PositiveSmallIntegerField" | "IntegerField" | "FloatField" | "DecimalField":
116+
case (
117+
"SmallAutoField"
118+
| "AutoField"
119+
| "BigAutoField"
120+
| "SmallIntegerField"
121+
| "BigIntegerField"
122+
| "PositiveIntegerField"
123+
| "PositiveSmallIntegerField"
124+
| "IntegerField"
125+
| "FloatField"
126+
| "DecimalField"
127+
):
117128
form_widget_type = WidgetType.InputNumber
118129
filter_widget_type = WidgetType.InputNumber
119130
case "DateField":

fastadmin/models/orms/ponyorm.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,8 @@ def orm_get_list(
267267
# TODO: support icontains here
268268
filter_expr = f""""{search}" in m.{search_field}"""
269269
qs_ids = qs.filter(filter_expr)
270-
ids += [o.id for o in qs_ids]
270+
objs = list(qs_ids)
271+
ids += [o.id for o in objs]
271272
qs = qs.filter(lambda m: m.id in set(ids))
272273

273274
ordering = [sort_by] if sort_by else self.ordering
@@ -298,7 +299,7 @@ def orm_get_obj(self, id: UUID | int) -> Any | None:
298299
:params id: an id of object.
299300
:return: An object.
300301
"""
301-
return next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
302+
return self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
302303

303304
@sync_to_async
304305
@db_session
@@ -310,7 +311,7 @@ def orm_save_obj(self, id: UUID | Any | None, payload: dict) -> Any:
310311
:return: An object.
311312
"""
312313
if id:
313-
obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
314+
obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
314315
if not obj:
315316
return None
316317
obj.set(**payload)
@@ -328,7 +329,7 @@ def orm_delete_obj(self, id: UUID | int) -> None:
328329
:params id: an id of object.
329330
:return: None.
330331
"""
331-
obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
332+
obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
332333
if not obj:
333334
return
334335
obj.delete()
@@ -346,7 +347,7 @@ def orm_get_m2m_ids(self, obj: Any, field: str) -> list[int | UUID]:
346347
:return: A list of ids.
347348
"""
348349
key_id = self.get_model_pk_name(self.model_cls)
349-
obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
350+
obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
350351
if not obj:
351352
return []
352353
rel_model_cls = getattr(self.model_cls, field).py_type
@@ -365,7 +366,7 @@ def orm_save_m2m_ids(self, obj: Any, field: str, ids: list[int | UUID]) -> None:
365366
:return: A list of ids.
366367
"""
367368
key_id = self.get_model_pk_name(self.model_cls)
368-
obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
369+
obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
369370
if not obj:
370371
return
371372
getattr(obj, field).clear()
@@ -388,7 +389,6 @@ def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None:
388389
389390
:return: A list of ids.
390391
"""
391-
...
392392

393393
@sync_to_async
394394
@db_session
@@ -403,7 +403,7 @@ def serialize_obj_attributes(
403403
"""
404404
data = {}
405405
key_id = self.get_model_pk_name(self.model_cls)
406-
obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
406+
obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
407407
if not obj:
408408
return data
409409

fastadmin/models/orms/sqlalchemy.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,6 @@ async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None
437437
438438
:return: A list of ids.
439439
"""
440-
...
441440

442441

443442
class SqlAlchemyModelAdmin(SqlAlchemyMixin, ModelAdmin):

fastadmin/models/orms/tortoise.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@ async def orm_save_upload_field(self, obj: Any, field: str, base64: str) -> None
351351
352352
:return: A list of ids.
353353
"""
354-
...
355354

356355

357356
class TortoiseModelAdmin(TortoiseMixin, ModelAdmin):

0 commit comments

Comments
 (0)