contatti_app
parent
fb86d21623
commit
3fc0f7ae2b
|
|
@ -8,13 +8,16 @@ from dati_geo_app.admin import RicercaOrdinataMixin, AjaxAutocompleteListFilterM
|
||||||
|
|
||||||
# Modified version of a GIST I found in a SO thread
|
# Modified version of a GIST I found in a SO thread
|
||||||
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
|
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
|
||||||
|
|
||||||
|
|
||||||
class CachingPaginator(Paginator):
|
class CachingPaginator(Paginator):
|
||||||
def _get_count(self):
|
def _get_count(self):
|
||||||
if not hasattr(self, "_count"):
|
if not hasattr(self, "_count"):
|
||||||
self._count = None
|
self._count = None
|
||||||
if self._count is None:
|
if self._count is None:
|
||||||
try:
|
try:
|
||||||
key = "adm:{0}:count".format(hash(self.object_list.query.__str__()))
|
key = "adm:{0}:count".format(
|
||||||
|
hash(self.object_list.query.__str__()))
|
||||||
self._count = cache.get(key, -1)
|
self._count = cache.get(key, -1)
|
||||||
if self._count == -1:
|
if self._count == -1:
|
||||||
self._count = super().count
|
self._count = super().count
|
||||||
|
|
@ -47,6 +50,15 @@ class PersonaContattoAziendaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.VoceContattoRubrica)
|
||||||
|
class VoceContattoRubricaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.VoceContattoRubricaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Telefono)
|
@admin.register(models.Telefono)
|
||||||
class TelefonoAdmin(ImportExportModelAdmin):
|
class TelefonoAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.TelefonoResource
|
# resource = resources.TelefonoResource
|
||||||
|
|
@ -110,34 +122,28 @@ class PecAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.SoggettoContattabile)
|
||||||
|
class SoggettoContattabileAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.SoggettoContattabileResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Indirizzo)
|
@admin.register(models.Indirizzo)
|
||||||
class IndirizzoAdmin(RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin):
|
class IndirizzoAdmin(ImportExportModelAdmin):
|
||||||
list_per_page = 15
|
# resource = resources.IndirizzoResource
|
||||||
paginator = CachingPaginator
|
# list_per_page = 15
|
||||||
show_full_result_count = False
|
# paginator = CachingPaginator
|
||||||
fields=('dug','duf','civico','cap','comune','altro',)
|
# show_full_result_count = False
|
||||||
search_fields = ('indirizzo','cap_id__exact',)
|
pass
|
||||||
autocomplete_fields = ('dug','cap','comune',)
|
|
||||||
list_display = ('indirizzo', 'cap','comune','provincia','regione',)
|
|
||||||
ordering = ('comune_id','duf','civico',)
|
|
||||||
autocomplete_list_filter = ('comune',)
|
|
||||||
list_filter = ('comune__provincia__regione_id',)
|
|
||||||
|
|
||||||
def get_queryset(self, request):
|
|
||||||
queryset = super().get_queryset(request).select_related('comune__provincia__regione').annotate(indirizzo=Concat('dug_id',Value(' '),'duf',Value(' '),'civico'))
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
def provincia(self, obj):
|
@admin.register(models.Societa)
|
||||||
return obj.comune.provincia
|
class SocietaAdmin(ImportExportModelAdmin):
|
||||||
provincia.short_description = 'Provincia'
|
# resource = resources.SocietaResource
|
||||||
provincia.admin_order_field = 'comune__provincia_id'
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
def regione(self, obj):
|
# show_full_result_count = False
|
||||||
return obj.comune.provincia.regione_id
|
pass
|
||||||
regione.short_description = 'Regione'
|
|
||||||
regione.admin_order_field = 'comune__provincia__regione_id'
|
|
||||||
|
|
||||||
def indirizzo(self, obj):
|
|
||||||
return obj.indirizzo
|
|
||||||
indirizzo.short_description = 'Indirizzo'
|
|
||||||
indirizzo.admin_order_field = ('comune_id','duf','civico',)
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 15:43
|
# Generated by Django 4.1.7 on 2023-05-14 22:57
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -25,7 +25,6 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("rimosso", models.BooleanField(blank=True, null=True)),
|
|
||||||
(
|
(
|
||||||
"polymorphic_ctype",
|
"polymorphic_ctype",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
|
|
@ -93,7 +92,7 @@ class Migration(migrations.Migration):
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("indirizzo_email", models.CharField(max_length=30)),
|
("indirizzo_email", models.CharField(max_length=30)),
|
||||||
("note", models.CharField(max_length=64, null=True)),
|
("note", models.CharField(blank=True, default="", max_length=64)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "email",
|
"verbose_name": "email",
|
||||||
|
|
@ -115,8 +114,8 @@ class Migration(migrations.Migration):
|
||||||
to="contatti_app.vocecontattorubrica",
|
to="contatti_app.vocecontattorubrica",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("numero", models.CharField(max_length=20, null=True)),
|
("numero", models.CharField(max_length=20)),
|
||||||
("note", models.CharField(max_length=64, null=True)),
|
("note", models.CharField(blank=True, default="", max_length=64)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "fax",
|
"verbose_name": "fax",
|
||||||
|
|
@ -209,9 +208,10 @@ class Migration(migrations.Migration):
|
||||||
to="contatti_app.soggettocontattabile",
|
to="contatti_app.soggettocontattabile",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("titolo", models.CharField(max_length=10, null=True)),
|
("titolo", models.CharField(blank=True, default="", max_length=10)),
|
||||||
("nome", models.CharField(max_length=60, null=True)),
|
("nome", models.CharField(max_length=60)),
|
||||||
("cognome", models.CharField(max_length=60, null=True)),
|
("cognome", models.CharField(max_length=60)),
|
||||||
|
("is_privato", models.BooleanField(default=True)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "persona fisica",
|
"verbose_name": "persona fisica",
|
||||||
|
|
@ -233,7 +233,7 @@ class Migration(migrations.Migration):
|
||||||
to="contatti_app.soggettocontattabile",
|
to="contatti_app.soggettocontattabile",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("denominazione", models.CharField(max_length=80, null=True)),
|
("denominazione", models.CharField(max_length=80)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "persona giuridica",
|
"verbose_name": "persona giuridica",
|
||||||
|
|
@ -256,8 +256,8 @@ class Migration(migrations.Migration):
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("numero", models.CharField(max_length=20)),
|
("numero", models.CharField(max_length=20)),
|
||||||
("interno", models.CharField(max_length=20, null=True)),
|
("interno", models.CharField(blank=True, default="", max_length=20)),
|
||||||
("note", models.CharField(max_length=64, null=True)),
|
("note", models.CharField(blank=True, default="", max_length=64)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "telefono",
|
"verbose_name": "telefono",
|
||||||
|
|
@ -337,12 +337,10 @@ class Migration(migrations.Migration):
|
||||||
to="contatti_app.indirizzo",
|
to="contatti_app.indirizzo",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("is_legale", models.BooleanField(blank=True, null=True)),
|
("is_legale", models.BooleanField(default=False)),
|
||||||
(
|
(
|
||||||
"societa",
|
"societa",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="sedi",
|
related_name="sedi",
|
||||||
to="contatti_app.societa",
|
to="contatti_app.societa",
|
||||||
|
|
@ -369,12 +367,10 @@ class Migration(migrations.Migration):
|
||||||
to="contatti_app.personafisica",
|
to="contatti_app.personafisica",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("is_personale", models.BooleanField(blank=True, null=True)),
|
("is_personale", models.BooleanField(default=True)),
|
||||||
(
|
(
|
||||||
"azienda",
|
"azienda",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="persone",
|
related_name="persone",
|
||||||
to="contatti_app.societa",
|
to="contatti_app.societa",
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 16:19
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("contatti_app", "0001_initial"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="personafisica",
|
|
||||||
name="is_privato",
|
|
||||||
field=models.BooleanField(default=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -42,32 +42,21 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="PersonaFisica" row="soggettocontattabile_ptr" />
|
<default>NULL</default><relation table="PersonaFisica" row="soggettocontattabile_ptr" />
|
||||||
</row>
|
</row>
|
||||||
<row name="azienda" null="1" autoincrement="0">
|
<row name="azienda" null="0" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
|
<row name="is_personale" null="0" autoincrement="0">
|
||||||
|
<datatype>bit</datatype>
|
||||||
|
<default>True</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>personafisica_ptr</part>
|
<part>personafisica_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="559" y="767" name="Nazione">
|
|
||||||
<row name="id" null="1" autoincrement="1">
|
|
||||||
<datatype>INTEGER</datatype>
|
|
||||||
<default>NULL</default></row>
|
|
||||||
<row name="codifica" null="0" autoincrement="0">
|
|
||||||
<datatype>CHAR(2)</datatype>
|
|
||||||
<default>'NULL'</default></row>
|
|
||||||
<row name="descrizione" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(250)</datatype>
|
|
||||||
<default>NULL</default></row>
|
|
||||||
<key type="PRIMARY" name="">
|
|
||||||
<part>id</part>
|
|
||||||
</key>
|
|
||||||
</table>
|
|
||||||
<table x="2048" y="345" name="VoceContattoRubrica">
|
<table x="2048" y="345" name="VoceContattoRubrica">
|
||||||
<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>
|
||||||
<row name="soggetto" null="1" autoincrement="0">
|
<row name="soggetto" null="0" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
|
|
@ -84,7 +73,7 @@
|
||||||
<datatype>VARCHAR(20)</datatype>
|
<datatype>VARCHAR(20)</datatype>
|
||||||
<default>'NULL'</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="interno" null="1" autoincrement="0">
|
<row name="interno" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>VARCHAR(20)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="note" null="1" autoincrement="0">
|
<row name="note" null="1" autoincrement="0">
|
||||||
<datatype>VARCHAR(64)</datatype>
|
<datatype>VARCHAR(64)</datatype>
|
||||||
|
|
@ -98,7 +87,7 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="indirizzo" null="0" autoincrement="0">
|
<row name="indirizzo_email" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(30)</datatype>
|
<datatype>VARCHAR(30)</datatype>
|
||||||
<default>'NULL'</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="note" null="1" autoincrement="0">
|
<row name="note" null="1" autoincrement="0">
|
||||||
|
|
@ -116,15 +105,15 @@
|
||||||
<row name="titolo" null="1" autoincrement="0">
|
<row name="titolo" null="1" autoincrement="0">
|
||||||
<datatype>VARCHAR(10)</datatype>
|
<datatype>VARCHAR(10)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="nome" null="1" autoincrement="0">
|
<row name="nome" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(60)</datatype>
|
<datatype>VARCHAR(60)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="cognome" null="1" autoincrement="0">
|
<row name="cognome" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(60)</datatype>
|
<datatype>VARCHAR(60)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="is_privato" null="1" autoincrement="0">
|
<row name="is_privato" null="0" autoincrement="0">
|
||||||
<datatype>bit</datatype>
|
<datatype>bit</datatype>
|
||||||
<default>NULL</default></row>
|
<default>True</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>soggettocontattabile_ptr</part>
|
<part>soggettocontattabile_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -134,9 +123,9 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="denominazione" null="1" autoincrement="0">
|
<row name="denominazione" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(80)</datatype>
|
<datatype>VARCHAR(80)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>soggettocontattabile_ptr</part>
|
<part>soggettocontattabile_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -181,36 +170,6 @@
|
||||||
<part>email_ptr</part>
|
<part>email_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="301" y="470" name="AbstractIndirizzo">
|
|
||||||
<row name="id" null="1" autoincrement="0">
|
|
||||||
<datatype>INTEGER</datatype>
|
|
||||||
<default>None</default></row>
|
|
||||||
<row name="duf" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(256)</datatype>
|
|
||||||
<default>'None'</default></row>
|
|
||||||
<row name="civico" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(256)</datatype>
|
|
||||||
<default>'None'</default></row>
|
|
||||||
<row name="altro" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(2048)</datatype>
|
|
||||||
<default>'None'</default></row>
|
|
||||||
<row name="cap_id" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(5)</datatype>
|
|
||||||
<default>'None'</default></row>
|
|
||||||
<row name="comune_id" null="1" autoincrement="0">
|
|
||||||
<datatype>INTEGER</datatype>
|
|
||||||
<default>None</default></row>
|
|
||||||
<row name="dug_id" null="1" autoincrement="0">
|
|
||||||
<datatype>VARCHAR(40)</datatype>
|
|
||||||
<default>'None'</default></row>
|
|
||||||
<row name="nazione" null="1" autoincrement="0">
|
|
||||||
<datatype>INTEGER</datatype>
|
|
||||||
<default>NULL</default><relation table="Nazione" row="id" />
|
|
||||||
</row>
|
|
||||||
<key type="PRIMARY" name="">
|
|
||||||
<part>id</part>
|
|
||||||
</key>
|
|
||||||
</table>
|
|
||||||
<table x="1795" y="486" name="SoggettoContattabile">
|
<table x="1795" y="486" name="SoggettoContattabile">
|
||||||
<row name="id" null="1" autoincrement="1">
|
<row name="id" null="1" autoincrement="1">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
|
|
@ -222,8 +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="AbstractIndirizzo" row="id" />
|
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||||
<relation table="VoceContattoRubrica" row="id" />
|
|
||||||
</row>
|
</row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>contattorubrica_ptr</part>
|
<part>contattorubrica_ptr</part>
|
||||||
|
|
@ -236,9 +194,8 @@
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="nazione" null="1" autoincrement="0">
|
<row name="nazione" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="Nazione" row="id" />
|
<default>NULL</default></row>
|
||||||
</row>
|
<row name="soggetto" null="0" autoincrement="0">
|
||||||
<row name="soggetto" null="1" autoincrement="0">
|
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ class SoggettoContattabile(PolymorphicModel):
|
||||||
verbose_name = 'soggetto contattabile'
|
verbose_name = 'soggetto contattabile'
|
||||||
verbose_name_plural = 'soggetti contattabili'
|
verbose_name_plural = 'soggetti contattabili'
|
||||||
|
|
||||||
rimosso = models.BooleanField(null=True, blank=True)
|
|
||||||
|
|
||||||
class VoceContattoRubrica(PolymorphicModel):
|
class VoceContattoRubrica(PolymorphicModel):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -39,11 +38,12 @@ class PersonaFisica(SoggettoContattabile):
|
||||||
out=f'{self.titolo} {out}'
|
out=f'{self.titolo} {out}'
|
||||||
return out
|
return out
|
||||||
|
|
||||||
titolo = models.CharField(null=True, max_length=10)
|
titolo = models.CharField(null=False,blank=True,default='', max_length=10)
|
||||||
nome = models.CharField(null=True, max_length=60)
|
nome = models.CharField(null=False,blank=False, max_length=60)
|
||||||
cognome = models.CharField(null=True, max_length=60)
|
cognome = models.CharField(null=False,blank=False, max_length=60)
|
||||||
is_privato = models.BooleanField(null=False, blank=False, default=True)
|
is_privato = models.BooleanField(null=False, blank=False, default=True)
|
||||||
|
|
||||||
|
|
||||||
class PersonaGiuridica(SoggettoContattabile):
|
class PersonaGiuridica(SoggettoContattabile):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'persona giuridica'
|
verbose_name = 'persona giuridica'
|
||||||
|
|
@ -58,7 +58,7 @@ class PersonaGiuridica(SoggettoContattabile):
|
||||||
out = 'Persona giuridica senza nome #{self.id}'
|
out = 'Persona giuridica senza nome #{self.id}'
|
||||||
return out
|
return out
|
||||||
|
|
||||||
denominazione = models.CharField(null=True, max_length=80)
|
denominazione = models.CharField(null=False,blank=False, max_length=80)
|
||||||
|
|
||||||
|
|
||||||
class Telefono(VoceContattoRubrica):
|
class Telefono(VoceContattoRubrica):
|
||||||
|
|
@ -75,9 +75,9 @@ class Telefono(VoceContattoRubrica):
|
||||||
tel += ' (!)'
|
tel += ' (!)'
|
||||||
return tel
|
return tel
|
||||||
|
|
||||||
numero = models.CharField(max_length=20)
|
numero = models.CharField(null=False,blank=False,max_length=20)
|
||||||
interno = models.CharField(null=True, max_length=20)
|
interno = models.CharField(null=False,blank=True,default='', max_length=20)
|
||||||
note = models.CharField(null=True, max_length=64)
|
note = models.CharField(null=False,blank=True,default='', max_length=64)
|
||||||
|
|
||||||
|
|
||||||
class Email(VoceContattoRubrica):
|
class Email(VoceContattoRubrica):
|
||||||
|
|
@ -91,8 +91,8 @@ class Email(VoceContattoRubrica):
|
||||||
eml += ' (!)'
|
eml += ' (!)'
|
||||||
return eml
|
return eml
|
||||||
|
|
||||||
indirizzo_email = models.CharField(max_length=30)
|
indirizzo_email = models.CharField(null=False,blank=False,max_length=30)
|
||||||
note = models.CharField(null=True, max_length=64)
|
note = models.CharField(null=False,blank=True,default='', max_length=64)
|
||||||
|
|
||||||
|
|
||||||
class Pec(Email):
|
class Pec(Email):
|
||||||
|
|
@ -115,8 +115,8 @@ class Fax(VoceContattoRubrica):
|
||||||
out += ' (!)'
|
out += ' (!)'
|
||||||
return out.strip()
|
return out.strip()
|
||||||
|
|
||||||
numero = models.CharField(null=True, max_length=20)
|
numero = models.CharField(null=False,blank=False, max_length=20)
|
||||||
note = models.CharField(null=True, max_length=64)
|
note = models.CharField(null=False,blank=True,default='', max_length=64)
|
||||||
|
|
||||||
class Indirizzo(VoceContattoRubrica, AbstractIndirizzo):
|
class Indirizzo(VoceContattoRubrica, AbstractIndirizzo):
|
||||||
class Meta(AbstractIndirizzo.Meta):
|
class Meta(AbstractIndirizzo.Meta):
|
||||||
|
|
@ -132,8 +132,8 @@ class Sede(Indirizzo):
|
||||||
return f"Sede (id: {self.id})"
|
return f"Sede (id: {self.id})"
|
||||||
|
|
||||||
societa = models.ForeignKey('Societa', on_delete=models.CASCADE,
|
societa = models.ForeignKey('Societa', on_delete=models.CASCADE,
|
||||||
null=True, blank=True, related_name="sedi")
|
null=False, blank=False, related_name="sedi")
|
||||||
is_legale = models.BooleanField(null=True, blank=True)
|
is_legale = models.BooleanField(null=False, blank=False, default=False)
|
||||||
|
|
||||||
|
|
||||||
class Societa(models.Model):
|
class Societa(models.Model):
|
||||||
|
|
@ -163,6 +163,6 @@ class PersonaContattoAzienda(PersonaFisica):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"PersonaContattoAzienda (id: {self.id})"
|
return f"PersonaContattoAzienda (id: {self.id})"
|
||||||
|
|
||||||
azienda = models.ForeignKey(Societa, on_delete=models.CASCADE, null=True,
|
azienda = models.ForeignKey(Societa, on_delete=models.CASCADE, null=False,
|
||||||
blank=True, related_name='persone')
|
blank=False, related_name='persone')
|
||||||
is_personale = models.BooleanField(null=True, blank=True)
|
is_personale = models.BooleanField(null=False, blank=False, default=True)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,11 @@ class PersonaContattoAziendaResource(resources.ModelResource):
|
||||||
model = models.PersonaContattoAzienda
|
model = models.PersonaContattoAzienda
|
||||||
|
|
||||||
|
|
||||||
|
class VoceContattoRubricaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.VoceContattoRubrica
|
||||||
|
|
||||||
|
|
||||||
class TelefonoResource(resources.ModelResource):
|
class TelefonoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Telefono
|
model = models.Telefono
|
||||||
|
|
@ -42,3 +47,18 @@ class FaxResource(resources.ModelResource):
|
||||||
class PecResource(resources.ModelResource):
|
class PecResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Pec
|
model = models.Pec
|
||||||
|
|
||||||
|
|
||||||
|
class SoggettoContattabileResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.SoggettoContattabile
|
||||||
|
|
||||||
|
|
||||||
|
class IndirizzoResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.Indirizzo
|
||||||
|
|
||||||
|
|
||||||
|
class SocietaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.Societa
|
||||||
|
|
|
||||||
|
|
@ -7,38 +7,31 @@ from . import models
|
||||||
class PersonaContattoAziendaSerializer(serializers.ModelSerializer):
|
class PersonaContattoAziendaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.PersonaContattoAzienda
|
model = models.PersonaContattoAzienda
|
||||||
fields = ('azienda')
|
fields = ('azienda', 'is_personale')
|
||||||
|
|
||||||
|
|
||||||
class SoggettoFiscaleSerializer(serializers.ModelSerializer):
|
class VoceContattoRubricaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.SoggettoFiscale
|
model = models.VoceContattoRubrica
|
||||||
fields = ('indirizzo_pec', 'sede_legale', 'stabile_organizzazione',
|
fields = ('soggetto')
|
||||||
'nazione', 'revisione_principale', 'rimosso')
|
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContattoSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.DatoDiContatto
|
|
||||||
fields = ('soggetto_fiscale')
|
|
||||||
|
|
||||||
|
|
||||||
class TelefonoSerializer(serializers.ModelSerializer):
|
class TelefonoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Telefono
|
model = models.Telefono
|
||||||
fields = ('numero', 'note')
|
fields = ('numero', 'interno', 'note')
|
||||||
|
|
||||||
|
|
||||||
class EmailSerializer(serializers.ModelSerializer):
|
class EmailSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Email
|
model = models.Email
|
||||||
fields = ('indirizzo', 'note')
|
fields = ('indirizzo_email', 'note')
|
||||||
|
|
||||||
|
|
||||||
class PersonaFisicaSerializer(serializers.ModelSerializer):
|
class PersonaFisicaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.PersonaFisica
|
model = models.PersonaFisica
|
||||||
fields = ('titolo', 'nome', 'cognome')
|
fields = ('titolo', 'nome', 'cognome', 'is_privato')
|
||||||
|
|
||||||
|
|
||||||
class PersonaGiuridicaSerializer(serializers.ModelSerializer):
|
class PersonaGiuridicaSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -50,7 +43,7 @@ class PersonaGiuridicaSerializer(serializers.ModelSerializer):
|
||||||
class SedeSerializer(serializers.ModelSerializer):
|
class SedeSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Sede
|
model = models.Sede
|
||||||
fields = ('inquilino', 'is_legale')
|
fields = ('societa', 'is_legale')
|
||||||
|
|
||||||
|
|
||||||
class FaxSerializer(serializers.ModelSerializer):
|
class FaxSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -63,3 +56,21 @@ class PecSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Pec
|
model = models.Pec
|
||||||
fields = ('')
|
fields = ('')
|
||||||
|
|
||||||
|
|
||||||
|
class SoggettoContattabileSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.SoggettoContattabile
|
||||||
|
fields = ('')
|
||||||
|
|
||||||
|
|
||||||
|
class IndirizzoSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.Indirizzo
|
||||||
|
fields = ('')
|
||||||
|
|
||||||
|
|
||||||
|
class SocietaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.Societa
|
||||||
|
fields = ('nazione', 'soggetto', 'ragione_sociale')
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,7 @@ router = routers.DefaultRouter()
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
router.register(r'personacontattoazienda', views.PersonaContattoAzienda_View)
|
router.register(r'personacontattoazienda', views.PersonaContattoAzienda_View)
|
||||||
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
router.register(r'vocecontattorubrica', views.VoceContattoRubrica_View)
|
||||||
router.register(r'datodicontatto', views.DatoDiContatto_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)
|
||||||
|
|
@ -21,5 +20,8 @@ router.register(r'personagiuridica', views.PersonaGiuridica_View)
|
||||||
router.register(r'sede', views.Sede_View)
|
router.register(r'sede', views.Sede_View)
|
||||||
router.register(r'fax', views.Fax_View)
|
router.register(r'fax', views.Fax_View)
|
||||||
router.register(r'pec', views.Pec_View)
|
router.register(r'pec', views.Pec_View)
|
||||||
|
router.register(r'soggettocontattabile', views.SoggettoContattabile_View)
|
||||||
|
router.register(r'indirizzo', views.Indirizzo_View)
|
||||||
|
router.register(r'societa', views.Societa_View)
|
||||||
|
|
||||||
urlpatterns += router.urls
|
urlpatterns += router.urls
|
||||||
|
|
|
||||||
|
|
@ -27,20 +27,12 @@ class PersonaContattoAzienda_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.PersonaContattoAziendaSerializer
|
serializer_class = serializers.PersonaContattoAziendaSerializer
|
||||||
|
|
||||||
|
|
||||||
class SoggettoFiscale_View(viewsets.ModelViewSet):
|
class VoceContattoRubrica_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
queryset = models.SoggettoFiscale.objects.all()
|
queryset = models.VoceContattoRubrica.objects.all()
|
||||||
serializer_class = serializers.SoggettoFiscaleSerializer
|
serializer_class = serializers.VoceContattoRubricaSerializer
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContatto_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.DatoDiContatto.objects.all()
|
|
||||||
serializer_class = serializers.DatoDiContattoSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class Telefono_View(viewsets.ModelViewSet):
|
class Telefono_View(viewsets.ModelViewSet):
|
||||||
|
|
@ -97,3 +89,27 @@ class Pec_View(viewsets.ModelViewSet):
|
||||||
|
|
||||||
queryset = models.Pec.objects.all()
|
queryset = models.Pec.objects.all()
|
||||||
serializer_class = serializers.PecSerializer
|
serializer_class = serializers.PecSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class SoggettoContattabile_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.SoggettoContattabile.objects.all()
|
||||||
|
serializer_class = serializers.SoggettoContattabileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class Indirizzo_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.Indirizzo.objects.all()
|
||||||
|
serializer_class = serializers.IndirizzoSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class Societa_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.Societa.objects.all()
|
||||||
|
serializer_class = serializers.SocietaSerializer
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 15:43
|
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -689,7 +689,7 @@ class Migration(migrations.Migration):
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"sede_legale",
|
"sede",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="SoggettoFiscale_da_Indirizzo",
|
related_name="SoggettoFiscale_da_Indirizzo",
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 16:17
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("fattura_elettronica_app", "0001_initial"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name="soggettofiscale",
|
|
||||||
old_name="sede_legale",
|
|
||||||
new_name="sede",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 15:43
|
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -8,8 +8,8 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
("fattura_elettronica_app", "0001_initial"),
|
|
||||||
("contatti_app", "0001_initial"),
|
("contatti_app", "0001_initial"),
|
||||||
|
("fattura_elettronica_app", "__first__"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-14 15:43
|
# Generated by Django 4.1.7 on 2023-05-14 22:58
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -8,8 +8,8 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
("offerte_app", "0001_initial"),
|
|
||||||
("fattura_elettronica_app", "0001_initial"),
|
("fattura_elettronica_app", "0001_initial"),
|
||||||
|
("offerte_app", "0001_initial"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
|
||||||
|
|
@ -217,9 +217,12 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="PersonaFisica" row="soggettocontattabile_ptr" />
|
<default>NULL</default><relation table="PersonaFisica" row="soggettocontattabile_ptr" />
|
||||||
</row>
|
</row>
|
||||||
<row name="azienda" null="1" autoincrement="0">
|
<row name="azienda" null="0" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
|
<row name="is_personale" null="0" autoincrement="0">
|
||||||
|
<datatype>bit</datatype>
|
||||||
|
<default>True</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>personafisica_ptr</part>
|
<part>personafisica_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -1034,7 +1037,7 @@
|
||||||
<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>
|
||||||
<row name="soggetto" null="1" autoincrement="0">
|
<row name="soggetto" null="0" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
|
|
@ -1051,7 +1054,7 @@
|
||||||
<datatype>VARCHAR(20)</datatype>
|
<datatype>VARCHAR(20)</datatype>
|
||||||
<default>'NULL'</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="interno" null="1" autoincrement="0">
|
<row name="interno" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>VARCHAR(20)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="note" null="1" autoincrement="0">
|
<row name="note" null="1" autoincrement="0">
|
||||||
<datatype>VARCHAR(64)</datatype>
|
<datatype>VARCHAR(64)</datatype>
|
||||||
|
|
@ -1065,7 +1068,7 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
<default>NULL</default><relation table="VoceContattoRubrica" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="indirizzo" null="0" autoincrement="0">
|
<row name="indirizzo_email" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(30)</datatype>
|
<datatype>VARCHAR(30)</datatype>
|
||||||
<default>'NULL'</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="note" null="1" autoincrement="0">
|
<row name="note" null="1" autoincrement="0">
|
||||||
|
|
@ -1189,15 +1192,15 @@
|
||||||
<row name="titolo" null="1" autoincrement="0">
|
<row name="titolo" null="1" autoincrement="0">
|
||||||
<datatype>VARCHAR(10)</datatype>
|
<datatype>VARCHAR(10)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="nome" null="1" autoincrement="0">
|
<row name="nome" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(60)</datatype>
|
<datatype>VARCHAR(60)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="cognome" null="1" autoincrement="0">
|
<row name="cognome" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(60)</datatype>
|
<datatype>VARCHAR(60)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<row name="is_privato" null="1" autoincrement="0">
|
<row name="is_privato" null="0" autoincrement="0">
|
||||||
<datatype>bit</datatype>
|
<datatype>bit</datatype>
|
||||||
<default>NULL</default></row>
|
<default>True</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>soggettocontattabile_ptr</part>
|
<part>soggettocontattabile_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -1207,9 +1210,9 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="denominazione" null="1" autoincrement="0">
|
<row name="denominazione" null="0" autoincrement="0">
|
||||||
<datatype>VARCHAR(80)</datatype>
|
<datatype>VARCHAR(80)</datatype>
|
||||||
<default>NULL</default></row>
|
<default>'NULL'</default></row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>soggettocontattabile_ptr</part>
|
<part>soggettocontattabile_ptr</part>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -2092,7 +2095,7 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="Nazione" row="id" />
|
<default>NULL</default><relation table="Nazione" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="soggetto" null="1" autoincrement="0">
|
<row name="soggetto" null="0" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
<default>NULL</default><relation table="SoggettoContattabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue