Rinominato polymorphic child e scopro che DB VA BUTTATO!!
parent
422dadc076
commit
3832f7b367
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.7 on 2023-05-14 15:44
|
||||
# Generated by Django 4.2.2 on 2023-06-20 21:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ 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,
|
||||
|
|
@ -84,24 +85,29 @@ class ContattoAziendaleAdmin(ImportExportModelAdmin):
|
|||
list_display = ('persona','azienda','is_personale')
|
||||
pass
|
||||
|
||||
|
||||
@admin.register(models.VoceContattoRubrica)
|
||||
class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdmin):
|
||||
# resource = resources.VoceContattoRubricaResource
|
||||
@admin.register(models.Recapito)
|
||||
class RecapitoAdmin(ImportExportModelAdmin, PolymorphicParentModelAdmin):
|
||||
# resource = resources.RecapitoResource
|
||||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
base_model = models.VoceContattoRubrica
|
||||
child_models = (models.Indirizzo, models.Email, models.Pec, models.Telefono, models.Fax,)
|
||||
base_model = models.Recapito
|
||||
child_models = (models.Indirizzo, models.Sede, models.Email, models.Pec, models.Telefono, models.Fax,)
|
||||
list_filter = (PolymorphicChildModelFilter,)
|
||||
readonly_fields = ('descrizione','tipo',)
|
||||
list_display = ('soggetto','descrizione','tipo',)
|
||||
list_display = ('tipo','soggetto','descrizione',)
|
||||
list_display_links = ('tipo','descrizione',)
|
||||
|
||||
def descrizione(self,obj):
|
||||
return str(getattr(obj,obj.polymorphic_ctype.model))
|
||||
attrib = obj.polymorphic_ctype.model
|
||||
if attrib == 'pec':
|
||||
attrib = 'email'
|
||||
if attrib == 'sede':
|
||||
attrib = 'indirizzo'
|
||||
return str(getattr(obj,attrib))
|
||||
|
||||
def tipo(self, obj):
|
||||
return getattr(obj,obj.polymorphic_ctype.model)._meta.verbose_name.title()
|
||||
return obj.polymorphic_ctype.model_class()._meta.verbose_name.title()
|
||||
tipo.admin_order_field = '_tipo'
|
||||
|
||||
def get_queryset(self, request):
|
||||
|
|
@ -123,20 +129,26 @@ class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin):
|
|||
|
||||
|
||||
@admin.register(models.Email)
|
||||
class EmailAdmin(HiddenModel, PolymorphicChildModelAdmin):
|
||||
class EmailAdmin(HiddenModel, PolymorphicParentModelAdmin, PolymorphicChildModelAdmin):
|
||||
# resource = resources.EmailResource
|
||||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
base_model = models.Recapito
|
||||
child_models = (models.Email, models.Pec,)
|
||||
fields = ('soggetto','indirizzo_email','note',)
|
||||
autocomplete_fields = ('soggetto',)
|
||||
pass
|
||||
|
||||
|
||||
class VoceContattoRubricaInline(StackedPolymorphicInline):
|
||||
class RecapitoInline(StackedPolymorphicInline):
|
||||
class IndirizzoInline(StackedPolymorphicInline.Child):
|
||||
model = models.Indirizzo
|
||||
autocomplete_fields = ('comune','cap',)
|
||||
autocomplete_fields = ('dug','comune','cap','nazione',)
|
||||
|
||||
class SedeInline(StackedPolymorphicInline.Child):
|
||||
model = models.Sede
|
||||
autocomplete_fields = ('dug','comune','cap','nazione',)
|
||||
|
||||
class EmailInline(StackedPolymorphicInline.Child):
|
||||
model = models.Email
|
||||
|
|
@ -150,9 +162,10 @@ class VoceContattoRubricaInline(StackedPolymorphicInline):
|
|||
class FaxInline(StackedPolymorphicInline.Child):
|
||||
model = models.Fax
|
||||
|
||||
model = models.VoceContattoRubrica
|
||||
model = models.Recapito
|
||||
child_inlines = (
|
||||
IndirizzoInline,
|
||||
SedeInline,
|
||||
EmailInline,
|
||||
PecInline,
|
||||
TelefonoInline,
|
||||
|
|
@ -169,7 +182,7 @@ class PersonaFisicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModelAdm
|
|||
show_in_index = False
|
||||
get_model_perms = lambda self, req: {}
|
||||
search_fields = ('nome','cognome',)
|
||||
inlines = (VoceContattoRubricaInline,)
|
||||
inlines = (RecapitoInline,)
|
||||
pass
|
||||
|
||||
|
||||
|
|
@ -181,7 +194,7 @@ class PersonaGiuridicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModel
|
|||
# show_full_result_count = False
|
||||
show_in_index = False
|
||||
get_model_perms = lambda self, req: {}
|
||||
inlines = (VoceContattoRubricaInline,)
|
||||
inlines = (RecapitoInline,)
|
||||
pass
|
||||
|
||||
|
||||
|
|
@ -191,6 +204,8 @@ class SedeAdmin(ImportExportModelAdmin):
|
|||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
list_display=('societa','comune','dug','duf',)
|
||||
autocomplete_fields=('dug','comune','cap','nazione','soggetto','societa',)
|
||||
pass
|
||||
|
||||
|
||||
|
|
@ -206,11 +221,12 @@ class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin):
|
|||
|
||||
|
||||
@admin.register(models.Pec)
|
||||
class PecAdmin(ImportExportModelAdmin):
|
||||
class PecAdmin(HiddenModel, PolymorphicChildModelAdmin):
|
||||
# resource = resources.PecResource
|
||||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
base_model = models.Email
|
||||
fields = ('soggetto','indirizzo_email','note',)
|
||||
autocomplete_fields = ('soggetto',)
|
||||
pass
|
||||
|
|
@ -279,11 +295,17 @@ class IndirizzoAdmin(HiddenModel, RicercaOrdinataMixin, AjaxAutocompleteListFilt
|
|||
pass
|
||||
|
||||
|
||||
class SedeInline(admin.TabularInline):
|
||||
model = models.Sede
|
||||
autocomplete_fields = ('comune','cap',)
|
||||
|
||||
@admin.register(models.Societa)
|
||||
class SocietaAdmin(ImportExportModelAdmin):
|
||||
# resource = resources.SocietaResource
|
||||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
inlines = (SedeInline,)
|
||||
search_fields = ('ragione_sociale',)
|
||||
autocomplete_fields = ('soggetto','nazione',)
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.7 on 2023-05-14 22:57
|
||||
# Generated by Django 4.2.2 on 2023-06-20 21:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
|
@ -8,11 +8,39 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("dati_geo_app", "0007_delete_indirizzo"),
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Recapito",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"polymorphic_ctype",
|
||||
models.ForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "contatto di rubrica",
|
||||
"verbose_name_plural": "contatti di rubrica",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="SoggettoContattabile",
|
||||
fields=[
|
||||
|
|
@ -41,77 +69,41 @@ class Migration(migrations.Migration):
|
|||
"verbose_name_plural": "soggetti contattabili",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="VoceContattoRubrica",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"polymorphic_ctype",
|
||||
models.ForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
(
|
||||
"soggetto",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="contatti",
|
||||
to="contatti_app.soggettocontattabile",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "contatto di rubrica",
|
||||
"verbose_name_plural": "contatti di rubrica",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Email",
|
||||
fields=[
|
||||
(
|
||||
"vocecontattorubrica_ptr",
|
||||
"recapito_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="contatti_app.vocecontattorubrica",
|
||||
to="contatti_app.recapito",
|
||||
),
|
||||
),
|
||||
("indirizzo_email", models.CharField(max_length=30)),
|
||||
("indirizzo_email", models.EmailField(max_length=254)),
|
||||
("note", models.CharField(blank=True, default="", max_length=64)),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "email",
|
||||
"verbose_name_plural": "email",
|
||||
},
|
||||
bases=("contatti_app.vocecontattorubrica",),
|
||||
bases=("contatti_app.recapito",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Fax",
|
||||
fields=[
|
||||
(
|
||||
"vocecontattorubrica_ptr",
|
||||
"recapito_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="contatti_app.vocecontattorubrica",
|
||||
to="contatti_app.recapito",
|
||||
),
|
||||
),
|
||||
("numero", models.CharField(max_length=20)),
|
||||
|
|
@ -121,20 +113,20 @@ class Migration(migrations.Migration):
|
|||
"verbose_name": "fax",
|
||||
"verbose_name_plural": "fax",
|
||||
},
|
||||
bases=("contatti_app.vocecontattorubrica",),
|
||||
bases=("contatti_app.recapito",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Indirizzo",
|
||||
fields=[
|
||||
(
|
||||
"vocecontattorubrica_ptr",
|
||||
"recapito_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="contatti_app.vocecontattorubrica",
|
||||
to="contatti_app.recapito",
|
||||
),
|
||||
),
|
||||
(
|
||||
|
|
@ -192,7 +184,7 @@ class Migration(migrations.Migration):
|
|||
"verbose_name_plural": "indirizzi",
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("contatti_app.vocecontattorubrica", models.Model),
|
||||
bases=("contatti_app.recapito", models.Model),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PersonaFisica",
|
||||
|
|
@ -245,14 +237,14 @@ class Migration(migrations.Migration):
|
|||
name="Telefono",
|
||||
fields=[
|
||||
(
|
||||
"vocecontattorubrica_ptr",
|
||||
"recapito_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="contatti_app.vocecontattorubrica",
|
||||
to="contatti_app.recapito",
|
||||
),
|
||||
),
|
||||
("numero", models.CharField(max_length=20)),
|
||||
|
|
@ -263,7 +255,7 @@ class Migration(migrations.Migration):
|
|||
"verbose_name": "telefono",
|
||||
"verbose_name_plural": "telefono",
|
||||
},
|
||||
bases=("contatti_app.vocecontattorubrica",),
|
||||
bases=("contatti_app.recapito",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Societa",
|
||||
|
|
@ -302,6 +294,15 @@ class Migration(migrations.Migration):
|
|||
"verbose_name_plural": "societa",
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="recapito",
|
||||
name="soggetto",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="contatti",
|
||||
to="contatti_app.soggettocontattabile",
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Pec",
|
||||
fields=[
|
||||
|
|
@ -323,6 +324,41 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
bases=("contatti_app.email",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ContattoAziendale",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("is_personale", models.BooleanField(default=True)),
|
||||
(
|
||||
"azienda",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="contatti_azienda",
|
||||
to="contatti_app.societa",
|
||||
),
|
||||
),
|
||||
(
|
||||
"persona",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="aziende_correlate",
|
||||
to="contatti_app.personafisica",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Contatto aziendale",
|
||||
"verbose_name_plural": "Contatti aziendali",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Sede",
|
||||
fields=[
|
||||
|
|
@ -353,34 +389,4 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
bases=("contatti_app.indirizzo",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PersonaContattoAzienda",
|
||||
fields=[
|
||||
(
|
||||
"personafisica_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="contatti_app.personafisica",
|
||||
),
|
||||
),
|
||||
("is_personale", models.BooleanField(default=True)),
|
||||
(
|
||||
"azienda",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="persone",
|
||||
to="contatti_app.societa",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "personacontattoazienda",
|
||||
"verbose_name_plural": "personacontattoazienda",
|
||||
},
|
||||
bases=("contatti_app.personafisica",),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
# Generated by Django 4.2.2 on 2023-06-20 09:50
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contatti_app", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="email",
|
||||
name="indirizzo_email",
|
||||
field=models.EmailField(max_length=254),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Generated by Django 4.2.2 on 2023-06-20 22:00
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contatti_app", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="recapito",
|
||||
options={"verbose_name": "recapito", "verbose_name_plural": "recapiti"},
|
||||
),
|
||||
]
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
# Generated by Django 4.2.2 on 2023-06-20 13:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contatti_app", "0002_alter_email_indirizzo_email"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="ContattoAziendale",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("is_personale", models.BooleanField(default=True)),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Contatto aziendale",
|
||||
"verbose_name_plural": "Contatti aziendali",
|
||||
},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="personacontattoazienda",
|
||||
name="azienda",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="personacontattoazienda",
|
||||
name="personafisica_ptr",
|
||||
),
|
||||
]
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
# Generated by Django 4.2.2 on 2023-06-20 13:30
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contatti_app", "0003_contattoaziendale_and_more"),
|
||||
("offerte_app", "0002_alter_destinatarioofferta_intestatario"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name="PersonaContattoAzienda",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="contattoaziendale",
|
||||
name="azienda",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="contatti_azienda",
|
||||
to="contatti_app.societa",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="contattoaziendale",
|
||||
name="persona",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="aziende_correlate",
|
||||
to="contatti_app.personafisica",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
<part>personafisica_ptr</part>
|
||||
</key>
|
||||
</table>
|
||||
<table x="2048" y="345" name="VoceContattoRubrica">
|
||||
<table x="2048" y="345" name="Recapito">
|
||||
<row name="id" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default></row>
|
||||
|
|
@ -67,7 +67,7 @@
|
|||
<table x="1820" y="205" name="Telefono">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="numero" null="0" autoincrement="0">
|
||||
<datatype>VARCHAR(20)</datatype>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
<table x="2050" y="220" name="Email">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="indirizzo_email" null="0" autoincrement="0">
|
||||
<datatype>VARCHAR(30)</datatype>
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
<table x="1823" y="349" name="Fax">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="numero" null="1" autoincrement="0">
|
||||
<datatype>VARCHAR(20)</datatype>
|
||||
|
|
@ -181,7 +181,7 @@
|
|||
<table x="2033" y="81" name="Indirizzo">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<key type="PRIMARY" name="">
|
||||
<part>contattorubrica_ptr</part>
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@ class SoggettoContattabile(PolymorphicModel):
|
|||
return str(getattr(self,self.polymorphic_ctype.model))
|
||||
|
||||
|
||||
class VoceContattoRubrica(PolymorphicModel):
|
||||
class Recapito(PolymorphicModel):
|
||||
class Meta:
|
||||
verbose_name = 'contatto di rubrica'
|
||||
verbose_name_plural = 'contatti di rubrica'
|
||||
verbose_name = 'recapito'
|
||||
verbose_name_plural = 'recapiti'
|
||||
|
||||
soggetto = models.ForeignKey(SoggettoContattabile, on_delete=models.CASCADE, null=False,
|
||||
blank=False, related_name="contatti")
|
||||
|
|
@ -64,7 +64,7 @@ class PersonaGiuridica(SoggettoContattabile):
|
|||
denominazione = models.CharField(null=False,blank=False, max_length=80)
|
||||
|
||||
|
||||
class Telefono(VoceContattoRubrica):
|
||||
class Telefono(Recapito):
|
||||
class Meta:
|
||||
verbose_name = 'telefono'
|
||||
verbose_name_plural = 'telefono'
|
||||
|
|
@ -83,7 +83,7 @@ class Telefono(VoceContattoRubrica):
|
|||
note = models.CharField(null=False,blank=True,default='', max_length=64)
|
||||
|
||||
|
||||
class Email(VoceContattoRubrica):
|
||||
class Email(Recapito):
|
||||
class Meta:
|
||||
verbose_name = 'email'
|
||||
verbose_name_plural = 'email'
|
||||
|
|
@ -111,7 +111,7 @@ class Pec(Email):
|
|||
|
||||
|
||||
|
||||
class Fax(VoceContattoRubrica):
|
||||
class Fax(Recapito):
|
||||
class Meta:
|
||||
verbose_name = 'fax'
|
||||
verbose_name_plural = 'fax'
|
||||
|
|
@ -125,7 +125,7 @@ class Fax(VoceContattoRubrica):
|
|||
numero = models.CharField(null=False,blank=False, max_length=20)
|
||||
note = models.CharField(null=False,blank=True,default='', max_length=64)
|
||||
|
||||
class Indirizzo(VoceContattoRubrica, AbstractIndirizzo):
|
||||
class Indirizzo(Recapito, AbstractIndirizzo):
|
||||
class Meta(AbstractIndirizzo.Meta):
|
||||
pass
|
||||
|
||||
|
|
@ -136,7 +136,13 @@ class Sede(Indirizzo):
|
|||
verbose_name_plural = 'sedi'
|
||||
|
||||
def __str__(self):
|
||||
return f"Sede (id: {self.id})"
|
||||
out='Sede '
|
||||
if self.is_legale:
|
||||
out+='legale '
|
||||
else:
|
||||
out+='operativa '
|
||||
out+=f'di {self.dug} {self.duf} {self.civico}, {self.cap} {self.comune.nome} {self.comune.provincia_id}'
|
||||
return out
|
||||
|
||||
societa = models.ForeignKey('Societa', on_delete=models.CASCADE,
|
||||
null=False, blank=False, related_name="sedi")
|
||||
|
|
@ -145,8 +151,8 @@ class Sede(Indirizzo):
|
|||
|
||||
class Societa(models.Model):
|
||||
class Meta:
|
||||
verbose_name = 'societa'
|
||||
verbose_name_plural = 'societa'
|
||||
verbose_name = 'società'
|
||||
verbose_name_plural = 'società'
|
||||
|
||||
def __str__(self):
|
||||
if self.ragione_sociale:
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ class ContattoAziendaleResource(resources.ModelResource):
|
|||
model = models.ContattoAziendale
|
||||
|
||||
|
||||
class VoceContattoRubricaResource(resources.ModelResource):
|
||||
class RecapitoResource(resources.ModelResource):
|
||||
class Meta:
|
||||
model = models.VoceContattoRubrica
|
||||
model = models.Recapito
|
||||
|
||||
|
||||
class TelefonoResource(resources.ModelResource):
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ class ContattoAziendaleSerializer(serializers.ModelSerializer):
|
|||
fields = ('azienda', 'is_personale')
|
||||
|
||||
|
||||
class VoceContattoRubricaSerializer(serializers.ModelSerializer):
|
||||
class RecapitoSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = models.VoceContattoRubrica
|
||||
model = models.Recapito
|
||||
fields = ('soggetto')
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ router = routers.DefaultRouter()
|
|||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||
|
||||
router.register(r'ContattoAziendale', views.ContattoAziendale_View)
|
||||
router.register(r'vocecontattorubrica', views.VoceContattoRubrica_View)
|
||||
router.register(r'recapito', views.Recapito_View)
|
||||
router.register(r'telefono', views.Telefono_View)
|
||||
router.register(r'email', views.Email_View)
|
||||
router.register(r'personafisica', views.PersonaFisica_View)
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ class ContattoAziendale_View(viewsets.ModelViewSet):
|
|||
serializer_class = serializers.ContattoAziendaleSerializer
|
||||
|
||||
|
||||
class VoceContattoRubrica_View(viewsets.ModelViewSet):
|
||||
class Recapito_View(viewsets.ModelViewSet):
|
||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||
# permission_classes = [DjangoModelPermissions]
|
||||
|
||||
queryset = models.VoceContattoRubrica.objects.all()
|
||||
serializer_class = serializers.VoceContattoRubricaSerializer
|
||||
queryset = models.Recapito.objects.all()
|
||||
serializer_class = serializers.RecapitoSerializer
|
||||
|
||||
|
||||
class Telefono_View(viewsets.ModelViewSet):
|
||||
|
|
|
|||
|
|
@ -297,4 +297,5 @@ class NazioneAdmin(admin.ModelAdmin):
|
|||
# list_per_page = 15
|
||||
# paginator = CachingPaginator
|
||||
# show_full_result_count = False
|
||||
search_fields = ('descrizione','codifica',)
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||
# Generated by Django 4.2.2 on 2023-06-20 21:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
|
@ -8,9 +8,9 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("dati_geo_app", "0007_delete_indirizzo"),
|
||||
("contatti_app", "0001_initial"),
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("dati_geo_app", "0007_delete_indirizzo"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
@ -1022,7 +1022,7 @@ class Migration(migrations.Migration):
|
|||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="SoggettiFatturaElettronica_da_DatoDiContatto_contatto_cedente_prestatore",
|
||||
to="contatti_app.vocecontattorubrica",
|
||||
to="contatti_app.recapito",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ class SoggettiFatturaElettronica(models.Model):
|
|||
|
||||
formato_trasmissione = models.ForeignKey('FormatoTrasmissione', on_delete=models.CASCADE, null=True,
|
||||
blank=True, related_name="SoggettiFatturaElettronica_da_FormatoTrasmissione_formato_trasmissione")
|
||||
contatto_cedente_prestatore = models.ForeignKey('contatti_app.VoceContattoRubrica', on_delete=models.CASCADE, null=True,
|
||||
contatto_cedente_prestatore = models.ForeignKey('contatti_app.Recapito', on_delete=models.CASCADE, null=True,
|
||||
blank=True, related_name="SoggettiFatturaElettronica_da_DatoDiContatto_contatto_cedente_prestatore")
|
||||
riferimento_amministrazione = models.CharField(null=True, max_length=20)
|
||||
trasmittente = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||
# Generated by Django 4.2.2 on 2023-06-20 21:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
|
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
dependencies = [
|
||||
("contatti_app", "0001_initial"),
|
||||
("fattura_elettronica_app", "__first__"),
|
||||
("fattura_elettronica_app", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
@ -78,8 +78,8 @@ class Migration(migrations.Migration):
|
|||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario",
|
||||
to="contatti_app.personacontattoazienda",
|
||||
related_name="DestinatarioOfferta_da_contatti_appContattoAziendale_intestatario",
|
||||
to="contatti_app.contattoaziendale",
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
# Generated by Django 4.2.2 on 2023-06-20 13:30
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contatti_app", "0003_contattoaziendale_and_more"),
|
||||
("offerte_app", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="destinatarioofferta",
|
||||
name="intestatario",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="DestinatarioOfferta_da_contatti_appContattoAziendale_intestatario",
|
||||
to="contatti_app.contattoaziendale",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||
# Generated by Django 4.2.2 on 2023-06-20 21:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
|
|
|||
|
|
@ -889,7 +889,7 @@
|
|||
</row>
|
||||
<row name="contatto_cedente_prestatore" null="1" autoincrement="0">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="riferimento_amministrazione" null="1" autoincrement="0">
|
||||
<datatype>VARCHAR(20)</datatype>
|
||||
|
|
@ -1033,7 +1033,7 @@
|
|||
<part>id</part>
|
||||
</key>
|
||||
</table>
|
||||
<table x="2048" y="345" name="VoceContattoRubrica">
|
||||
<table x="2048" y="345" name="Recapito">
|
||||
<row name="id" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default></row>
|
||||
|
|
@ -1048,7 +1048,7 @@
|
|||
<table x="1820" y="205" name="Telefono">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="numero" null="0" autoincrement="0">
|
||||
<datatype>VARCHAR(20)</datatype>
|
||||
|
|
@ -1066,7 +1066,7 @@
|
|||
<table x="2050" y="220" name="Email">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="indirizzo_email" null="0" autoincrement="0">
|
||||
<datatype>VARCHAR(30)</datatype>
|
||||
|
|
@ -1922,7 +1922,7 @@
|
|||
<table x="1823" y="349" name="Fax">
|
||||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||
<default>NULL</default><relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<row name="numero" null="1" autoincrement="0">
|
||||
<datatype>VARCHAR(20)</datatype>
|
||||
|
|
@ -2080,7 +2080,7 @@
|
|||
<row name="contattorubrica_ptr" null="1" autoincrement="1">
|
||||
<datatype>INTEGER</datatype>
|
||||
<default>NULL</default><relation table="AbstractIndirizzo" row="id" />
|
||||
<relation table="VoceContattoRubrica" row="id" />
|
||||
<relation table="Recapito" row="id" />
|
||||
</row>
|
||||
<key type="PRIMARY" name="">
|
||||
<part>contattorubrica_ptr</part>
|
||||
|
|
|
|||
Loading…
Reference in New Issue