Rinominato polymorphic child e scopro che DB VA BUTTATO!!

my-submodulepoetico
Guido Longoni 2023-06-21 15:26:33 +02:00
parent 422dadc076
commit 3832f7b367
20 changed files with 187 additions and 252 deletions

View File

@ -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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion

View File

@ -6,6 +6,7 @@ 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 django.db.models import F
from django.contrib.contenttypes.models import ContentType
from import_export.admin import ImportExportModelAdmin from import_export.admin import ImportExportModelAdmin
from polymorphic.admin import (PolymorphicChildModelAdmin, from polymorphic.admin import (PolymorphicChildModelAdmin,
PolymorphicChildModelFilter, PolymorphicChildModelFilter,
@ -84,24 +85,29 @@ class ContattoAziendaleAdmin(ImportExportModelAdmin):
list_display = ('persona','azienda','is_personale') list_display = ('persona','azienda','is_personale')
pass pass
@admin.register(models.Recapito)
@admin.register(models.VoceContattoRubrica) class RecapitoAdmin(ImportExportModelAdmin, PolymorphicParentModelAdmin):
class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdmin): # resource = resources.RecapitoResource
# resource = resources.VoceContattoRubricaResource
# 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.VoceContattoRubrica base_model = models.Recapito
child_models = (models.Indirizzo, models.Email, models.Pec, models.Telefono, models.Fax,) child_models = (models.Indirizzo, models.Sede, 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 = ('tipo','soggetto','descrizione',)
list_display_links = ('tipo','descrizione',)
def descrizione(self,obj): 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): 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' tipo.admin_order_field = '_tipo'
def get_queryset(self, request): def get_queryset(self, request):
@ -123,20 +129,26 @@ class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin):
@admin.register(models.Email) @admin.register(models.Email)
class EmailAdmin(HiddenModel, PolymorphicChildModelAdmin): class EmailAdmin(HiddenModel, PolymorphicParentModelAdmin, PolymorphicChildModelAdmin):
# resource = resources.EmailResource # resource = resources.EmailResource
# 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.Recapito
child_models = (models.Email, models.Pec,)
fields = ('soggetto','indirizzo_email','note',) fields = ('soggetto','indirizzo_email','note',)
autocomplete_fields = ('soggetto',) autocomplete_fields = ('soggetto',)
pass pass
class VoceContattoRubricaInline(StackedPolymorphicInline): class RecapitoInline(StackedPolymorphicInline):
class IndirizzoInline(StackedPolymorphicInline.Child): class IndirizzoInline(StackedPolymorphicInline.Child):
model = models.Indirizzo 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): class EmailInline(StackedPolymorphicInline.Child):
model = models.Email model = models.Email
@ -150,9 +162,10 @@ class VoceContattoRubricaInline(StackedPolymorphicInline):
class FaxInline(StackedPolymorphicInline.Child): class FaxInline(StackedPolymorphicInline.Child):
model = models.Fax model = models.Fax
model = models.VoceContattoRubrica model = models.Recapito
child_inlines = ( child_inlines = (
IndirizzoInline, IndirizzoInline,
SedeInline,
EmailInline, EmailInline,
PecInline, PecInline,
TelefonoInline, TelefonoInline,
@ -169,7 +182,7 @@ class PersonaFisicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModelAdm
show_in_index = False show_in_index = False
get_model_perms = lambda self, req: {} get_model_perms = lambda self, req: {}
search_fields = ('nome','cognome',) search_fields = ('nome','cognome',)
inlines = (VoceContattoRubricaInline,) inlines = (RecapitoInline,)
pass pass
@ -181,7 +194,7 @@ class PersonaGiuridicaAdmin(PolymorphicInlineSupportMixin, PolymorphicChildModel
# show_full_result_count = False # show_full_result_count = False
show_in_index = False show_in_index = False
get_model_perms = lambda self, req: {} get_model_perms = lambda self, req: {}
inlines = (VoceContattoRubricaInline,) inlines = (RecapitoInline,)
pass pass
@ -191,6 +204,8 @@ class SedeAdmin(ImportExportModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
list_display=('societa','comune','dug','duf',)
autocomplete_fields=('dug','comune','cap','nazione','soggetto','societa',)
pass pass
@ -206,11 +221,12 @@ class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin):
@admin.register(models.Pec) @admin.register(models.Pec)
class PecAdmin(ImportExportModelAdmin): class PecAdmin(HiddenModel, PolymorphicChildModelAdmin):
# resource = resources.PecResource # resource = resources.PecResource
# 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.Email
fields = ('soggetto','indirizzo_email','note',) fields = ('soggetto','indirizzo_email','note',)
autocomplete_fields = ('soggetto',) autocomplete_fields = ('soggetto',)
pass pass
@ -279,11 +295,17 @@ class IndirizzoAdmin(HiddenModel, RicercaOrdinataMixin, AjaxAutocompleteListFilt
pass pass
class SedeInline(admin.TabularInline):
model = models.Sede
autocomplete_fields = ('comune','cap',)
@admin.register(models.Societa) @admin.register(models.Societa)
class SocietaAdmin(ImportExportModelAdmin): class SocietaAdmin(ImportExportModelAdmin):
# resource = resources.SocietaResource # resource = resources.SocietaResource
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
inlines = (SedeInline,)
search_fields = ('ragione_sociale',) search_fields = ('ragione_sociale',)
autocomplete_fields = ('soggetto','nazione',)
pass pass

View File

@ -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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
@ -8,11 +8,39 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
("contenttypes", "0002_remove_content_type_name"),
("dati_geo_app", "0007_delete_indirizzo"), ("dati_geo_app", "0007_delete_indirizzo"),
("contenttypes", "0002_remove_content_type_name"),
] ]
operations = [ 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( migrations.CreateModel(
name="SoggettoContattabile", name="SoggettoContattabile",
fields=[ fields=[
@ -41,77 +69,41 @@ class Migration(migrations.Migration):
"verbose_name_plural": "soggetti contattabili", "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( migrations.CreateModel(
name="Email", name="Email",
fields=[ fields=[
( (
"vocecontattorubrica_ptr", "recapito_ptr",
models.OneToOneField( models.OneToOneField(
auto_created=True, auto_created=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
parent_link=True, parent_link=True,
primary_key=True, primary_key=True,
serialize=False, 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)), ("note", models.CharField(blank=True, default="", max_length=64)),
], ],
options={ options={
"verbose_name": "email", "verbose_name": "email",
"verbose_name_plural": "email", "verbose_name_plural": "email",
}, },
bases=("contatti_app.vocecontattorubrica",), bases=("contatti_app.recapito",),
), ),
migrations.CreateModel( migrations.CreateModel(
name="Fax", name="Fax",
fields=[ fields=[
( (
"vocecontattorubrica_ptr", "recapito_ptr",
models.OneToOneField( models.OneToOneField(
auto_created=True, auto_created=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
parent_link=True, parent_link=True,
primary_key=True, primary_key=True,
serialize=False, serialize=False,
to="contatti_app.vocecontattorubrica", to="contatti_app.recapito",
), ),
), ),
("numero", models.CharField(max_length=20)), ("numero", models.CharField(max_length=20)),
@ -121,20 +113,20 @@ class Migration(migrations.Migration):
"verbose_name": "fax", "verbose_name": "fax",
"verbose_name_plural": "fax", "verbose_name_plural": "fax",
}, },
bases=("contatti_app.vocecontattorubrica",), bases=("contatti_app.recapito",),
), ),
migrations.CreateModel( migrations.CreateModel(
name="Indirizzo", name="Indirizzo",
fields=[ fields=[
( (
"vocecontattorubrica_ptr", "recapito_ptr",
models.OneToOneField( models.OneToOneField(
auto_created=True, auto_created=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
parent_link=True, parent_link=True,
primary_key=True, primary_key=True,
serialize=False, serialize=False,
to="contatti_app.vocecontattorubrica", to="contatti_app.recapito",
), ),
), ),
( (
@ -192,7 +184,7 @@ class Migration(migrations.Migration):
"verbose_name_plural": "indirizzi", "verbose_name_plural": "indirizzi",
"abstract": False, "abstract": False,
}, },
bases=("contatti_app.vocecontattorubrica", models.Model), bases=("contatti_app.recapito", models.Model),
), ),
migrations.CreateModel( migrations.CreateModel(
name="PersonaFisica", name="PersonaFisica",
@ -245,14 +237,14 @@ class Migration(migrations.Migration):
name="Telefono", name="Telefono",
fields=[ fields=[
( (
"vocecontattorubrica_ptr", "recapito_ptr",
models.OneToOneField( models.OneToOneField(
auto_created=True, auto_created=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
parent_link=True, parent_link=True,
primary_key=True, primary_key=True,
serialize=False, serialize=False,
to="contatti_app.vocecontattorubrica", to="contatti_app.recapito",
), ),
), ),
("numero", models.CharField(max_length=20)), ("numero", models.CharField(max_length=20)),
@ -263,7 +255,7 @@ class Migration(migrations.Migration):
"verbose_name": "telefono", "verbose_name": "telefono",
"verbose_name_plural": "telefono", "verbose_name_plural": "telefono",
}, },
bases=("contatti_app.vocecontattorubrica",), bases=("contatti_app.recapito",),
), ),
migrations.CreateModel( migrations.CreateModel(
name="Societa", name="Societa",
@ -302,6 +294,15 @@ class Migration(migrations.Migration):
"verbose_name_plural": "societa", "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( migrations.CreateModel(
name="Pec", name="Pec",
fields=[ fields=[
@ -323,6 +324,41 @@ class Migration(migrations.Migration):
}, },
bases=("contatti_app.email",), 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( migrations.CreateModel(
name="Sede", name="Sede",
fields=[ fields=[
@ -353,34 +389,4 @@ class Migration(migrations.Migration):
}, },
bases=("contatti_app.indirizzo",), 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",),
),
] ]

View File

@ -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),
),
]

View File

@ -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"},
),
]

View File

@ -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",
),
]

View File

@ -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",
),
),
]

