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
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
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 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
|
||||||
|
|
|
||||||
|
|
@ -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",),
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -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>
|
<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>
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -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
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue