From b58ac7ade9d988f07e61f4b10797f1cbdba79ea0 Mon Sep 17 00:00:00 2001 From: Guido Longoni Date: Mon, 3 Jul 2023 13:24:31 +0200 Subject: [PATCH] cosmesi --- django/contatti_app/admin.py | 68 ++++++--- .../migrations/0003_alter_societa_options.py | 16 ++ django/contatti_app/models.py | 6 +- django/poetry.lock | 138 +++++++++++++++++- django/pyproject.toml | 1 + django/sangue_django/settings.py | 6 +- 6 files changed, 210 insertions(+), 25 deletions(-) create mode 100644 django/contatti_app/migrations/0003_alter_societa_options.py diff --git a/django/contatti_app/admin.py b/django/contatti_app/admin.py index 7026d4b..02eae3b 100644 --- a/django/contatti_app/admin.py +++ b/django/contatti_app/admin.py @@ -1,12 +1,5 @@ from dati_geo_app.admin import (AjaxAutocompleteListFilterModelAdmin, RicercaOrdinataMixin) -from django.contrib import admin -from django.core.cache import cache -from django.core.paginator import Paginator -from django.db.models import Case, Count, Value, When -from django.db.models.functions import Concat -from django.db.models import F -from django.contrib.contenttypes.models import ContentType from import_export.admin import ImportExportModelAdmin from polymorphic.admin import (PolymorphicChildModelAdmin, PolymorphicChildModelFilter, @@ -14,7 +7,13 @@ from polymorphic.admin import (PolymorphicChildModelAdmin, PolymorphicParentModelAdmin, StackedPolymorphicInline) -from . import models, resources +from django.contrib import admin +from django.core.cache import cache +from django.core.paginator import Paginator +from django.db.models import F + +from . import models +from .drilldown_autocomplete import DrillDownAutocompleteModelAdmin # Modified version of a GIST I found in a SO thread # cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/ @@ -25,7 +24,7 @@ class AutocompleteAdmin(admin.ModelAdmin): js = ('admin/js/autocomplete_auto_focus.js', ) -class StackedInlineCollassati(AutocompleteAdmin): +class StackedInlineCollassati(admin.ModelAdmin): class Media: js = ('admin/js/stacked_inline_collassati.js',) css = { 'all': ('admin/css/stacked_inline_collassati.css',)} @@ -76,7 +75,7 @@ class CachingPaginator(Paginator): @admin.register(models.ContattoAziendale) -class ContattoAziendaleAdmin(ImportExportModelAdmin): +class ContattoAziendaleAdmin(ImportExportModelAdmin, AutocompleteAdmin): # resource = resources.ContattoAziendaleResource # list_per_page = 15 # paginator = CachingPaginator @@ -118,7 +117,7 @@ class RecapitoAdmin(ImportExportModelAdmin, PolymorphicParentModelAdmin): @admin.register(models.Telefono) -class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin): +class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin, AutocompleteAdmin): # resource = resources.TelefonoResource # list_per_page = 15 # paginator = CachingPaginator @@ -129,7 +128,7 @@ class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin): @admin.register(models.Email) -class EmailAdmin(HiddenModel, PolymorphicParentModelAdmin, PolymorphicChildModelAdmin): +class EmailAdmin(HiddenModel, PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin): # resource = resources.EmailResource # list_per_page = 15 # paginator = CachingPaginator @@ -207,7 +206,6 @@ class PersonaFisicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModelAdm get_model_perms = lambda self, req: {} search_fields = ('nome','cognome',) inlines = (RecapitoInline,) - pass @admin.register(models.PersonaGiuridica) @@ -223,7 +221,7 @@ class PersonaGiuridicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModel @admin.register(models.Sede) -class SedeAdmin(ImportExportModelAdmin): +class SedeAdmin(ImportExportModelAdmin, AutocompleteAdmin): # resource = resources.SedeResource # list_per_page = 15 # paginator = CachingPaginator @@ -234,7 +232,7 @@ class SedeAdmin(ImportExportModelAdmin): @admin.register(models.Fax) -class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin): +class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin, AutocompleteAdmin): # resource = resources.FaxResource # list_per_page = 15 # paginator = CachingPaginator @@ -245,7 +243,7 @@ class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin): @admin.register(models.Pec) -class PecAdmin(HiddenModel, PolymorphicChildModelAdmin): +class PecAdmin(HiddenModel, PolymorphicChildModelAdmin, AutocompleteAdmin): # resource = resources.PecResource # list_per_page = 15 # paginator = CachingPaginator @@ -282,7 +280,7 @@ class SoggettoContattabileAdmin(PolymorphicParentModelAdmin): @admin.register(models.Indirizzo) -class IndirizzoAdmin(HiddenModel, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin): +class IndirizzoAdmin(HiddenModel, DrillDownAutocompleteModelAdmin, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin): # resource = resources.IndirizzoResource # list_per_page = 15 # paginator = CachingPaginator @@ -293,6 +291,30 @@ class IndirizzoAdmin(HiddenModel, RicercaOrdinataMixin, AjaxAutocompleteListFilt fields=('soggetto','dug','duf','civico','cap','comune','altro',) search_fields = ('soggetto','indirizzo','cap_id__exact',) autocomplete_fields = ('soggetto','dug','cap','comune',) + drilldown_autocomplete_fields = { + 'cap': { + 'linked': { + 'comune': 'comuni', + }, + 'reset_on_included': {}, + 'reset_on_excluded': {}, + 'reset_on_reset': {}, + 'autoupdate_on_reset': False, + 'autoselect_on_singleton': False, + 'included_only': False, + }, + 'comune': { + 'linked': { + 'cap': 'cap', + }, + 'reset_on_included': {}, + 'reset_on_excluded': {}, + 'reset_on_reset': {}, + 'autoupdate_on_reset': False, + 'autoselect_on_singleton': False, + 'included_only': False, + } + } list_display = ('soggetto','indirizzo', 'cap','comune','provincia','regione',) ordering = ('comune_id','duf','civico',) autocomplete_list_filter = ('comune',) @@ -321,15 +343,21 @@ class IndirizzoAdmin(HiddenModel, RicercaOrdinataMixin, AjaxAutocompleteListFilt class SedeInline(admin.TabularInline): model = models.Sede - autocomplete_fields = ('comune','cap',) + autocomplete_fields = ('dug','comune','cap','nazione','comune','cap',) + extra = 0 + +class PersonaInline(admin.TabularInline): + model = models.ContattoAziendale + autocomplete_fields = ('persona',) + extra = 0 @admin.register(models.Societa) -class SocietaAdmin(ImportExportModelAdmin): +class SocietaAdmin(ImportExportModelAdmin, AutocompleteAdmin): # resource = resources.SocietaResource # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False - inlines = (SedeInline,) + inlines = (SedeInline,PersonaInline,) search_fields = ('ragione_sociale',) autocomplete_fields = ('soggetto','nazione',) pass diff --git a/django/contatti_app/migrations/0003_alter_societa_options.py b/django/contatti_app/migrations/0003_alter_societa_options.py new file mode 100644 index 0000000..3669b76 --- /dev/null +++ b/django/contatti_app/migrations/0003_alter_societa_options.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.2 on 2023-07-03 11:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("contatti_app", "0002_alter_recapito_options"), + ] + + operations = [ + migrations.AlterModelOptions( + name="societa", + options={"verbose_name": "società", "verbose_name_plural": "società"}, + ), + ] diff --git a/django/contatti_app/models.py b/django/contatti_app/models.py index bfa68b4..38bb45e 100644 --- a/django/contatti_app/models.py +++ b/django/contatti_app/models.py @@ -174,10 +174,10 @@ class ContattoAziendale(models.Model): verbose_name_plural = 'Contatti aziendali' def __str__(self): - return f"ContattoAziendale (id: {self.id})" + return f'{self.persona} per {self.azienda}' - azienda = models.ForeignKey(Societa, on_delete=models.CASCADE, null=False, - blank=False, related_name='contatti_azienda') persona = models.ForeignKey(PersonaFisica, on_delete=models.CASCADE, null=False, blank=False, related_name='aziende_correlate') + azienda = models.ForeignKey(Societa, on_delete=models.CASCADE, null=False, + blank=False, related_name='contatti_azienda') is_personale = models.BooleanField(null=False, blank=False, default=True) diff --git a/django/poetry.lock b/django/poetry.lock index 6dc34ce..f7b1a8c 100644 --- a/django/poetry.lock +++ b/django/poetry.lock @@ -298,6 +298,21 @@ url = "https://git.briq.it/Briq/django-admin-autocomplete-list-filter.git" reference = "HEAD" resolved_reference = "2ff66842c267a7350e4688562f21109cfdb1d93f" +[[package]] +name = "django-admin-interface" +version = "0.26.0" +description = "django's default admin interface with superpowers - customizable themes, popup windows replaced by modals and many other features." +optional = false +python-versions = "*" +files = [ + {file = "django-admin-interface-0.26.0.tar.gz", hash = "sha256:dff7aa2e3eeb6d3676255a92ad5ade9e93277292c01cf9ae27f470246d984019"}, + {file = "django_admin_interface-0.26.0-py3-none-any.whl", hash = "sha256:f633bee7654eecbd120ef0ffcecc3b09b1aa1a553e5ba22c3e6504c02dc3c162"}, +] + +[package.dependencies] +django-colorfield = ">=0.8.0,<1.0.0" +python-slugify = ">=7.0.0,<9.0.0" + [[package]] name = "django-auto-prefetching" version = "0.2.12" @@ -315,6 +330,20 @@ django = ">=2.2" [package.extras] rest-framework-integration = ["djangorestframework (>=3.9,<4.0)"] +[[package]] +name = "django-colorfield" +version = "0.9.0" +description = "color field for django models with a nice color-picker in the admin." +optional = false +python-versions = "*" +files = [ + {file = "django-colorfield-0.9.0.tar.gz", hash = "sha256:208e04dae669ed95f18c4aef02865e9c785873521ffbe5b46fb6ea7a1500c979"}, + {file = "django_colorfield-0.9.0-py3-none-any.whl", hash = "sha256:7df5486de759dce70e54a1854f69bafd0a1e1bf98b66b09661d4d84342f447fc"}, +] + +[package.dependencies] +Pillow = ">=9.0.0" + [[package]] name = "django-cors-headers" version = "3.14.0" @@ -796,6 +825,85 @@ files = [ {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] +[[package]] +name = "pillow" +version = "9.5.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, + {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, + {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, + {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, + {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, + {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, + {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, + {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, + {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, + {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, + {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, + {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, + {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, + {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, + {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, + {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, + {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, + {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, + {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, + {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, + {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, + {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, + {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, + {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, + {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, + {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, + {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, + {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, + {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, + {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, + {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + [[package]] name = "platformdirs" version = "3.6.0" @@ -897,6 +1005,23 @@ files = [ [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-slugify" +version = "8.0.1" +description = "A Python slugify application that also handles Unicode" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, +] + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + [[package]] name = "pytoolconfig" version = "1.2.5" @@ -1071,6 +1196,17 @@ xls = ["xlrd", "xlwt"] xlsx = ["openpyxl (>=2.6.0)"] yaml = ["pyyaml"] +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +optional = false +python-versions = "*" +files = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] + [[package]] name = "tomli" version = "2.0.1" @@ -1480,4 +1616,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "710e5716f756b259532242c53960cf05204aba73665c3e1b050fe74d21539f1c" +content-hash = "9f3ed6d79cd9a9da7790187e80248acfc9e6a3bde4ecf57b43c9b9666d811bf9" diff --git a/django/pyproject.toml b/django/pyproject.toml index a8c59fb..d158e31 100644 --- a/django/pyproject.toml +++ b/django/pyproject.toml @@ -21,6 +21,7 @@ django-ordered-model = "^3.6" django-auto-prefetching = "^0.2.12" django-polymorphic = "^3.1.0" django-admin-autocomplete-list-filter = {git = "https://git.briq.it/Briq/django-admin-autocomplete-list-filter.git"} +django-admin-interface = "^0.26.0" [tool.poetry.group.dev.dependencies] nuitka = "^1.4.4" diff --git a/django/sangue_django/settings.py b/django/sangue_django/settings.py index 09847e8..c08420c 100644 --- a/django/sangue_django/settings.py +++ b/django/sangue_django/settings.py @@ -141,6 +141,8 @@ INSTALLED_APPS = [ 'dati_geo_app.apps.DatiGeograficiAppConfig', 'djaa_list_filter', 'rest_framework', + 'admin_interface', + 'colorfield', # 'rest_framework.authtoken', 'corsheaders', 'drf_yasg', @@ -271,7 +273,7 @@ SECRET_KEY = (os.getenv('SECRET_KEY') tristate_env_flag('SECURE_SSL_REDIRECT') tristate_env_flag('SESSION_COOKIE_SECURE') -# SILENCED_SYSTEM_CHECKS = ['security.W019'] # Per la modale di Django Admin interface +SILENCED_SYSTEM_CHECKS = ['security.W019'] # Per la modale di Django Admin interface # SILKY_ANALYZE_QUERIES = # SILKY_AUTHENTICATION = @@ -319,3 +321,5 @@ USE_I18N = True USE_L10N = True USE_TZ = True + +X_FRAME_OPTIONS = "SAMEORIGIN" \ No newline at end of file