aggiunti campi autocomplete nei contatti

e bugfix polimorfismo
my-submodulepoetico
Guido Longoni 2023-06-20 22:41:01 +02:00
parent b2203ca938
commit 99c5be9439
1 changed files with 20 additions and 2 deletions

View File

@ -5,6 +5,7 @@ from django.core.cache import cache
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import Case, Count, Value, When from django.db.models import Case, Count, Value, When
from django.db.models.functions import Concat from django.db.models.functions import Concat
from django.db.models import F
from import_export.admin import ImportExportModelAdmin from import_export.admin import ImportExportModelAdmin
from polymorphic.admin import (PolymorphicChildModelAdmin, from polymorphic.admin import (PolymorphicChildModelAdmin,
PolymorphicChildModelFilter, PolymorphicChildModelFilter,
@ -88,7 +89,8 @@ class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdm
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
child_models = (models.Indirizzo, models.Email, models.Telefono, models.Fax,) base_model = models.VoceContattoRubrica
child_models = (models.Indirizzo, models.Email, models.Pec, models.Telefono, models.Fax,)
list_filter = (PolymorphicChildModelFilter,) list_filter = (PolymorphicChildModelFilter,)
readonly_fields = ('descrizione','tipo',) readonly_fields = ('descrizione','tipo',)
list_display = ('soggetto','descrizione','tipo',) list_display = ('soggetto','descrizione','tipo',)
@ -98,9 +100,11 @@ class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdm
def tipo(self, obj): def tipo(self, obj):
return getattr(obj,obj.polymorphic_ctype.model)._meta.verbose_name.title() return getattr(obj,obj.polymorphic_ctype.model)._meta.verbose_name.title()
tipo.admin_order_field = '_tipo'
def get_queryset(self, request): def get_queryset(self, request):
qs=super().get_queryset(request).prefetch_related('polymorphic_ctype') qs=super().get_queryset(request).prefetch_related('polymorphic_ctype')
qs=qs.annotate(_tipo=F('polymorphic_ctype__model'))
return qs return qs
pass pass
@ -111,6 +115,8 @@ class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
fields = ('soggetto','numero','interno','note',)
autocomplete_fields = ('soggetto',)
pass pass
@ -120,16 +126,22 @@ class EmailAdmin(HiddenModel, PolymorphicChildModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
fields = ('soggetto','indirizzo_email','note',)
autocomplete_fields = ('soggetto',)
pass pass
class VoceContattoRubricaInline(StackedPolymorphicInline): class VoceContattoRubricaInline(StackedPolymorphicInline):
class IndirizzoInline(StackedPolymorphicInline.Child): class IndirizzoInline(StackedPolymorphicInline.Child):
model = models.Indirizzo model = models.Indirizzo
autocomplete_fields = ('comune','cap',)
class EmailInline(StackedPolymorphicInline.Child): class EmailInline(StackedPolymorphicInline.Child):
model = models.Email model = models.Email
class PecInline(StackedPolymorphicInline.Child):
model = models.Pec
class TelefonoInline(StackedPolymorphicInline.Child): class TelefonoInline(StackedPolymorphicInline.Child):
model = models.Telefono model = models.Telefono
@ -140,6 +152,7 @@ class VoceContattoRubricaInline(StackedPolymorphicInline):
child_inlines = ( child_inlines = (
IndirizzoInline, IndirizzoInline,
EmailInline, EmailInline,
PecInline,
TelefonoInline, TelefonoInline,
FaxInline, FaxInline,
) )
@ -184,6 +197,8 @@ class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
fields = ('soggetto','numero','note',)
autocomplete_fields = ('soggetto',)
pass pass
@ -193,6 +208,8 @@ class PecAdmin(ImportExportModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
fields = ('soggetto','indirizzo_email','note',)
autocomplete_fields = ('soggetto',)
pass pass
@ -202,6 +219,7 @@ class SoggettoContattabileAdmin(PolymorphicParentModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
base_model = models.SoggettoContattabile
child_models = (models.PersonaFisica, models.PersonaGiuridica,) child_models = (models.PersonaFisica, models.PersonaGiuridica,)
list_filter = (PolymorphicChildModelFilter,) list_filter = (PolymorphicChildModelFilter,)
readonly_fields = ('descrizione','tipo',) readonly_fields = ('descrizione','tipo',)