bugfix ora l'inline legge dall'inline e il modeladmin dal modeladmin.
Inoltre ora non uso più _registry e ho dato un nome sensato alla classemy-submodulepoetico
parent
0dbe8f2b6d
commit
9646cc8b6f
|
|
@ -13,7 +13,7 @@ from django.core.paginator import Paginator
|
||||||
from django.db.models import F
|
from django.db.models import F
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
from .drilldown_autocomplete import DrillDownAutocompleteModelAdmin
|
from .drilldown_autocomplete import DrillDownAutocomplete
|
||||||
|
|
||||||
# Modified version of a GIST I found in a SO thread
|
# Modified version of a GIST I found in a SO thread
|
||||||
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
|
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
|
||||||
|
|
@ -167,8 +167,8 @@ ddaf={
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RecapitoInline(StackedPolymorphicInline, DrillDownAutocompleteModelAdmin):
|
class RecapitoInline(StackedPolymorphicInline, DrillDownAutocomplete):
|
||||||
class IndirizzoInline(StackedPolymorphicInline.Child, DrillDownAutocompleteModelAdmin):
|
class IndirizzoInline(StackedPolymorphicInline.Child, DrillDownAutocomplete):
|
||||||
model = models.Indirizzo
|
model = models.Indirizzo
|
||||||
autocomplete_fields = ('dug','comune','cap','nazione',)
|
autocomplete_fields = ('dug','comune','cap','nazione',)
|
||||||
drilldown_autocomplete_fields = ddaf
|
drilldown_autocomplete_fields = ddaf
|
||||||
|
|
@ -284,7 +284,7 @@ class SoggettoContattabileAdmin(PolymorphicParentModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Indirizzo)
|
@admin.register(models.Indirizzo)
|
||||||
class IndirizzoAdmin(HiddenModel, DrillDownAutocompleteModelAdmin, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin):
|
class IndirizzoAdmin(HiddenModel, DrillDownAutocomplete, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin):
|
||||||
# resource = resources.IndirizzoResource
|
# resource = resources.IndirizzoResource
|
||||||
# list_per_page = 15
|
# list_per_page = 15
|
||||||
# paginator = CachingPaginator
|
# paginator = CachingPaginator
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from django.urls import path
|
||||||
|
|
||||||
class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
||||||
"""Handle AutocompleteWidget's AJAX requests for data."""
|
"""Handle AutocompleteWidget's AJAX requests for data."""
|
||||||
|
admin_context = None
|
||||||
|
|
||||||
def process_request(self, request):
|
def process_request(self, request):
|
||||||
"""
|
"""
|
||||||
|
|
@ -42,8 +43,7 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
|
||||||
model_name = request.GET["model_name"]
|
model_name = request.GET["model_name"]
|
||||||
source_model = apps.get_model(app_label, model_name)
|
source_model = apps.get_model(app_label, model_name)
|
||||||
try:
|
try:
|
||||||
drilldown_field = self.admin_site._registry[
|
drilldown_field = self.admin_context.get_drilldown_autocomplete_fields(request)[source_field.name]
|
||||||
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:
|
except KeyError as e:
|
||||||
raise PermissionDenied from e
|
raise PermissionDenied from e
|
||||||
|
|
@ -105,7 +105,7 @@ class DrillDownAutocompleteSelect(AutocompleteSelect, DrillDownAutocompleteMixin
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
|
class DrillDownAutocomplete(admin.options.BaseModelAdmin):
|
||||||
drilldown_autocomplete_fields = dict()
|
drilldown_autocomplete_fields = dict()
|
||||||
|
|
||||||
class Media:
|
class Media:
|
||||||
|
|
@ -166,7 +166,7 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
|
||||||
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||||
|
|
||||||
def drilldown_autocomplete_view(self, request):
|
def drilldown_autocomplete_view(self, request):
|
||||||
return DrillDownAutocompleteJsonView.as_view(admin_site=self.admin_site)(request)
|
return DrillDownAutocompleteJsonView.as_view(admin_site=self.admin_site, admin_context=self)(request)
|
||||||
|
|
||||||
def get_urls(self):
|
def get_urls(self):
|
||||||
def wrap(view, cacheable=False):
|
def wrap(view, cacheable=False):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue