reset_on_reset da testare

my-submodulepoetico
Guido Longoni 2023-07-06 02:04:39 +02:00
parent a273ea4ea2
commit 9d4b789338
1 changed files with 27 additions and 5 deletions

View File

@ -138,6 +138,19 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
if "widget" not in kwargs:
daf = self.get_drilldown_autocomplete_fields(request)
if db_field.name in daf:
def get_fields_to_reset_recursive(daf, fields_to_reset, seen=None):
to_reset = set()
if seen is None:
seen = set()
for f in fields_to_reset:
if f in daf:
to_reset.add(f)
if f not in seen and 'reset_on_reset' in daf[f]:
seen.add(f)
to_reset.update(get_fields_to_reset_recursive(
daf, daf[f]['reset_on_reset'], seen))
return to_reset
attrs = {'data-drilldown_enabled': 1}
if 'filtered_by' in daf[db_field.name]:
attrs["data-filtered_by"] = json.dumps(
@ -146,11 +159,20 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
attrs['data-included_only'] = 1
else:
if 'reset_on_excluded' in daf[db_field.name]:
reset_on_excluded = set(
daf[db_field.name]['reset_on_excluded'])
reset_on_excluded = get_fields_to_reset_recursive(
daf, reset_on_excluded)
attrs['data-reset_on_excluded'] = json.dumps(
list(daf[db_field.name]['reset_on_excluded']))
list(reset_on_excluded))
if 'reset_on_included' in daf[db_field.name]:
reset_on_included = set(
daf[db_field.name]['reset_on_included'])
reset_on_included = get_fields_to_reset_recursive(
daf, reset_on_included)
attrs['data-reset_on_included'] = json.dumps(
list(daf[db_field.name]['reset_on_included']))
list(reset_on_included))
kwargs["widget"] = DrillDownAutocompleteSelect(
db_field, self.admin_site, attrs=attrs, using=db
)