fastadmin 0.1.15__py3-none-any.whl → 0.1.17__py3-none-any.whl

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/api/api.py CHANGED
@@ -370,7 +370,7 @@ async def configuration(
370
370
  ),
371
371
  )
372
372
 
373
- for field_name in admin_obj.list_display:
373
+ for column_index, field_name in enumerate(admin_obj.list_display):
374
374
  display_field_function = getattr(admin_obj, field_name, None)
375
375
  if (
376
376
  not display_field_function
@@ -379,15 +379,12 @@ async def configuration(
379
379
  ):
380
380
  continue
381
381
 
382
- column_index = admin_obj.list_display.index(field_name) if field_name in admin_obj.list_display else None
383
- if column_index is None:
384
- continue
385
382
  fields_schema.append(
386
383
  ModelFieldSchema(
387
384
  name=field_name,
388
385
  list_configuration=ListConfigurationFieldSchema(
389
386
  index=column_index,
390
- sorter=None,
387
+ sorter=False,
391
388
  is_link=field_name in admin_obj.list_display_links,
392
389
  empty_value_display=admin_obj.empty_value_display,
393
390
  filter_widget_type=None,
@@ -433,6 +430,7 @@ async def configuration(
433
430
  actions_on_bottom=admin_obj.actions_on_bottom,
434
431
  actions_selection_counter=admin_obj.actions_selection_counter,
435
432
  fields=fields_schema,
433
+ fieldsets=admin_obj.fieldsets,
436
434
  list_per_page=admin_obj.list_per_page,
437
435
  save_on_top=admin_obj.save_on_top,
438
436
  save_as=admin_obj.save_as,
fastadmin/models/base.py CHANGED
@@ -420,18 +420,21 @@ class BaseModelAdmin:
420
420
 
421
421
  :return: A list of model field names.
422
422
  """
423
- fields = self.fields
424
423
  model_fields = self.get_model_fields()
425
- if not fields:
426
- return [f for f in model_fields if not self.exclude or f not in self.exclude]
427
- return [f for f in fields if f in model_fields]
428
424
 
429
- # def get_fieldsets(self) -> Sequence[tuple[str | None, dict[str, Sequence[str]]]]:
430
- # """This method is used to get fieldsets data for form view.
431
-
432
- # :return: A list of fieldsets data.
433
- # """
434
- # return self.fieldsets
425
+ fields = [f for f in model_fields if model_fields[f].get("is_pk")]
426
+ if not self.fields:
427
+ if self.fieldsets:
428
+ for item in self.fieldsets:
429
+ for field in item[1].get("fields") or []:
430
+ if field not in fields and field not in self.exclude:
431
+ fields.append(field)
432
+ else:
433
+ for field in model_fields:
434
+ if field not in fields and field not in self.exclude:
435
+ fields.append(field)
436
+
437
+ return fields
435
438
 
436
439
  def has_add_permission(self) -> bool:
437
440
  """This method is used to check if user has permission to add new model instance.
@@ -247,7 +247,7 @@ class TortoiseModelAdmin(BaseModelAdmin):
247
247
  widget_props = {
248
248
  "required": field.get("required") or False,
249
249
  "disabled": field_name in self.readonly_fields,
250
- "readonly": field_name in self.readonly_fields,
250
+ "readOnly": field_name in self.readonly_fields,
251
251
  }
252
252
  match field.get("orm_class_name"):
253
253
  case "CharField":
@@ -92,6 +92,7 @@ class ModelSchema(BaseModel):
92
92
  actions_on_bottom: bool | None
93
93
  actions_selection_counter: bool | None
94
94
  fields: Sequence[ModelFieldSchema]
95
+ fieldsets: Sequence[tuple[str | None, dict[str, Sequence[str]]]] | None
95
96
  list_per_page: int | None
96
97
  save_on_top: bool | None
97
98
  save_as: bool | None