View File

@ -52,7 +52,7 @@
<part>personafisica_ptr</part> <part>personafisica_ptr</part>
</key> </key>
</table> </table>
<table x="2048" y="345" name="VoceContattoRubrica"> <table x="2048" y="345" name="Recapito">
<row name="id" null="1" autoincrement="1"> <row name="id" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default></row> <default>NULL</default></row>
@ -67,7 +67,7 @@
<table x="1820" y="205" name="Telefono"> <table x="1820" y="205" name="Telefono">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="numero" null="0" autoincrement="0"> <row name="numero" null="0" autoincrement="0">
<datatype>VARCHAR(20)</datatype> <datatype>VARCHAR(20)</datatype>
@ -85,7 +85,7 @@
<table x="2050" y="220" name="Email"> <table x="2050" y="220" name="Email">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="indirizzo_email" null="0" autoincrement="0"> <row name="indirizzo_email" null="0" autoincrement="0">
<datatype>VARCHAR(30)</datatype> <datatype>VARCHAR(30)</datatype>
@ -149,7 +149,7 @@
<table x="1823" y="349" name="Fax"> <table x="1823" y="349" name="Fax">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="numero" null="1" autoincrement="0"> <row name="numero" null="1" autoincrement="0">
<datatype>VARCHAR(20)</datatype> <datatype>VARCHAR(20)</datatype>
@ -181,7 +181,7 @@
<table x="2033" y="81" name="Indirizzo"> <table x="2033" y="81" name="Indirizzo">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<key type="PRIMARY" name=""> <key type="PRIMARY" name="">
<part>contattorubrica_ptr</part> <part>contattorubrica_ptr</part>

View File

@ -13,10 +13,10 @@ class SoggettoContattabile(PolymorphicModel):
return str(getattr(self,self.polymorphic_ctype.model)) return str(getattr(self,self.polymorphic_ctype.model))
class VoceContattoRubrica(PolymorphicModel): class Recapito(PolymorphicModel):
class Meta: class Meta:
verbose_name = 'contatto di rubrica' verbose_name = 'recapito'
verbose_name_plural = 'contatti di rubrica' verbose_name_plural = 'recapiti'
soggetto = models.ForeignKey(SoggettoContattabile, on_delete=models.CASCADE, null=False, soggetto = models.ForeignKey(SoggettoContattabile, on_delete=models.CASCADE, null=False,
blank=False, related_name="contatti") blank=False, related_name="contatti")
@ -64,7 +64,7 @@ class PersonaGiuridica(SoggettoContattabile):
denominazione = models.CharField(null=False,blank=False, max_length=80) denominazione = models.CharField(null=False,blank=False, max_length=80)
class Telefono(VoceContattoRubrica): class Telefono(Recapito):
class Meta: class Meta:
verbose_name = 'telefono' verbose_name = 'telefono'
verbose_name_plural = 'telefono' verbose_name_plural = 'telefono'
@ -83,7 +83,7 @@ class Telefono(VoceContattoRubrica):
note = models.CharField(null=False,blank=True,default='', max_length=64) note = models.CharField(null=False,blank=True,default='', max_length=64)
class Email(VoceContattoRubrica): class Email(Recapito):
class Meta: class Meta:
verbose_name = 'email' verbose_name = 'email'
verbose_name_plural = 'email' verbose_name_plural = 'email'
@ -111,7 +111,7 @@ class Pec(Email):
class Fax(VoceContattoRubrica): class Fax(Recapito):
class Meta: class Meta:
verbose_name = 'fax' verbose_name = 'fax'
verbose_name_plural = 'fax' verbose_name_plural = 'fax'
@ -125,7 +125,7 @@ class Fax(VoceContattoRubrica):
numero = models.CharField(null=False,blank=False, max_length=20) numero = models.CharField(null=False,blank=False, max_length=20)
note = models.CharField(null=False,blank=True,default='', max_length=64) note = models.CharField(null=False,blank=True,default='', max_length=64)
class Indirizzo(VoceContattoRubrica, AbstractIndirizzo): class Indirizzo(Recapito, AbstractIndirizzo):
class Meta(AbstractIndirizzo.Meta): class Meta(AbstractIndirizzo.Meta):
pass pass
@ -136,7 +136,13 @@ class Sede(Indirizzo):
verbose_name_plural = 'sedi' verbose_name_plural = 'sedi'
def __str__(self): 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, societa = models.ForeignKey('Societa', on_delete=models.CASCADE,
null=False, blank=False, related_name="sedi") null=False, blank=False, related_name="sedi")
@ -145,8 +151,8 @@ class Sede(Indirizzo):
class Societa(models.Model): class Societa(models.Model):
class Meta: class Meta:
verbose_name = 'societa' verbose_name = 'società'
verbose_name_plural = 'societa' verbose_name_plural = 'società'
def __str__(self): def __str__(self):
if self.ragione_sociale: if self.ragione_sociale:

View File

@ -9,9 +9,9 @@ class ContattoAziendaleResource(resources.ModelResource):
model = models.ContattoAziendale model = models.ContattoAziendale
class VoceContattoRubricaResource(resources.ModelResource): class RecapitoResource(resources.ModelResource):
class Meta: class Meta:
model = models.VoceContattoRubrica model = models.Recapito
class TelefonoResource(resources.ModelResource): class TelefonoResource(resources.ModelResource):

View File

@ -10,9 +10,9 @@ class ContattoAziendaleSerializer(serializers.ModelSerializer):
fields = ('azienda', 'is_personale') fields = ('azienda', 'is_personale')
class VoceContattoRubricaSerializer(serializers.ModelSerializer): class RecapitoSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.VoceContattoRubrica model = models.Recapito
fields = ('soggetto') fields = ('soggetto')

View File

@ -12,7 +12,7 @@ router = routers.DefaultRouter()
# --------------- FINE PREFISSO TEMPLATE --------------- # --------------- FINE PREFISSO TEMPLATE ---------------
router.register(r'ContattoAziendale', views.ContattoAziendale_View) 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'telefono', views.Telefono_View)
router.register(r'email', views.Email_View) router.register(r'email', views.Email_View)
router.register(r'personafisica', views.PersonaFisica_View) router.register(r'personafisica', views.PersonaFisica_View)

View File

@ -27,12 +27,12 @@ class ContattoAziendale_View(viewsets.ModelViewSet):
serializer_class = serializers.ContattoAziendaleSerializer serializer_class = serializers.ContattoAziendaleSerializer
class VoceContattoRubrica_View(viewsets.ModelViewSet): class Recapito_View(viewsets.ModelViewSet):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication] # authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions] # permission_classes = [DjangoModelPermissions]
queryset = models.VoceContattoRubrica.objects.all() queryset = models.Recapito.objects.all()
serializer_class = serializers.VoceContattoRubricaSerializer serializer_class = serializers.RecapitoSerializer
class Telefono_View(viewsets.ModelViewSet): class Telefono_View(viewsets.ModelViewSet):

View File

@ -297,4 +297,5 @@ class NazioneAdmin(admin.ModelAdmin):
# list_per_page = 15 # list_per_page = 15
# paginator = CachingPaginator # paginator = CachingPaginator
# show_full_result_count = False # show_full_result_count = False
search_fields = ('descrizione','codifica',)
pass pass

View File

@ -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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
@ -8,9 +8,9 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
("dati_geo_app", "0007_delete_indirizzo"),
("contatti_app", "0001_initial"), ("contatti_app", "0001_initial"),
("contenttypes", "0002_remove_content_type_name"), ("contenttypes", "0002_remove_content_type_name"),
("dati_geo_app", "0007_delete_indirizzo"),
] ]
operations = [ operations = [
@ -1022,7 +1022,7 @@ class Migration(migrations.Migration):
null=True, null=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
related_name="SoggettiFatturaElettronica_da_DatoDiContatto_contatto_cedente_prestatore", related_name="SoggettiFatturaElettronica_da_DatoDiContatto_contatto_cedente_prestatore",
to="contatti_app.vocecontattorubrica", to="contatti_app.recapito",
), ),
), ),
migrations.AddField( migrations.AddField(

View File

@ -137,7 +137,7 @@ class SoggettiFatturaElettronica(models.Model):
formato_trasmissione = models.ForeignKey('FormatoTrasmissione', on_delete=models.CASCADE, null=True, formato_trasmissione = models.ForeignKey('FormatoTrasmissione', on_delete=models.CASCADE, null=True,
blank=True, related_name="SoggettiFatturaElettronica_da_FormatoTrasmissione_formato_trasmissione") 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") blank=True, related_name="SoggettiFatturaElettronica_da_DatoDiContatto_contatto_cedente_prestatore")
riferimento_amministrazione = models.CharField(null=True, max_length=20) riferimento_amministrazione = models.CharField(null=True, max_length=20)
trasmittente = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, trasmittente = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE,

View File

@ -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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
dependencies = [ dependencies = [
("contatti_app", "0001_initial"), ("contatti_app", "0001_initial"),
("fattura_elettronica_app", "__first__"), ("fattura_elettronica_app", "0001_initial"),
] ]
operations = [ operations = [
@ -78,8 +78,8 @@ class Migration(migrations.Migration):
blank=True, blank=True,
null=True, null=True,
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario", related_name="DestinatarioOfferta_da_contatti_appContattoAziendale_intestatario",
to="contatti_app.personacontattoazienda", to="contatti_app.contattoaziendale",
), ),
), ),
], ],

View File

@ -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",
),
),
]

View File

@ -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 from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion

View File

@ -889,7 +889,7 @@
</row> </row>
<row name="contatto_cedente_prestatore" null="1" autoincrement="0"> <row name="contatto_cedente_prestatore" null="1" autoincrement="0">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="riferimento_amministrazione" null="1" autoincrement="0"> <row name="riferimento_amministrazione" null="1" autoincrement="0">
<datatype>VARCHAR(20)</datatype> <datatype>VARCHAR(20)</datatype>
@ -1033,7 +1033,7 @@
<part>id</part> <part>id</part>
</key> </key>
</table> </table>
<table x="2048" y="345" name="VoceContattoRubrica"> <table x="2048" y="345" name="Recapito">
<row name="id" null="1" autoincrement="1"> <row name="id" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default></row> <default>NULL</default></row>
@ -1048,7 +1048,7 @@
<table x="1820" y="205" name="Telefono"> <table x="1820" y="205" name="Telefono">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="numero" null="0" autoincrement="0"> <row name="numero" null="0" autoincrement="0">
<datatype>VARCHAR(20)</datatype> <datatype>VARCHAR(20)</datatype>
@ -1066,7 +1066,7 @@
<table x="2050" y="220" name="Email"> <table x="2050" y="220" name="Email">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="indirizzo_email" null="0" autoincrement="0"> <row name="indirizzo_email" null="0" autoincrement="0">
<datatype>VARCHAR(30)</datatype> <datatype>VARCHAR(30)</datatype>
@ -1922,7 +1922,7 @@
<table x="1823" y="349" name="Fax"> <table x="1823" y="349" name="Fax">
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="VoceContattoRubrica" row="id" /> <default>NULL</default><relation table="Recapito" row="id" />
</row> </row>
<row name="numero" null="1" autoincrement="0"> <row name="numero" null="1" autoincrement="0">
<datatype>VARCHAR(20)</datatype> <datatype>VARCHAR(20)</datatype>
@ -2080,7 +2080,7 @@
<row name="contattorubrica_ptr" null="1" autoincrement="1"> <row name="contattorubrica_ptr" null="1" autoincrement="1">
<datatype>INTEGER</datatype> <datatype>INTEGER</datatype>
<default>NULL</default><relation table="AbstractIndirizzo" row="id" /> <default>NULL</default><relation table="AbstractIndirizzo" row="id" />
<relation table="VoceContattoRubrica" row="id" /> <relation table="Recapito" row="id" />
</row> </row>
<key type="PRIMARY" name=""> <key type="PRIMARY" name="">
<part>contattorubrica_ptr</part> <part>contattorubrica_ptr</part>