reset_on_reset da testare
parent
a273ea4ea2
commit
9d4b789338
|
|
@ -56,10 +56,10 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
try:
|
||||
drilldown_field = self.admin_site._registry[
|
||||
source_model].get_drilldown_autocomplete_fields(request)[source_field.name]
|
||||
filtered_by = set(drilldown_field['filtered_by'])
|
||||
filtered_by = set(drilldown_field['filtered_by'])
|
||||
except KeyError as e:
|
||||
raise PermissionDenied from e
|
||||
if(set(filtered_by_dict.keys()) > filtered_by):
|
||||
if (set(filtered_by_dict.keys()) > filtered_by):
|
||||
raise PermissionDenied
|
||||
rel_paths = drilldown_field['relationship_path']
|
||||
target_model = source_field.remote_field.model
|
||||
|
|
@ -72,7 +72,7 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
self.filtered_by_dict = filtered_by_dict
|
||||
self.drilldown_field = drilldown_field
|
||||
self.drilldown_filter_data = {
|
||||
rel_paths[k]: v for k,v in filtered_by_dict.items()}
|
||||
rel_paths[k]: v for k, v in filtered_by_dict.items()}
|
||||
|
||||
return term, model_admin, source_field, to_field_name
|
||||
|
||||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue