molto da fare ancora
parent
b83873714a
commit
a30e157d49
|
|
@ -1,28 +1,28 @@
|
||||||
from import_export.admin import ImportExportModelAdmin
|
from import_export.admin import ImportExportModelAdmin
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
# from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
# from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from . import models
|
from . import models
|
||||||
from . import resources
|
from . import resources
|
||||||
|
from dati_geo_app.admin import RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin
|
||||||
|
|
||||||
|
# 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
|
cache.set(key, self._count, 60)
|
||||||
# cache.set(key, self._count, 60)
|
except:
|
||||||
# except:
|
self._count = len(self.object_list)
|
||||||
# self._count = len(self.object_list)
|
return self._count
|
||||||
# return self._count
|
count = property(_get_count)
|
||||||
# count = property(_get_count)
|
|
||||||
|
|
||||||
# # Main reusable Admin class for only viewing
|
# # Main reusable Admin class for only viewing
|
||||||
# class ViewAdminMixin(admin.ModelAdmin):
|
# class ViewAdminMixin(admin.ModelAdmin):
|
||||||
|
|
@ -47,33 +47,6 @@ class PersonaContattoAziendaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.SoggettoFiscale)
|
|
||||||
class SoggettoFiscaleAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.SoggettoFiscaleResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Nazione)
|
|
||||||
class NazioneAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.NazioneResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.DatoDiContatto)
|
|
||||||
class DatoDiContattoAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.DatoDiContattoResource
|
|
||||||
# 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
|
||||||
|
|
@ -135,3 +108,36 @@ class PecAdmin(ImportExportModelAdmin):
|
||||||
# paginator = CachingPaginator
|
# paginator = CachingPaginator
|
||||||
# show_full_result_count = False
|
# show_full_result_count = False
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.Indirizzo)
|
||||||
|
class IndirizzoAdmin(RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin):
|
||||||
|
list_per_page = 15
|
||||||
|
paginator = CachingPaginator
|
||||||
|
show_full_result_count = False
|
||||||
|
fields=('dug','duf','civico','cap','comune','altro',)
|
||||||
|
search_fields = ('indirizzo','cap_id__exact',)
|
||||||
|
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):
|
||||||
|
return obj.comune.provincia
|
||||||
|
provincia.short_description = 'Provincia'
|
||||||
|
provincia.admin_order_field = 'comune__provincia_id'
|
||||||
|
|
||||||
|
def regione(self, obj):
|
||||||
|
return obj.comune.provincia.regione_id
|
||||||
|
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',)
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
<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="id" null="1" autoincrement="1">
|
<row name="id" null="1" autoincrement="1">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
|
|
@ -78,20 +78,6 @@
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="539" y="521" 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="2178" y="822" name="DatoDiContatto">
|
<table x="2178" y="822" name="DatoDiContatto">
|
||||||
<row name="id" null="1" autoincrement="1">
|
<row name="id" null="1" autoincrement="1">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,172 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from polymorphic.models import PolymorphicModel
|
||||||
|
from dati_geo_app.models import AbstractIndirizzo
|
||||||
|
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
class SoggettoContattabile(PolymorphicModel):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'soggetto contattabile'
|
||||||
|
verbose_name_plural = 'soggetti contattabili'
|
||||||
|
|
||||||
class PersonaContattoAzienda(models.Model):
|
rimosso = models.BooleanField(null=True, blank=True)
|
||||||
|
|
||||||
|
class ContattoRubrica(PolymorphicModel):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'contatto di rubrica'
|
||||||
|
verbose_name_plural = 'contatti di rubrica'
|
||||||
|
|
||||||
|
soggetto = models.ForeignKey(SoggettoContattabile, on_delete=models.CASCADE, null=False,
|
||||||
|
blank=False, related_name="societa")
|
||||||
|
|
||||||
|
class PersonaFisica(SoggettoContattabile):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'persona fisica'
|
||||||
|
verbose_name_plural = 'persone fisiche'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.nome:
|
||||||
|
out = str(self.nome).strip()
|
||||||
|
else:
|
||||||
|
out = ''
|
||||||
|
if self.cognome:
|
||||||
|
out = f'{out} {self.cognome}'.strip()
|
||||||
|
else:
|
||||||
|
out = ''
|
||||||
|
if not out:
|
||||||
|
out = f'Persona fisica senza nome #{self.id}'
|
||||||
|
if self.titolo:
|
||||||
|
out=f'{self.titolo} {out}'
|
||||||
|
return out
|
||||||
|
|
||||||
|
titolo = models.CharField(null=True, max_length=10)
|
||||||
|
nome = models.CharField(null=True, max_length=60)
|
||||||
|
cognome = models.CharField(null=True, max_length=60)
|
||||||
|
|
||||||
|
|
||||||
|
class PersonaGiuridica(SoggettoContattabile):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'persona giuridica'
|
||||||
|
verbose_name_plural = 'persone giuridiche'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.denominazione:
|
||||||
|
out = self.denominazione
|
||||||
|
else:
|
||||||
|
out = ''
|
||||||
|
if not out.strip:
|
||||||
|
out = 'Persona giuridica senza nome #{self.id}'
|
||||||
|
return out
|
||||||
|
|
||||||
|
denominazione = models.CharField(null=True, max_length=80)
|
||||||
|
|
||||||
|
|
||||||
|
class Telefono(ContattoRubrica):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'telefono'
|
||||||
|
verbose_name_plural = 'telefono'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.interno:
|
||||||
|
tel = f'{self.numero} (int.{self.interno})'
|
||||||
|
else:
|
||||||
|
tel = str(self.numero)
|
||||||
|
if self.note:
|
||||||
|
tel += ' (!)'
|
||||||
|
return tel
|
||||||
|
|
||||||
|
numero = models.CharField(max_length=20)
|
||||||
|
interno = models.CharField(null=True, max_length=20)
|
||||||
|
note = models.CharField(null=True, max_length=64)
|
||||||
|
|
||||||
|
|
||||||
|
class Email(ContattoRubrica):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'email'
|
||||||
|
verbose_name_plural = 'email'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
eml = self.indirizzo
|
||||||
|
if self.note:
|
||||||
|
eml += ' (!)'
|
||||||
|
return eml
|
||||||
|
|
||||||
|
indirizzo = models.CharField(max_length=30)
|
||||||
|
note = models.CharField(null=True, max_length=64)
|
||||||
|
|
||||||
|
|
||||||
|
class Pec(Email):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'pec'
|
||||||
|
verbose_name_plural = 'pec'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"Pec (id: {self.id})"
|
||||||
|
|
||||||
|
|
||||||
|
class Fax(ContattoRubrica):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'fax'
|
||||||
|
verbose_name_plural = 'fax'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
out = self.numero
|
||||||
|
if self.note:
|
||||||
|
out += ' (!)'
|
||||||
|
return out.strip()
|
||||||
|
|
||||||
|
numero = models.CharField(null=True, max_length=20)
|
||||||
|
note = models.CharField(null=True, max_length=64)
|
||||||
|
|
||||||
|
class Indirizzo(PolymorphicModel, AbstractIndirizzo):
|
||||||
|
class Meta(AbstractIndirizzo.Meta):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Residenza(Indirizzo):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'residenza'
|
||||||
|
verbose_name_plural = 'residenze'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"Residenza (id: {self.id})"
|
||||||
|
|
||||||
|
inquilino = models.ForeignKey(SoggettoContattabile, on_delete=models.CASCADE,
|
||||||
|
null=True, blank=True, related_name="residenze")
|
||||||
|
|
||||||
|
class Sede(Residenza):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'sede'
|
||||||
|
verbose_name_plural = 'sedi'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"Sede (id: {self.id})"
|
||||||
|
|
||||||
|
societa = models.ForeignKey('Societa', on_delete=models.CASCADE,
|
||||||
|
null=True, blank=True, related_name="sedi")
|
||||||
|
is_legale = models.BooleanField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class Societa(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'societa'
|
||||||
|
verbose_name_plural = 'societa'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.ragione_sociale:
|
||||||
|
out = self.ragione_sociale
|
||||||
|
else:
|
||||||
|
out = str(self.soggetto)
|
||||||
|
return out
|
||||||
|
|
||||||
|
soggetto = models.OneToOneField(SoggettoContattabile, on_delete=models.CASCADE, null=False,
|
||||||
|
blank=False, related_name="societa")
|
||||||
|
ragione_sociale = models.CharField(max_length=1024)
|
||||||
|
nazione = models.ForeignKey('dati_geo_app.Nazione', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="societa")
|
||||||
|
sede_legale = models.IntegerField()
|
||||||
|
|
||||||
|
class PersonaContattoAzienda(PersonaFisica):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'personacontattoazienda'
|
verbose_name = 'personacontattoazienda'
|
||||||
verbose_name_plural = 'personacontattoazienda'
|
verbose_name_plural = 'personacontattoazienda'
|
||||||
|
|
@ -11,118 +174,6 @@ class PersonaContattoAzienda(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"PersonaContattoAzienda (id: {self.id})"
|
return f"PersonaContattoAzienda (id: {self.id})"
|
||||||
|
|
||||||
azienda = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
azienda = models.ForeignKey(Societa, on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="PersonaContattoAzienda_da_SoggettoFiscale_azienda")
|
blank=True, related_name='persone')
|
||||||
|
is_personale = models.BooleanField(null=True, blank=True)
|
||||||
|
|
||||||
class SoggettoFiscale(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'soggettofiscale'
|
|
||||||
verbose_name_plural = 'soggettofiscale'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"SoggettoFiscale (id: {self.id})"
|
|
||||||
|
|
||||||
indirizzo_pec = models.ForeignKey('Pec', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="SoggettoFiscale_da_Pec_indirizzo_pec")
|
|
||||||
sede_legale = models.IntegerField()
|
|
||||||
stabile_organizzazione = models.IntegerField(null=True, blank=True)
|
|
||||||
nazione = models.ForeignKey('Nazione', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="SoggettoFiscale_da_Nazione_nazione")
|
|
||||||
revisione_principale = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="SoggettoFiscale_da_SoggettoFiscale_revisione_principale")
|
|
||||||
rimosso = models.BooleanField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContatto(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'datodicontatto'
|
|
||||||
verbose_name_plural = 'datodicontatto'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"DatoDiContatto (id: {self.id})"
|
|
||||||
|
|
||||||
soggetto_fiscale = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DatoDiContatto_da_SoggettoFiscale_soggetto_fiscale")
|
|
||||||
|
|
||||||
|
|
||||||
class Telefono(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'telefono'
|
|
||||||
verbose_name_plural = 'telefono'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Telefono (id: {self.id})"
|
|
||||||
|
|
||||||
numero = models.CharField(max_length=20)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class Email(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'email'
|
|
||||||
verbose_name_plural = 'email'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Email (id: {self.id})"
|
|
||||||
|
|
||||||
indirizzo = models.CharField(max_length=30)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class PersonaFisica(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'personafisica'
|
|
||||||
verbose_name_plural = 'personafisica'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"PersonaFisica (id: {self.id})"
|
|
||||||
|
|
||||||
titolo = models.CharField(null=True, max_length=10)
|
|
||||||
nome = models.CharField(null=True, max_length=60)
|
|
||||||
cognome = models.CharField(null=True, max_length=60)
|
|
||||||
|
|
||||||
|
|
||||||
class PersonaGiuridica(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'personagiuridica'
|
|
||||||
verbose_name_plural = 'personagiuridica'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"PersonaGiuridica (id: {self.id})"
|
|
||||||
|
|
||||||
denominazione = models.CharField(null=True, max_length=80)
|
|
||||||
|
|
||||||
|
|
||||||
class Sede(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'sede'
|
|
||||||
verbose_name_plural = 'sede'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Sede (id: {self.id})"
|
|
||||||
|
|
||||||
inquilino = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE,
|
|
||||||
null=True, blank=True, related_name="Sede_da_SoggettoFiscale_inquilino")
|
|
||||||
is_legale = models.BooleanField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class Fax(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'fax'
|
|
||||||
verbose_name_plural = 'fax'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Fax (id: {self.id})"
|
|
||||||
|
|
||||||
numero = models.CharField(null=True, max_length=20)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class Pec(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'pec'
|
|
||||||
verbose_name_plural = 'pec'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Pec (id: {self.id})"
|
|
||||||
|
|
|
||||||
|
|
@ -9,21 +9,6 @@ class PersonaContattoAziendaResource(resources.ModelResource):
|
||||||
model = models.PersonaContattoAzienda
|
model = models.PersonaContattoAzienda
|
||||||
|
|
||||||
|
|
||||||
class SoggettoFiscaleResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.SoggettoFiscale
|
|
||||||
|
|
||||||
|
|
||||||
class NazioneResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Nazione
|
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContattoResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.DatoDiContatto
|
|
||||||
|
|
||||||
|
|
||||||
class TelefonoResource(resources.ModelResource):
|
class TelefonoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Telefono
|
model = models.Telefono
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,6 @@ class SoggettoFiscaleSerializer(serializers.ModelSerializer):
|
||||||
'nazione', 'revisione_principale', 'rimosso')
|
'nazione', 'revisione_principale', 'rimosso')
|
||||||
|
|
||||||
|
|
||||||
class NazioneSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.Nazione
|
|
||||||
fields = ('codifica', 'descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContattoSerializer(serializers.ModelSerializer):
|
class DatoDiContattoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DatoDiContatto
|
model = models.DatoDiContatto
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ router = routers.DefaultRouter()
|
||||||
|
|
||||||
router.register(r'personacontattoazienda', views.PersonaContattoAzienda_View)
|
router.register(r'personacontattoazienda', views.PersonaContattoAzienda_View)
|
||||||
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
||||||
router.register(r'nazione', views.Nazione_View)
|
|
||||||
router.register(r'datodicontatto', views.DatoDiContatto_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)
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,6 @@ class SoggettoFiscale_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.SoggettoFiscaleSerializer
|
serializer_class = serializers.SoggettoFiscaleSerializer
|
||||||
|
|
||||||
|
|
||||||
class Nazione_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.Nazione.objects.all()
|
|
||||||
serializer_class = serializers.NazioneSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContatto_View(viewsets.ModelViewSet):
|
class DatoDiContatto_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
|
||||||
|
|
@ -291,34 +291,10 @@ class DUGAdmin(RicercaOrdinataMixin, admin.ModelAdmin):
|
||||||
ordering = ('nome',)
|
ordering = ('nome',)
|
||||||
list_display = ('nome',)
|
list_display = ('nome',)
|
||||||
|
|
||||||
@admin.register(models.Indirizzo)
|
@admin.register(models.Nazione)
|
||||||
class IndirizzoAdmin(RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin):
|
class NazioneAdmin(admin.ModelAdmin):
|
||||||
list_per_page = 15
|
# resource = resources.NazioneResource
|
||||||
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):
|
|
||||||
return obj.comune.provincia
|
|
||||||
provincia.short_description = 'Provincia'
|
|
||||||
provincia.admin_order_field = 'comune__provincia_id'
|
|
||||||
|
|
||||||
def regione(self, obj):
|
|
||||||
return obj.comune.provincia.regione_id
|
|
||||||
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',)
|
|
||||||
|
|
|
||||||
|
|
@ -92,12 +92,15 @@ class DUG(models.Model):
|
||||||
nome = models.CharField(primary_key=True, max_length=40)
|
nome = models.CharField(primary_key=True, max_length=40)
|
||||||
|
|
||||||
|
|
||||||
class Indirizzo(models.Model):
|
class AbstractIndirizzo(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'indirizzo'
|
verbose_name = 'indirizzo'
|
||||||
verbose_name_plural = 'indirizzi'
|
verbose_name_plural = 'indirizzi'
|
||||||
|
abstract = True
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.dug} {self.duf} {self.civico}, {self.comune}"
|
return f"{self.dug} {self.duf} {self.civico}, {self.comune}"
|
||||||
|
|
||||||
dug = models.ForeignKey(DUG, blank=False, null=False, verbose_name='denominazione urbanistica generica', on_delete=models.PROTECT)
|
dug = models.ForeignKey(DUG, blank=False, null=False, verbose_name='denominazione urbanistica generica', on_delete=models.PROTECT)
|
||||||
duf = models.CharField(max_length=256, blank=False, null=False, verbose_name="denominazione urbanistica ufficiale", help_text="Il nome della via/piazza/ecc...")
|
duf = models.CharField(max_length=256, blank=False, null=False, verbose_name="denominazione urbanistica ufficiale", help_text="Il nome della via/piazza/ecc...")
|
||||||
civico = models.CharField(max_length=256, blank=False, null=False)
|
civico = models.CharField(max_length=256, blank=False, null=False)
|
||||||
|
|
|
||||||
|
|
@ -155,15 +155,6 @@ class PartitaIvaCFAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Nazione)
|
|
||||||
class NazioneAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.NazioneResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.FormatoTrasmissione)
|
@admin.register(models.FormatoTrasmissione)
|
||||||
class FormatoTrasmissioneAdmin(ImportExportModelAdmin):
|
class FormatoTrasmissioneAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.FormatoTrasmissioneResource
|
# resource = resources.FormatoTrasmissioneResource
|
||||||
|
|
@ -182,33 +173,6 @@ class CodiceDestinatarioAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.DatoDiContatto)
|
|
||||||
class DatoDiContattoAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.DatoDiContattoResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Telefono)
|
|
||||||
class TelefonoAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.TelefonoResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Email)
|
|
||||||
class EmailAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.EmailResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.IscrizioneAlboProfessionale)
|
@admin.register(models.IscrizioneAlboProfessionale)
|
||||||
class IscrizioneAlboProfessionaleAdmin(ImportExportModelAdmin):
|
class IscrizioneAlboProfessionaleAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.IscrizioneAlboProfessionaleResource
|
# resource = resources.IscrizioneAlboProfessionaleResource
|
||||||
|
|
@ -263,24 +227,6 @@ class SoggettoEmittenteAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.PersonaFisica)
|
|
||||||
class PersonaFisicaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.PersonaFisicaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.PersonaGiuridica)
|
|
||||||
class PersonaGiuridicaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.PersonaGiuridicaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.AlboProfessionale)
|
@admin.register(models.AlboProfessionale)
|
||||||
class AlboProfessionaleAdmin(ImportExportModelAdmin):
|
class AlboProfessionaleAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.AlboProfessionaleResource
|
# resource = resources.AlboProfessionaleResource
|
||||||
|
|
@ -585,30 +531,3 @@ class DatiEstesiDettaglioFatturabileAdmin(ImportExportModelAdmin):
|
||||||
# paginator = CachingPaginator
|
# paginator = CachingPaginator
|
||||||
# show_full_result_count = False
|
# show_full_result_count = False
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Sede)
|
|
||||||
class SedeAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.SedeResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Fax)
|
|
||||||
class FaxAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.FaxResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Pec)
|
|
||||||
class PecAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.PecResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,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('DatoDiContatto', on_delete=models.CASCADE, null=True,
|
contatto_cedente_prestatore = models.ForeignKey('contatti_app.ContattoRubrica', 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,
|
||||||
|
|
@ -193,7 +193,8 @@ class SoggettoFiscale(PolymorphicModel):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"SoggettoFiscale (id: {self.id})"
|
return f"SoggettoFiscale (id: {self.id})"
|
||||||
|
|
||||||
indirizzo_pec = models.ForeignKey('Pec', on_delete=models.CASCADE, null=True,
|
dati_di_contatto = models.OneToOneField('contatti_app.SoggettoContattabile',on_delete=models.CASCADE,null=False,blank=False,related_name='dati_fiscali')
|
||||||
|
indirizzo_pec = models.ForeignKey('contatti_app.Pec', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="SoggettoFiscale_da_Pec_indirizzo_pec")
|
blank=True, related_name="SoggettoFiscale_da_Pec_indirizzo_pec")
|
||||||
regime_fiscale = models.ForeignKey('RegimeFiscale', on_delete=models.CASCADE, null=True,
|
regime_fiscale = models.ForeignKey('RegimeFiscale', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="SoggettoFiscale_da_RegimeFiscale_regime_fiscale")
|
blank=True, related_name="SoggettoFiscale_da_RegimeFiscale_regime_fiscale")
|
||||||
|
|
@ -204,54 +205,16 @@ class SoggettoFiscale(PolymorphicModel):
|
||||||
codice_sdi = models.ForeignKey('CodiceDestinatario', on_delete=models.CASCADE, null=True,
|
codice_sdi = models.ForeignKey('CodiceDestinatario', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="SoggettoFiscale_da_CodiceDestinatario_codice_sdi")
|
blank=True, related_name="SoggettoFiscale_da_CodiceDestinatario_codice_sdi")
|
||||||
sede_legale = models.IntegerField()
|
sede_legale = models.IntegerField()
|
||||||
stabile_organizzazione = models.IntegerField(null=True, blank=True)
|
stabile_organizzazione = models.ForeignKey('contatti_app.Indirizzo',null=True, blank=True,on_delete=models.SET_NULL,related_name='stabile_organizzazione')
|
||||||
cod_eori = models.CharField(null=True, max_length=17)
|
cod_eori = models.CharField(null=True, max_length=17)
|
||||||
nazione = models.ForeignKey('Nazione', on_delete=models.CASCADE, null=True,
|
nazione = models.ForeignKey('dati_geo_app.Nazione', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="SoggettoFiscale_da_Nazione_nazione")
|
blank=True, related_name="SoggettoFiscale_da_Nazione_nazione")
|
||||||
numero_licenza_guida = models.CharField(null=True, max_length=20)
|
numero_licenza_guida = models.CharField(null=True, max_length=20)
|
||||||
iscrizione_rea = models.ForeignKey('IscrizioneREA', on_delete=models.CASCADE, null=True,
|
iscrizione_rea = models.ForeignKey('IscrizioneREA', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="SoggettoFiscale_da_IscrizioneREA_iscrizione_rea")
|
blank=True, related_name="SoggettoFiscale_da_IscrizioneREA_iscrizione_rea")
|
||||||
revisione_principale = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="SoggettoFiscale_da_SoggettoFiscale_revisione_principale")
|
|
||||||
rimosso = models.BooleanField(null=True, blank=True)
|
rimosso = models.BooleanField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class PersonaFisica(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'personafisica'
|
|
||||||
verbose_name_plural = 'personafisica'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"PersonaFisica (id: {self.id})"
|
|
||||||
|
|
||||||
titolo = models.CharField(null=True, max_length=10)
|
|
||||||
nome = models.CharField(null=True, max_length=60)
|
|
||||||
cognome = models.CharField(null=True, max_length=60)
|
|
||||||
|
|
||||||
|
|
||||||
class PersonaGiuridica(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'personagiuridica'
|
|
||||||
verbose_name_plural = 'personagiuridica'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"PersonaGiuridica (id: {self.id})"
|
|
||||||
|
|
||||||
denominazione = models.CharField(null=True, max_length=80)
|
|
||||||
|
|
||||||
|
|
||||||
class PersonaContattoAzienda(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'personacontattoazienda'
|
|
||||||
verbose_name_plural = 'personacontattoazienda'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"PersonaContattoAzienda (id: {self.id})"
|
|
||||||
|
|
||||||
azienda = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="PersonaContattoAzienda_da_SoggettoFiscale")
|
|
||||||
|
|
||||||
|
|
||||||
class PartitaIvaCF(models.Model):
|
class PartitaIvaCF(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'partitaivacf'
|
verbose_name = 'partitaivacf'
|
||||||
|
|
@ -263,18 +226,6 @@ class PartitaIvaCF(models.Model):
|
||||||
codice = models.CharField(max_length=28)
|
codice = models.CharField(max_length=28)
|
||||||
|
|
||||||
|
|
||||||
class Nazione(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'nazione'
|
|
||||||
verbose_name_plural = 'nazione'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.descrizione}"
|
|
||||||
|
|
||||||
codifica = models.CharField(max_length=2)
|
|
||||||
descrizione = models.CharField(null=True, max_length=250)
|
|
||||||
|
|
||||||
|
|
||||||
class FormatoTrasmissione(models.Model):
|
class FormatoTrasmissione(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'formatotrasmissione'
|
verbose_name = 'formatotrasmissione'
|
||||||
|
|
@ -299,42 +250,6 @@ class CodiceDestinatario(models.Model):
|
||||||
descrizione = models.CharField(null=True, max_length=250)
|
descrizione = models.CharField(null=True, max_length=250)
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContatto(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'datodicontatto'
|
|
||||||
verbose_name_plural = 'datodicontatto'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"DatoDiContatto (id: {self.id})"
|
|
||||||
|
|
||||||
soggetto_fiscale = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DatoDiContatto_da_SoggettoFiscale_soggetto_fiscale")
|
|
||||||
|
|
||||||
|
|
||||||
class Telefono(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'telefono'
|
|
||||||
verbose_name_plural = 'telefono'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Telefono (id: {self.id})"
|
|
||||||
|
|
||||||
numero = models.CharField(max_length=20)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class Email(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'email'
|
|
||||||
verbose_name_plural = 'email'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Email (id: {self.id})"
|
|
||||||
|
|
||||||
indirizzo = models.CharField(max_length=30)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class IscrizioneAlboProfessionale(models.Model):
|
class IscrizioneAlboProfessionale(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'iscrizionealboprofessionale'
|
verbose_name = 'iscrizionealboprofessionale'
|
||||||
|
|
@ -347,7 +262,7 @@ class IscrizioneAlboProfessionale(models.Model):
|
||||||
blank=True, related_name="IscrizioneAlboProfessionale_da_AlboProfessionale_albo_professionale")
|
blank=True, related_name="IscrizioneAlboProfessionale_da_AlboProfessionale_albo_professionale")
|
||||||
numero_iscrizione_albo = models.CharField(null=True, max_length=60)
|
numero_iscrizione_albo = models.CharField(null=True, max_length=60)
|
||||||
data_iscrizione_albo = models.DateField(null=True, blank=True)
|
data_iscrizione_albo = models.DateField(null=True, blank=True)
|
||||||
persona_fisica = models.ForeignKey('PersonaFisica', on_delete=models.CASCADE, null=True,
|
persona_fisica = models.ForeignKey('contatti_app.PersonaFisica', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="IscrizioneAlboProfessionale_da_PersonaFisica_persona_fisica")
|
blank=True, related_name="IscrizioneAlboProfessionale_da_PersonaFisica_persona_fisica")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -562,7 +477,7 @@ class DatiTrasporto(models.Model):
|
||||||
|
|
||||||
dati_generali = models.ForeignKey('FatturaElettronica', on_delete=models.CASCADE, null=True,
|
dati_generali = models.ForeignKey('FatturaElettronica', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DatiTrasporto_da_FatturaElettronica_dati_generali")
|
blank=True, related_name="DatiTrasporto_da_FatturaElettronica_dati_generali")
|
||||||
indirizzo_resa = models.ForeignKey('dati_geo_app.Indirizzo', on_delete=models.CASCADE, null=True,
|
indirizzo_resa = models.ForeignKey('contatti_app.Indirizzo', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DatiTrasporto_da_Indirizzo_indirizzo_resa")
|
blank=True, related_name="DatiTrasporto_da_Indirizzo_indirizzo_resa")
|
||||||
mezzo_trasporto = models.CharField(null=True, max_length=80)
|
mezzo_trasporto = models.CharField(null=True, max_length=80)
|
||||||
numero_colli = models.IntegerField(null=True, blank=True)
|
numero_colli = models.IntegerField(null=True, blank=True)
|
||||||
|
|
@ -937,39 +852,3 @@ class DatiEstesiDettaglioFatturabile(models.Model):
|
||||||
null=True, blank=True, max_digits=21, decimal_places=2)
|
null=True, blank=True, max_digits=21, decimal_places=2)
|
||||||
data_inizio = models.DateField(null=True, blank=True)
|
data_inizio = models.DateField(null=True, blank=True)
|
||||||
data_fine = models.DateField(null=True, blank=True)
|
data_fine = models.DateField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class Sede(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'sede'
|
|
||||||
verbose_name_plural = 'sede'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Sede (id: {self.id})"
|
|
||||||
|
|
||||||
indirizzo = models.ForeignKey(
|
|
||||||
'dati_geo_app.Indirizzo', on_delete=models.CASCADE, null=True, blank=True)
|
|
||||||
inquilino = models.ForeignKey('SoggettoFiscale', on_delete=models.CASCADE,
|
|
||||||
null=True, blank=True, related_name="Sede_da_SoggettoFiscale_inquilino")
|
|
||||||
is_legale = models.BooleanField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class Fax(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'fax'
|
|
||||||
verbose_name_plural = 'fax'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Fax (id: {self.id})"
|
|
||||||
|
|
||||||
numero = models.CharField(null=True, max_length=20)
|
|
||||||
note = models.CharField(null=True, max_length=64)
|
|
||||||
|
|
||||||
|
|
||||||
class Pec(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'pec'
|
|
||||||
verbose_name_plural = 'pec'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Pec (id: {self.id})"
|
|
||||||
|
|
|
||||||
|
|
@ -69,11 +69,6 @@ class PartitaIvaCFResource(resources.ModelResource):
|
||||||
model = models.PartitaIvaCF
|
model = models.PartitaIvaCF
|
||||||
|
|
||||||
|
|
||||||
class NazioneResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Nazione
|
|
||||||
|
|
||||||
|
|
||||||
class FormatoTrasmissioneResource(resources.ModelResource):
|
class FormatoTrasmissioneResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.FormatoTrasmissione
|
model = models.FormatoTrasmissione
|
||||||
|
|
@ -84,21 +79,6 @@ class CodiceDestinatarioResource(resources.ModelResource):
|
||||||
model = models.CodiceDestinatario
|
model = models.CodiceDestinatario
|
||||||
|
|
||||||
|
|
||||||
class DatoDiContattoResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.DatoDiContatto
|
|
||||||
|
|
||||||
|
|
||||||
class TelefonoResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Telefono
|
|
||||||
|
|
||||||
|
|
||||||
class EmailResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Email
|
|
||||||
|
|
||||||
|
|
||||||
class IscrizioneAlboProfessionaleResource(resources.ModelResource):
|
class IscrizioneAlboProfessionaleResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.IscrizioneAlboProfessionale
|
model = models.IscrizioneAlboProfessionale
|
||||||
|
|
@ -129,16 +109,6 @@ class SoggettoEmittenteResource(resources.ModelResource):
|
||||||
model = models.SoggettoEmittente
|
model = models.SoggettoEmittente
|
||||||
|
|
||||||
|
|
||||||
class PersonaFisicaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.PersonaFisica
|
|
||||||
|
|
||||||
|
|
||||||
class PersonaGiuridicaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.PersonaGiuridica
|
|
||||||
|
|
||||||
|
|
||||||
class AlboProfessionaleResource(resources.ModelResource):
|
class AlboProfessionaleResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.AlboProfessionale
|
model = models.AlboProfessionale
|
||||||
|
|
@ -307,18 +277,3 @@ class TipologiaDocumentaleResource(resources.ModelResource):
|
||||||
class DatiEstesiDettaglioFatturabileResource(resources.ModelResource):
|
class DatiEstesiDettaglioFatturabileResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DatiEstesiDettaglioFatturabile
|
model = models.DatiEstesiDettaglioFatturabile
|
||||||
|
|
||||||
|
|
||||||
class SedeResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Sede
|
|
||||||
|
|
||||||
|
|
||||||
class FaxResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Fax
|
|
||||||
|
|
||||||
|
|
||||||
class PecResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Pec
|
|
||||||
|
|
|
||||||
|
|
@ -86,12 +86,6 @@ class PartitaIvaCFSerializer(serializers.ModelSerializer):
|
||||||
fields = ('codice')
|
fields = ('codice')
|
||||||
|
|
||||||
|
|
||||||
class NazioneSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.Nazione
|
|
||||||
fields = ('codifica', 'descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class FormatoTrasmissioneSerializer(serializers.ModelSerializer):
|
class FormatoTrasmissioneSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.FormatoTrasmissione
|
model = models.FormatoTrasmissione
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ router.register(r'soggettifatturaelettronica',
|
||||||
views.SoggettiFatturaElettronica_View)
|
views.SoggettiFatturaElettronica_View)
|
||||||
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
||||||
router.register(r'partitaivacf', views.PartitaIvaCF_View)
|
router.register(r'partitaivacf', views.PartitaIvaCF_View)
|
||||||
router.register(r'nazione', views.Nazione_View)
|
|
||||||
router.register(r'formatotrasmissione', views.FormatoTrasmissione_View)
|
router.register(r'formatotrasmissione', views.FormatoTrasmissione_View)
|
||||||
router.register(r'codicedestinatario', views.CodiceDestinatario_View)
|
router.register(r'codicedestinatario', views.CodiceDestinatario_View)
|
||||||
router.register(r'datodicontatto', views.DatoDiContatto_View)
|
router.register(r'datodicontatto', views.DatoDiContatto_View)
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ class DestinatarioOfferta(models.Model):
|
||||||
|
|
||||||
destinazione = models.ForeignKey('Sede', on_delete=models.CASCADE, null=True,
|
destinazione = models.ForeignKey('Sede', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DestinatarioOfferta_da_Sede_destinazione")
|
blank=True, related_name="DestinatarioOfferta_da_Sede_destinazione")
|
||||||
intestatario = models.ForeignKey('fattura_elettronica_app.PersonaContattoAzienda', on_delete=models.CASCADE, null=True,
|
intestatario = models.ForeignKey('contatti_app.PersonaContattoAzienda', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DestinatarioOfferta_da_PersonaContattoAzienda_intestatario")
|
blank=True, related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario")
|
||||||
|
|
||||||
|
|
||||||
class GruppoOfferte(models.Model):
|
class GruppoOfferte(models.Model):
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@ INSTALLED_APPS = [
|
||||||
'sangue_app.apps.SangueAppConfig',
|
'sangue_app.apps.SangueAppConfig',
|
||||||
'dati_geo_app.apps.DatiGeograficiAppConfig',
|
'dati_geo_app.apps.DatiGeograficiAppConfig',
|
||||||
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
||||||
|
'contatti_app.apps.ContattiAppConfig',
|
||||||
'djaa_list_filter',
|
'djaa_list_filter',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
# 'rest_framework.authtoken',
|
# 'rest_framework.authtoken',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue