{"id":20915735,"url":"https://github.com/kbytesys/django_comuni_italiani","last_synced_at":"2025-05-13T10:33:28.912Z","repository":{"id":51269539,"uuid":"37474857","full_name":"kbytesys/django_comuni_italiani","owner":"kbytesys","description":"Django app for Italian cities and regions","archived":false,"fork":false,"pushed_at":"2023-07-05T08:11:59.000Z","size":1028,"stargazers_count":13,"open_issues_count":3,"forks_count":19,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-01T23:04:03.426Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kbytesys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-15T15:47:44.000Z","updated_at":"2024-12-10T15:50:48.000Z","dependencies_parsed_at":"2024-11-19T05:02:45.174Z","dependency_job_id":null,"html_url":"https://github.com/kbytesys/django_comuni_italiani","commit_stats":{"total_commits":38,"total_committers":5,"mean_commits":7.6,"dds":"0.23684210526315785","last_synced_commit":"56ddf8dbc44d2cccd0289b929f246b5c3b92e256"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbytesys%2Fdjango_comuni_italiani","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbytesys%2Fdjango_comuni_italiani/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbytesys%2Fdjango_comuni_italiani/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbytesys%2Fdjango_comuni_italiani/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbytesys","download_url":"https://codeload.github.com/kbytesys/django_comuni_italiani/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253923147,"owners_count":21984845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T16:18:06.362Z","updated_at":"2025-05-13T10:33:28.373Z","avatar_url":"https://github.com/kbytesys.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Comuni Italiani\n### Applicazione Django per gestire comuni, province e regioni\n\n----\n\nQuesta applicazione django contiene lo stretto necessario per gestire le entità topografiche italiane (regioni, province, città metropolitane, comuni) importate dai dati pubblici dell'istat reperibili al link \u003ca href=\"http://www.istat.it/it/archivio/6789\" target=\"_blank\"\u003ehttp://www.istat.it/it/archivio/6789\u003c/a\u003e\n\n----\n\n### Requisiti e installazione\n\nI requiti sono i seguenti:\n\n - Python 3+\n - Django 1.7+\n\nPer l'installazione potete utilizzare pip:\n\n```bash\n\npip install django-comuni-italiani\n\n```\n\nOppure prendere l'ultima versione da github \u003ca href=\"https://github.com/kbytesys/django_comuni_italiani\" target=\"_blank\"\u003ehttps://github.com/kbytesys/django_comuni_italiani\u003c/a\u003e\ned eseguire il classico:\n\n```bash\n\n./setup.py install\n\n```\n\nNella configurazione di django aggiungi l'applicazione dove ti è più conveniente:\n\n```python\n\nINSTALLED_APPS = (\n    ...\n    'comuni_italiani',\n    ...\n)\n\n```\n\nL'app dispone di alcune viste per chiamate ajax e alto, dovrete dunque aggiungere gli url a quelli del vostro\nprogetto:\n\n```python\n\nurlpatterns = [\n    ...\n    url(r'^comuni_italiani/', include('comuni_italiani.urls', namespace='comuni_italiani')),\n    ...\n]\n\n```\n\nIn Django 2:\n```python\n\nfrom django.urls import path, include\n\nurlpatterns = [\n    ...\n    path('comuni_italiani/', include('comuni_italiani.urls', namespace='comuni_italiani')),\n    ...\n]\n\n```\n\nUn dump dei dati più aggiornati al momento del rilascio è distribuito sotto forma di fixture. Esso può essere caricato\ncon il seguente comando:\n\n```bash\n\n./manage.py loaddata --app comuni_italiani comuni_italiani.json\n\n```\n\n### Chiamate ajax/json\nL'app vi fornisce alcune chiamate per l'elenco e la ricerca delle diverse entità attraverso json/ajax.\n\nTroverete la documentazione completa nel \u003ca href=\"https://github.com/kbytesys/django_comuni_italiani/wiki/ChiamateJsonAjax\" target=\"_blank\"\u003ewiki\u003c/a\u003e.\n\n### Supporto django-autocomplete-light\nSe utilizzate django-autocomplete-light potete facilmente aggiungere le definizioni per il completamento automatico aggiungendo\nla seguente app tra quelle installate:\n\n```python\nINSTALLED_APPS = (\n    ...\n    'comuni_italiani',\n    'comuni_italiani.autocomplete',\n    ...\n)\n```\n\nOvviamente dovete aver aggiunto autocomplete light seguendo la documentazione che troverete  \u003ca href=\"https://github.com/yourlabs/django-autocomplete-light\"\u003equi\u003c/a\u003e.\n\nGli URL a disposizione per l'autocompletamento sono i seguenti:\n\n*  `regione-autocomplete`\n*  `provincia-autocomplete`\n*  `cittametropolitana-autocomplete`\n*  `comune-autocomplete`\n\nSupportano il _forward_ (filtro selezionando oggetto padre, es. regione =\u003e provincia) tutti tranne regione-autocomplete.\n\n### Un esempio\n\nModel con _ForeignKey_ ad un comune e un form con `django-autocomplete-light`:\n\n```python\n# models.py\n\nclass Anagrafica(models.Model):\n    nome = models.CharField(max_length=32)\n    email = models.EmailField()\n    citta = models.ForeignKey(\n        'comuni_italiani.Comune', on_delete=models.PROTECT\n    )\n\n```\n\n```python\n# urls.py\n\nfrom django.urls import path, include\n\nurlpatterns = [\n\t# i tuoi url, es. admin\n\tpath('admin/', admin.site.urls),\n\t# includi gli URLs per l'autocompletamento\n\tpath('ac/comuni/', include('comuni_italiani.autocomplete.urls')),\n]\n```\n\n```python\n# forms.py\n\nfrom dal import autocomplete\nfrom django import forms\nfrom . import models\n\n\nclass AnagraficaForm(forms.ModelForm):\n\n    class Meta:\n        model = models.Anagrafica\n        fields = ('__all__')\n        widgets = {\n            'comune': autocomplete.ModelSelect2Multiple(\n                url='comune-autocomplete'\n            )\n        }\n```\n\nPotete verificarne il funzionamento nell'admin:\n\n```python\n# admin.py\n\nfrom django.contrib import admin\nfrom . import models\nfrom . import forms\n\n\n@admin.register(models.Anagrafica)\nclass AnagraficaAdmin(admin.ModelAdmin):\n    form = forms.AnagraficaForm\n```\n\n\n### Aggiornamento dei dati\nPurtroppo l'aggiornamento dei dati non è un'operazione semplice, soprattutto perché i tuoi dati contenuti nelle\napplicazioni che svilupperai potrebbero essere legati a dati soggetti a cambiamenti (hanno abrogato una provincia? maledetti!)\n\n```bash\n\n./manage.py import_regioni_prov\n./manage.py import_comuni\n\n```\n\nEntrambi i comandi possono accettare i file csv aggiornati presi dal sito dell'istat. Tuttavia se la loro struttura (o\nanche semplicemente il nome della colonna) cambia, l'importazione potrebbe fallire.\n\nPer l'aggiornamento delle province e regioni attualmente non viene eseguito alcun particolare controllo nel caso di rimozione,\nin quanto è un'operazione delicata che deve essere gestita manualmente in base alle vostre basi dati.\n\nL'aggiornamento dei comuni è più intelligente.\n\n - Durante l'aggiornamento se viene rilevato un comune con lo stesso codice istat, ma con diverso nome, verrà richiesto\n di confermare l'aggiornamento o saltare il record. Ciò evita probabili inconvenienti durante le (rare)\n rinumerazioni dei comuni in una provincia.\n\n - Al termine dell'aggiornamento vengono elencati i comuni presenti del db, ma assenti nel csv. Ciò vi aiuterà a rilevare\n i comuni eliminati/abrogati/accorpati\n\n - Al termine dell'aggiornamento verranno elencati i comuni *omonimi*. Attualmente sono presenti 8 nomi di comune uguali\n per un totale di 16 comuni\n\nIn ogni caso sarà vostro compito fare i dovuti aggiustamenti.\n\n### FAQ\n**A quando risale l'ultimo aggiornamento dei dati?**\u003cbr\u003e\nL'applicazione ha già inclusi i dati istat aggiornati al 30 gennaio 2015\n\n**Perchè documentazione e codice sorgente sono in Italiano?**\u003cbr\u003e\nQuesta appliazione ha uno scopo intimamente riservato al \"mercato\" italiano. In genere se si ha la necessità\ndi utilizzare luoghi e lingue diverse consiglio l'uso di \u003ca href=\"https://github.com/yourlabs/django-cities-light\" target=\"_blank\"\u003edjango-cities-light\u003c/a\u003e oppure di \u003ca href=\"https://github.com/coderholic/django-cities\" target=\"_blank\"\u003edjango-cities\u003c/a\u003e\n\n**Posso aggiornare i comuni eliminandoli e reimportando i dati da zero?**\u003cbr\u003e\nAssumento che tu possa farlo sbloccando temporaneamente le foreign keys, non è una buona idea. Mentre province e regioni hanno sempre lo stesso codice istat,\nil codice istat di un comune può cambiare. Per questo motivo i comuni hanno una chiave numerica autogenerata che potrebbe non essere coerente tra un'importazione\ne l'altra.\n\n**Nei nuovi dati non trovo più la superfice e l'altitudine dei comuni!**\u003cbr\u003e\nNei dati del 2016 l'Istat ha deciso di non includere quelle informazioni nelle loro esportazioni.\n\n### TODO\n - Form temizzabili per selezionare una provincia da regione e un comune da provincia\n(se si usa [django-autocomplete-light](https://github.com/yourlabs/django-autocomplete-light) non c'è bisogno).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbytesys%2Fdjango_comuni_italiani","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbytesys%2Fdjango_comuni_italiani","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbytesys%2Fdjango_comuni_italiani/lists"}