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
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.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

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

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>
</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>

View File

@ -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:

View File

@ -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):

View File

@ -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')

View File

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

View File

@ -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):

View File

@ -297,4 +297,5 @@ class NazioneAdmin(admin.ModelAdmin):
# list_per_page = 15
# paginator = CachingPaginator
# show_full_result_count = False
search_fields = ('descrizione','codifica',)
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
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(

View File

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

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

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
import django.db.models.deletion

View File

@ -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>