sangue/django/contatti_app/admin.py

150 lines
4.2 KiB
Python

from import_export.admin import ImportExportModelAdmin
from django.contrib import admin
from django.core.cache import cache
from django.core.paginator import Paginator
from . import models
from . import resources
from dati_geo_app.admin import RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin
# Modified version of a GIST I found in a SO thread
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
class CachingPaginator(Paginator):
def _get_count(self):
if not hasattr(self, "_count"):
self._count = None
if self._count is None:
try:
key = "adm:{0}:count".format(
hash(self.object_list.query.__str__()))
self._count = cache.get(key, -1)
if self._count == -1:
self._count = super().count
cache.set(key, self._count, 60)
except:
self._count = len(self.object_list)
return self._count
count = property(_get_count)
# # Main reusable Admin class for only viewing
# class ViewAdminMixin(admin.ModelAdmin):
# def has_add_permission(self, request):
# return False
#
# def has_change_permission(self, request, obj=None):
# return False
#
# def has_delete_permission(self, request, obj=None):
# return False
# --------------- FINE PREFISSO TEMPLATE ---------------
@admin.register(models.PersonaContattoAzienda)
class PersonaContattoAziendaAdmin(ImportExportModelAdmin):
# resource = resources.PersonaContattoAziendaResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.VoceContattoRubrica)
class VoceContattoRubricaAdmin(ImportExportModelAdmin):
# resource = resources.VoceContattoRubricaResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Telefono)
class TelefonoAdmin(ImportExportModelAdmin):
# resource = resources.TelefonoResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Email)
class EmailAdmin(ImportExportModelAdmin):
# resource = resources.EmailResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.PersonaFisica)
class PersonaFisicaAdmin(ImportExportModelAdmin):
# resource = resources.PersonaFisicaResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.PersonaGiuridica)
class PersonaGiuridicaAdmin(ImportExportModelAdmin):
# resource = resources.PersonaGiuridicaResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Sede)
class SedeAdmin(ImportExportModelAdmin):
# resource = resources.SedeResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Fax)
class FaxAdmin(ImportExportModelAdmin):
# resource = resources.FaxResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Pec)
class PecAdmin(ImportExportModelAdmin):
# resource = resources.PecResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.SoggettoContattabile)
class SoggettoContattabileAdmin(ImportExportModelAdmin):
# resource = resources.SoggettoContattabileResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Indirizzo)
class IndirizzoAdmin(ImportExportModelAdmin):
# resource = resources.IndirizzoResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass
@admin.register(models.Societa)
class SocietaAdmin(ImportExportModelAdmin):
# resource = resources.SocietaResource
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
pass