refactoring nomi parte 1
parent
4a1d96cf11
commit
c9327e267a
|
|
@ -142,7 +142,7 @@ class EmailAdmin(HiddenModel, PolymorphicParentModelAdmin, PolymorphicChildModel
|
|||
|
||||
ddaf={
|
||||
'cap': {
|
||||
'linked': {
|
||||
'filtered_by': {
|
||||
'comune': 'comuni',
|
||||
},
|
||||
'reset_on_included': {},
|
||||
|
|
@ -153,7 +153,7 @@ ddaf={
|
|||
'included_only': False,
|
||||
},
|
||||
'comune': {
|
||||
'linked': {
|
||||
'filtered_by': {
|
||||
'cap': 'cap',
|
||||
},
|
||||
'reset_on_included': {},
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
|
||||
self.drilldown_enabled = drilldown_enabled
|
||||
if drilldown_enabled:
|
||||
if 'linkedfields' in request.GET:
|
||||
if 'filtered_by_fields' in request.GET:
|
||||
try:
|
||||
linkedfields = json.loads(
|
||||
request.GET.get("linkedfields"))
|
||||
filtered_by_fields = json.loads(
|
||||
request.GET.get("filtered_by_fields"))
|
||||
except json.decoder.JSONDecodeError as e:
|
||||
raise PermissionDenied from e
|
||||
app_label = request.GET["app_label"]
|
||||
|
|
@ -60,15 +60,15 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
raise PermissionDenied from e
|
||||
remote_model = source_field.remote_field.model
|
||||
try:
|
||||
for v in drilldown_field['linked'].values():
|
||||
for v in drilldown_field['filtered_by'].values():
|
||||
remote_model._meta.get_field(v)
|
||||
except FieldDoesNotExist as e:
|
||||
raise PermissionDenied from e
|
||||
self.remote_model = remote_model
|
||||
self.linkedfields = linkedfields
|
||||
self.filtered_by_fields = filtered_by_fields
|
||||
self.drilldown_field = drilldown_field
|
||||
self.drilldown_filter_data = {
|
||||
v: linkedfields[k] for k, v in drilldown_field['linked'].items() if k in linkedfields}
|
||||
v: filtered_by_fields[k] for k, v in drilldown_field['filtered_by'].items() if k in filtered_by_fields}
|
||||
|
||||
return term, model_admin, source_field, to_field_name
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
|||
"""Return queryset based on ModelAdmin.get_search_results()."""
|
||||
qs = super().get_queryset()
|
||||
if getattr(self, 'drilldown_enabled', False):
|
||||
if hasattr(self, 'linkedfields'):
|
||||
if hasattr(self, 'filtered_by_fields'):
|
||||
dd_field = self.drilldown_field
|
||||
drilldown_filter_conditions = Q(**self.drilldown_filter_data)
|
||||
if dd_field.get('autoselect_on_singleton', False):
|
||||
|
|
@ -135,9 +135,9 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
|
|||
daf = self.get_drilldown_autocomplete_fields(request)
|
||||
if db_field.name in daf:
|
||||
attrs = {'data-drilldown_enabled': 1}
|
||||
if 'linked' in daf[db_field.name]:
|
||||
attrs["data-linkedfields"] = json.dumps(
|
||||
list(daf[db_field.name]['linked'].keys()))
|
||||
if 'filtered_by' in daf[db_field.name]:
|
||||
attrs["data-filtered_by_fields"] = json.dumps(
|
||||
list(daf[db_field.name]['filtered_by'].keys()))
|
||||
if daf[db_field.name].get('included_only', False):
|
||||
attrs['data-included_only'] = 1
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -17,24 +17,24 @@
|
|||
};
|
||||
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
||||
out.drilldown = 1;
|
||||
if (element.dataset.hasOwnProperty('linkedfields')) {
|
||||
var linkedfields = JSON.parse(element.dataset.linkedfields)
|
||||
var linkedfields_obj = {};
|
||||
if (element.dataset.hasOwnProperty('filtered_by_fields')) {
|
||||
var filtered_by_fields = JSON.parse(element.dataset.filtered_by_fields)
|
||||
var filtered_by_fields_obj = {};
|
||||
var some_obj = false;
|
||||
for (var i in linkedfields) {
|
||||
if (linkedfields.hasOwnProperty(i)) {
|
||||
var remote_field = linkedfields[i];
|
||||
for (var i in filtered_by_fields) {
|
||||
if (filtered_by_fields.hasOwnProperty(i)) {
|
||||
var remote_field = filtered_by_fields[i];
|
||||
var field_id = element.dataset.select2Id;
|
||||
var remote_id = field_id.slice(0, field_id.length - field_name.length) + remote_field;
|
||||
var value = document.querySelectorAll('[data-select2-id=' + remote_id + '].admin-autocomplete')[0].value;
|
||||
if (value !== '') {
|
||||
linkedfields_obj[remote_field] = value;
|
||||
filtered_by_fields_obj[remote_field] = value;
|
||||
some_obj = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (some_obj) {
|
||||
out['linkedfields'] = JSON.stringify(linkedfields_obj);
|
||||
out['filtered_by_fields'] = JSON.stringify(filtered_by_fields_obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue