il mulo prosegue
parent
ee5f3fe7db
commit
8e64531827
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-12 22:20
|
# Generated by Django 4.1.7 on 2023-05-14 13:47
|
||||||
|
|
||||||
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 = [
|
||||||
("dati_geo_app", "0007_delete_indirizzo"),
|
|
||||||
("contenttypes", "0002_remove_content_type_name"),
|
("contenttypes", "0002_remove_content_type_name"),
|
||||||
|
("dati_geo_app", "0007_delete_indirizzo"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
|
||||||
|
|
@ -506,7 +506,7 @@ class TipologiaDocumentaleAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.DatiEstesiDettaglioFatturabile)
|
@admin.register(models.OggettoDaFatturare)
|
||||||
class DatiEstesiDettaglioFatturabileAdmin(ImportExportModelAdmin):
|
class DatiEstesiDettaglioFatturabileAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.DatiEstesiDettaglioFatturabileResource
|
# resource = resources.DatiEstesiDettaglioFatturabileResource
|
||||||
# list_per_page = 15
|
# list_per_page = 15
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-12 22:20
|
# Generated by Django 4.1.7 on 2023-05-14 13:48
|
||||||
|
|
||||||
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 = [
|
||||||
("contenttypes", "0002_remove_content_type_name"),
|
|
||||||
("dati_geo_app", "0007_delete_indirizzo"),
|
("dati_geo_app", "0007_delete_indirizzo"),
|
||||||
|
("contenttypes", "0002_remove_content_type_name"),
|
||||||
("contatti_app", "0001_initial"),
|
("contatti_app", "0001_initial"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -288,39 +288,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "datidocumentali",
|
"verbose_name_plural": "datidocumentali",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="DatiEstesiDettaglioFatturabile",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("descrizione", models.CharField(max_length=1000, null=True)),
|
|
||||||
(
|
|
||||||
"quantita",
|
|
||||||
models.DecimalField(
|
|
||||||
blank=True, decimal_places=4, max_digits=21, null=True
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"prezzo_unitario",
|
|
||||||
models.DecimalField(
|
|
||||||
blank=True, decimal_places=2, max_digits=21, null=True
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("data_inizio", models.DateField(blank=True, null=True)),
|
|
||||||
("data_fine", models.DateField(blank=True, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "datiestesidettagliofatturabile",
|
|
||||||
"verbose_name_plural": "datiestesidettagliofatturabile",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="DatiRitenuta",
|
name="DatiRitenuta",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -404,16 +371,6 @@ class Migration(migrations.Migration):
|
||||||
to="fattura_elettronica_app.aliquotaiva",
|
to="fattura_elettronica_app.aliquotaiva",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
|
||||||
"dati_estesi",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DettaglioLinee_da_DatiEstesiDettaglioFatturabile_dati_estesi",
|
|
||||||
to="fattura_elettronica_app.datiestesidettagliofatturabile",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "dettagliolinee",
|
"verbose_name": "dettagliolinee",
|
||||||
|
|
@ -1226,6 +1183,49 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "riferimentoddtnumerolinea",
|
"verbose_name_plural": "riferimentoddtnumerolinea",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="OggettoDaFatturare",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("descrizione", models.CharField(max_length=1000, null=True)),
|
||||||
|
(
|
||||||
|
"quantita",
|
||||||
|
models.DecimalField(
|
||||||
|
blank=True, decimal_places=4, max_digits=21, null=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"prezzo_unitario",
|
||||||
|
models.DecimalField(
|
||||||
|
blank=True, decimal_places=2, max_digits=21, null=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("data_inizio", models.DateField(blank=True, null=True)),
|
||||||
|
("data_fine", models.DateField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"unita_misura",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="DatiEstesiDettaglioFatturabile_da_UnitaMisura_unita_misura",
|
||||||
|
to="fattura_elettronica_app.unitamisura",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "OggettoDaFatturare",
|
||||||
|
"verbose_name_plural": "OggettoDaFatturare",
|
||||||
|
},
|
||||||
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="iscrizionerea",
|
model_name="iscrizionerea",
|
||||||
name="socio_unico",
|
name="socio_unico",
|
||||||
|
|
@ -1428,6 +1428,17 @@ class Migration(migrations.Migration):
|
||||||
to="fattura_elettronica_app.fatturaelettronica",
|
to="fattura_elettronica_app.fatturaelettronica",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="dettagliolinee",
|
||||||
|
name="riferimento_oggetto_fattura",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="DettaglioLinee_da_DatiEstesiDettaglioFatturabile_riferimento_oggetto_fattura",
|
||||||
|
to="fattura_elettronica_app.oggettodafatturare",
|
||||||
|
),
|
||||||
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="dettagliolinee",
|
model_name="dettagliolinee",
|
||||||
name="sconto_maggiorazione",
|
name="sconto_maggiorazione",
|
||||||
|
|
@ -1734,17 +1745,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "datifatturecollegate",
|
"verbose_name_plural": "datifatturecollegate",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
|
||||||
model_name="datiestesidettagliofatturabile",
|
|
||||||
name="unita_misura",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DatiEstesiDettaglioFatturabile_da_UnitaMisura_unita_misura",
|
|
||||||
to="fattura_elettronica_app.unitamisura",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="datidocumentali",
|
model_name="datidocumentali",
|
||||||
name="dati_generali",
|
name="dati_generali",
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="2343" y="1899" name="DettaglioFatturabile">
|
<table x="2343" y="1899" name="AtomoFatturabile">
|
||||||
<row name="offerta_riferimento" null="1" autoincrement="0">
|
<row name="offerta_riferimento" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
|
|
@ -63,9 +63,9 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="ModalitaLavoro" row="id" />
|
<default>NULL</default><relation table="ModalitaLavoro" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="dati_estesi" null="1" autoincrement="0">
|
<row name="riferimento_oggetto_fattura" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="DatiEstesiDettaglioFatturabile" row="id" />
|
<default>NULL</default><relation table="OggettoDaFatturare" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="flusso_di_ricavi" null="1" autoincrement="0">
|
<row name="flusso_di_ricavi" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
|
|
@ -1044,9 +1044,9 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="TipoCessionePrestazione" row="id" />
|
<default>NULL</default><relation table="TipoCessionePrestazione" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="dati_estesi" null="1" autoincrement="0">
|
<row name="riferimento_oggetto_fattura" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="DatiEstesiDettaglioFatturabile" row="id" />
|
<default>NULL</default><relation table="OggettoDaFatturare" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
|
|
@ -1226,7 +1226,7 @@
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="4012" y="1635" name="DatiEstesiDettaglioFatturabile">
|
<table x="4012" y="1635" name="OggettoDaFatturare">
|
||||||
<row name="unita_misura" null="1" autoincrement="0">
|
<row name="unita_misura" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="UnitaMisura" row="id" />
|
<default>NULL</default><relation table="UnitaMisura" row="id" />
|
||||||
|
|
|
||||||
|
|
@ -655,8 +655,8 @@ class DettaglioLinee(models.Model):
|
||||||
riferimento_amministrazione = models.CharField(null=True, max_length=20)
|
riferimento_amministrazione = models.CharField(null=True, max_length=20)
|
||||||
tipo_cessione_prestazione = models.ForeignKey('TipoCessionePrestazione', on_delete=models.CASCADE, null=True,
|
tipo_cessione_prestazione = models.ForeignKey('TipoCessionePrestazione', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DettaglioLinee_da_TipoCessionePrestazione_tipo_cessione_prestazione")
|
blank=True, related_name="DettaglioLinee_da_TipoCessionePrestazione_tipo_cessione_prestazione")
|
||||||
dati_estesi = models.ForeignKey('DatiEstesiDettaglioFatturabile', on_delete=models.CASCADE, null=True,
|
riferimento_oggetto_fattura = models.ForeignKey('OggettoDaFatturare', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DettaglioLinee_da_DatiEstesiDettaglioFatturabile_dati_estesi")
|
blank=True, related_name="DettaglioLinee_da_DatiEstesiDettaglioFatturabile_riferimento_oggetto_fattura")
|
||||||
|
|
||||||
|
|
||||||
class altroDatoGestionale(models.Model):
|
class altroDatoGestionale(models.Model):
|
||||||
|
|
@ -804,13 +804,13 @@ class TipologiaDocumentale(models.Model):
|
||||||
descrizione = models.CharField(null=True, max_length=100)
|
descrizione = models.CharField(null=True, max_length=100)
|
||||||
|
|
||||||
|
|
||||||
class DatiEstesiDettaglioFatturabile(models.Model):
|
class OggettoDaFatturare(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'datiestesidettagliofatturabile'
|
verbose_name = 'OggettoDaFatturare'
|
||||||
verbose_name_plural = 'datiestesidettagliofatturabile'
|
verbose_name_plural = 'OggettoDaFatturare'
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"DatiEstesiDettaglioFatturabile (id: {self.id})"
|
return f"OggettoDaFatturare (id: {self.id})"
|
||||||
|
|
||||||
unita_misura = models.ForeignKey('UnitaMisura', on_delete=models.CASCADE, null=True,
|
unita_misura = models.ForeignKey('UnitaMisura', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="DatiEstesiDettaglioFatturabile_da_UnitaMisura_unita_misura")
|
blank=True, related_name="DatiEstesiDettaglioFatturabile_da_UnitaMisura_unita_misura")
|
||||||
|
|
|
||||||
|
|
@ -266,4 +266,4 @@ class TipologiaDocumentaleResource(resources.ModelResource):
|
||||||
|
|
||||||
class DatiEstesiDettaglioFatturabileResource(resources.ModelResource):
|
class DatiEstesiDettaglioFatturabileResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DatiEstesiDettaglioFatturabile
|
model = models.OggettoDaFatturare
|
||||||
|
|
|
||||||
|
|
@ -4,19 +4,6 @@ from . import models
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
class ModalitaLavoroSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.ModalitaLavoro
|
|
||||||
fields = ('unita_misura_std', 'descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class DettaglioFatturabileSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.DettaglioFatturabile
|
|
||||||
fields = ('offerta_riferimento', 'modalita_lavoro',
|
|
||||||
'dati_estesi', 'flusso_di_ricavi')
|
|
||||||
|
|
||||||
|
|
||||||
class FatturaElettronicaSerializer(serializers.ModelSerializer):
|
class FatturaElettronicaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.FatturaElettronica
|
model = models.FatturaElettronica
|
||||||
|
|
@ -304,7 +291,7 @@ class DettaglioLineeSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DettaglioLinee
|
model = models.DettaglioLinee
|
||||||
fields = ('fattura_elettronica_body', 'numero_linea', 'sconto_maggiorazione', 'aliquota_iva',
|
fields = ('fattura_elettronica_body', 'numero_linea', 'sconto_maggiorazione', 'aliquota_iva',
|
||||||
'riferimento_amministrazione', 'tipo_cessione_prestazione', 'dati_estesi')
|
'riferimento_amministrazione', 'tipo_cessione_prestazione', 'riferimento_oggetto_fattura')
|
||||||
|
|
||||||
|
|
||||||
class altroDatoGestionaleSerializer(serializers.ModelSerializer):
|
class altroDatoGestionaleSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -377,7 +364,7 @@ class TipologiaDocumentaleSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class DatiEstesiDettaglioFatturabileSerializer(serializers.ModelSerializer):
|
class DatiEstesiDettaglioFatturabileSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.DatiEstesiDettaglioFatturabile
|
model = models.OggettoDaFatturare
|
||||||
fields = ('unita_misura', 'descrizione', 'quantita',
|
fields = ('unita_misura', 'descrizione', 'quantita',
|
||||||
'prezzo_unitario', 'data_inizio', 'data_fine')
|
'prezzo_unitario', 'data_inizio', 'data_fine')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ router = routers.DefaultRouter()
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
router.register(r'modalitalavoro', views.ModalitaLavoro_View)
|
router.register(r'modalitalavoro', views.ModalitaLavoro_View)
|
||||||
router.register(r'dettagliofatturabile', views.DettaglioFatturabile_View)
|
router.register(r'AtomoFatturabile', views.DettaglioFatturabile_View)
|
||||||
router.register(r'fatturaelettronica', views.FatturaElettronica_View)
|
router.register(r'fatturaelettronica', views.FatturaElettronica_View)
|
||||||
router.register(r'regimefiscale', views.RegimeFiscale_View)
|
router.register(r'regimefiscale', views.RegimeFiscale_View)
|
||||||
router.register(r'tipocassa', views.TipoCassa_View)
|
router.register(r'tipocassa', views.TipoCassa_View)
|
||||||
|
|
@ -75,7 +75,7 @@ router.register(r'riferimentoordineacquistonumerolinea',
|
||||||
views.RiferimentoOrdineAcquistoNumeroLinea_View)
|
views.RiferimentoOrdineAcquistoNumeroLinea_View)
|
||||||
router.register(r'codicidocumentali', views.CodiciDocumentali_View)
|
router.register(r'codicidocumentali', views.CodiciDocumentali_View)
|
||||||
router.register(r'tipologiadocumentale', views.TipologiaDocumentale_View)
|
router.register(r'tipologiadocumentale', views.TipologiaDocumentale_View)
|
||||||
router.register(r'datiestesidettagliofatturabile',
|
router.register(r'OggettoDaFatturare',
|
||||||
views.DatiEstesiDettaglioFatturabile_View)
|
views.DatiEstesiDettaglioFatturabile_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)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class DettaglioFatturabile_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
queryset = models.DettaglioFatturabile.objects.all()
|
queryset = models.AtomoFatturabile.objects.all()
|
||||||
serializer_class = serializers.DettaglioFatturabileSerializer
|
serializer_class = serializers.DettaglioFatturabileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -503,7 +503,7 @@ class DatiEstesiDettaglioFatturabile_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
queryset = models.DatiEstesiDettaglioFatturabile.objects.all()
|
queryset = models.OggettoDaFatturare.objects.all()
|
||||||
serializer_class = serializers.DatiEstesiDettaglioFatturabileSerializer
|
serializer_class = serializers.DatiEstesiDettaglioFatturabileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
from import_export.admin import ImportExportModelAdmin
|
||||||
|
from django.contrib import admin
|
||||||
|
# from django.core.cache import cache
|
||||||
|
# from django.core.paginator import Paginator
|
||||||
|
from . import models
|
||||||
|
from . import resources
|
||||||
|
|
||||||
|
|
||||||
|
# # Modified version of a GIST I found in a SO thread
|
||||||
|
# # cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
|
||||||
|
# class CachingPaginator(Paginator):
|
||||||
|
# def _get_count(self):
|
||||||
|
# if not hasattr(self, "_count"):
|
||||||
|
# self._count = None
|
||||||
|
# if self._count is None:
|
||||||
|
# try:
|
||||||
|
# key = "adm:{0}:count".format(hash(self.object_list.query.__str__()))
|
||||||
|
# self._count = cache.get(key, -1)
|
||||||
|
# if self._count == -1:
|
||||||
|
# self._count = super().count
|
||||||
|
# cache.set(key, self._count, 60)
|
||||||
|
# except:
|
||||||
|
# self._count = len(self.object_list)
|
||||||
|
# return self._count
|
||||||
|
# count = property(_get_count)
|
||||||
|
|
||||||
|
# # Main reusable Admin class for only viewing
|
||||||
|
# class ViewAdminMixin(admin.ModelAdmin):
|
||||||
|
# def has_add_permission(self, request):
|
||||||
|
# return False
|
||||||
|
#
|
||||||
|
# def has_change_permission(self, request, obj=None):
|
||||||
|
# return False
|
||||||
|
#
|
||||||
|
# def has_delete_permission(self, request, obj=None):
|
||||||
|
# return False
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
@admin.register(models.DestinatarioOfferta)
|
||||||
|
class DestinatarioOffertaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.DestinatarioOffertaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.GruppoOfferte)
|
||||||
|
class GruppoOfferteAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.GruppoOfferteResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.Offerta)
|
||||||
|
class OffertaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.OffertaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.AgenteOfferta)
|
||||||
|
class AgenteOffertaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.AgenteOffertaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.ParteEconomicaOfferta)
|
||||||
|
class ParteEconomicaOffertaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.ParteEconomicaOffertaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.TipologiaOfferta)
|
||||||
|
class TipologiaOffertaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.TipologiaOffertaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class OfferteAppConfig(AppConfig):
|
||||||
|
name = 'offerte_app'
|
||||||
|
verbose_name = 'Offerte'
|
||||||
|
path = pathlib.Path(__file__).parent
|
||||||
|
|
||||||
|
def ready(self):
|
||||||
|
from . import signals
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
import json
|
||||||
|
from channels.generic.websocket import WebsocketConsumer
|
||||||
|
from asgiref.sync import async_to_sync
|
||||||
|
|
||||||
|
|
||||||
|
class WsConsumer(WebsocketConsumer):
|
||||||
|
def connect(self):
|
||||||
|
self.accept()
|
||||||
|
print("accept ws connection")
|
||||||
|
|
||||||
|
def disconnect(self, close_code):
|
||||||
|
print("ws disconnection")
|
||||||
|
|
||||||
|
def receive(self, text_data):
|
||||||
|
text_data_json = json.loads(text_data)
|
||||||
|
print("ws receive", text_data_json)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-12 22:46
|
# Generated by Django 4.1.7 on 2023-05-14 13:48
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -7,11 +7,14 @@ import django.db.models.deletion
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = []
|
dependencies = [
|
||||||
|
("contatti_app", "0001_initial"),
|
||||||
|
("fattura_elettronica_app", "0001_initial"),
|
||||||
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="BMCModelloDiBusiness",
|
name="AgenteOfferta",
|
||||||
fields=[
|
fields=[
|
||||||
(
|
(
|
||||||
"id",
|
"id",
|
||||||
|
|
@ -22,15 +25,112 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
("codice", models.IntegerField(blank=True, null=True)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "agenteofferta",
|
||||||
|
"verbose_name_plural": "agenteofferta",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="AtomoFatturabile",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "AtomoFatturabile",
|
||||||
|
"verbose_name_plural": "AtomoFatturabile",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="DestinatarioOfferta",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"destinazione",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="DestinatarioOfferta_da_Sede_destinazione",
|
||||||
|
to="contatti_app.sede",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"intestatario",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario",
|
||||||
|
to="contatti_app.personacontattoazienda",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "destinatarioofferta",
|
||||||
|
"verbose_name_plural": "destinatarioofferta",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="GruppoOfferte",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("anno_1a_rev", models.IntegerField(blank=True, null=True)),
|
||||||
|
("numero", models.IntegerField(blank=True, null=True)),
|
||||||
("descrizione", models.CharField(max_length=4096, null=True)),
|
("descrizione", models.CharField(max_length=4096, null=True)),
|
||||||
|
(
|
||||||
|
"agente",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="GruppoOfferte_da_AgenteOfferta_agente",
|
||||||
|
to="offerte_app.agenteofferta",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"destinatario",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="GruppoOfferte_da_DestinatarioOfferta_destinatario",
|
||||||
|
to="offerte_app.destinatarioofferta",
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "bmcmodellodibusiness",
|
"verbose_name": "gruppoofferte",
|
||||||
"verbose_name_plural": "bmcmodellodibusiness",
|
"verbose_name_plural": "gruppoofferte",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="BMCSegmentiDiClientela",
|
name="Offerta",
|
||||||
fields=[
|
fields=[
|
||||||
(
|
(
|
||||||
"id",
|
"id",
|
||||||
|
|
@ -41,25 +141,29 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("settore_cliente", models.IntegerField(blank=True, null=True)),
|
("data", models.DateField(blank=True, null=True)),
|
||||||
|
("revisione", models.IntegerField(blank=True, null=True)),
|
||||||
|
("documento", models.CharField(max_length=128, null=True)),
|
||||||
|
("codice_offerta", models.IntegerField(blank=True, null=True)),
|
||||||
|
("accettazione", models.DateField(blank=True, null=True)),
|
||||||
(
|
(
|
||||||
"modello_di_business",
|
"gruppo",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="BMCSegmentiDiClientela_da_BMCModelloDiBusiness_modello_di_business",
|
related_name="Offerta_da_GruppoOfferte_gruppo",
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
to="offerte_app.gruppoofferte",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "bmcsegmentidiclientela",
|
"verbose_name": "offerta",
|
||||||
"verbose_name_plural": "bmcsegmentidiclientela",
|
"verbose_name_plural": "offerta",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="BMCRisorsaChiave",
|
name="TipologiaOfferta",
|
||||||
fields=[
|
fields=[
|
||||||
(
|
(
|
||||||
"id",
|
"id",
|
||||||
|
|
@ -70,25 +174,15 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("risorsa_chiave", models.IntegerField(blank=True, null=True)),
|
("descrizione", models.CharField(max_length=1024, null=True)),
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCRisorsaChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "bmcrisorsachiave",
|
"verbose_name": "tipologiaofferta",
|
||||||
"verbose_name_plural": "bmcrisorsachiave",
|
"verbose_name_plural": "tipologiaofferta",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="BMCRelazioneConCliente",
|
name="ParteEconomicaOfferta",
|
||||||
fields=[
|
fields=[
|
||||||
(
|
(
|
||||||
"id",
|
"id",
|
||||||
|
|
@ -99,25 +193,34 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("relazione_cliente", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
(
|
||||||
"modello_di_business",
|
"dettaglio_economico_offerto",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="BMCRelazioneConCliente_da_BMCModelloDiBusiness_modello_di_business",
|
related_name="ParteEconomicaOfferta_da_DettaglioFatturabile_dettaglio_economico_offerto",
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
to="offerte_app.atomofatturabile",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"revisione",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="ParteEconomicaOfferta_da_Offerta_revisione",
|
||||||
|
to="offerte_app.offerta",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "bmcrelazioneconcliente",
|
"verbose_name": "parteeconomicaofferta",
|
||||||
"verbose_name_plural": "bmcrelazioneconcliente",
|
"verbose_name_plural": "parteeconomicaofferta",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="BMCPropostaDiValore",
|
name="ModalitaLavoro",
|
||||||
fields=[
|
fields=[
|
||||||
(
|
(
|
||||||
"id",
|
"id",
|
||||||
|
|
@ -128,137 +231,65 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("proposta_di_valore", models.IntegerField(blank=True, null=True)),
|
("descrizione", models.IntegerField(blank=True, null=True)),
|
||||||
(
|
(
|
||||||
"modello_di_business",
|
"unita_misura_std",
|
||||||
models.ForeignKey(
|
models.ForeignKey(
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="BMCPropostaDiValore_da_BMCModelloDiBusiness_modello_di_business",
|
related_name="ModalitaLavoro_da_UnitaMisura_unita_misura_std",
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
to="fattura_elettronica_app.unitamisura",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
"verbose_name": "bmcpropostadivalore",
|
"verbose_name": "modalitalavoro",
|
||||||
"verbose_name_plural": "bmcpropostadivalore",
|
"verbose_name_plural": "modalitalavoro",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.AddField(
|
||||||
name="BMCPartnerChiave",
|
model_name="gruppoofferte",
|
||||||
fields=[
|
name="tipo",
|
||||||
(
|
field=models.ForeignKey(
|
||||||
"id",
|
blank=True,
|
||||||
models.AutoField(
|
null=True,
|
||||||
auto_created=True,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
primary_key=True,
|
related_name="GruppoOfferte_da_TipologiaOfferta_tipo",
|
||||||
serialize=False,
|
to="offerte_app.tipologiaofferta",
|
||||||
verbose_name="ID",
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
("partnership_azienda", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCPartnerChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcpartnerchiave",
|
|
||||||
"verbose_name_plural": "bmcpartnerchiave",
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.AddField(
|
||||||
name="BMCFlussoDiRicavi",
|
model_name="atomofatturabile",
|
||||||
fields=[
|
name="modalita_lavoro",
|
||||||
(
|
field=models.ForeignKey(
|
||||||
"id",
|
blank=True,
|
||||||
models.AutoField(
|
null=True,
|
||||||
auto_created=True,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
primary_key=True,
|
related_name="DettaglioFatturabile_da_ModalitaLavoro_modalita_lavoro",
|
||||||
serialize=False,
|
to="offerte_app.modalitalavoro",
|
||||||
verbose_name="ID",
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
("flusso_di_ricavi", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCFlussoDiRicavi_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcflussodiricavi",
|
|
||||||
"verbose_name_plural": "bmcflussodiricavi",
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.AddField(
|
||||||
name="BMCCanaleDiDistribuzione",
|
model_name="atomofatturabile",
|
||||||
fields=[
|
name="offerta_riferimento",
|
||||||
(
|
field=models.ForeignKey(
|
||||||
"id",
|
blank=True,
|
||||||
models.AutoField(
|
null=True,
|
||||||
auto_created=True,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
primary_key=True,
|
related_name="DettaglioFatturabile_da_Offerta_offerta_riferimento",
|
||||||
serialize=False,
|
to="offerte_app.offerta",
|
||||||
verbose_name="ID",
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
("canale", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCCanaleDiDistribuzione_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmccanaledidistribuzione",
|
|
||||||
"verbose_name_plural": "bmccanaledidistribuzione",
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.AddField(
|
||||||
name="BMCAttivitaChiave",
|
model_name="atomofatturabile",
|
||||||
fields=[
|
name="riferimento_oggetto_fattura",
|
||||||
(
|
field=models.ForeignKey(
|
||||||
"id",
|
blank=True,
|
||||||
models.AutoField(
|
null=True,
|
||||||
auto_created=True,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
primary_key=True,
|
related_name="DettaglioFatturabile_da_DatiEstesiDettaglioFatturabile_riferimento_oggetto_fattura",
|
||||||
serialize=False,
|
to="fattura_elettronica_app.oggettodafatturare",
|
||||||
verbose_name="ID",
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
("attivita_chiave", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCAttivitaChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="business_model_canvas_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcattivitachiave",
|
|
||||||
"verbose_name_plural": "bmcattivitachiave",
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!-- SQL XML created by WWW SQL Designer, https://github.com/ondras/wwwsqldesigner/ -->
|
||||||
|
<!-- Active URL: http://127.0.0.1:8080/ -->
|
||||||
|
<sql>
|
||||||
|
<datatypes db="mysql">
|
||||||
|
<group label="Numeric" color="rgb(238,238,170)">
|
||||||
|
<type label="Integer" length="0" sql="INTEGER" quote=""/>
|
||||||
|
<type label="TINYINT" length="0" sql="TINYINT" quote=""/>
|
||||||
|
<type label="SMALLINT" length="0" sql="SMALLINT" quote=""/>
|
||||||
|
<type label="MEDIUMINT" length="0" sql="MEDIUMINT" quote=""/>
|
||||||
|
<type label="INT" length="0" sql="INT" quote=""/>
|
||||||
|
<type label="BIGINT" length="0" sql="BIGINT" quote=""/>
|
||||||
|
<type label="Decimal" length="1" sql="DECIMAL" re="DEC" quote=""/>
|
||||||
|
<type label="Single precision" length="0" sql="FLOAT" quote=""/>
|
||||||
|
<type label="Double precision" length="0" sql="DOUBLE" re="DOUBLE" quote=""/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group label="Character" color="rgb(255,200,200)">
|
||||||
|
<type label="Char" length="1" sql="CHAR" quote="'"/>
|
||||||
|
<type label="Varchar" length="1" sql="VARCHAR" quote="'"/>
|
||||||
|
<type label="Text" length="0" sql="MEDIUMTEXT" re="TEXT" quote="'"/>
|
||||||
|
<type label="Binary" length="1" sql="BINARY" quote="'"/>
|
||||||
|
<type label="Varbinary" length="1" sql="VARBINARY" quote="'"/>
|
||||||
|
<type label="BLOB" length="0" sql="BLOB" re="BLOB" quote="'"/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group label="Date & Time" color="rgb(200,255,200)">
|
||||||
|
<type label="Date" length="0" sql="DATE" quote="'"/>
|
||||||
|
<type label="Time" length="0" sql="TIME" quote="'"/>
|
||||||
|
<type label="Datetime" length="0" sql="DATETIME" quote="'"/>
|
||||||
|
<type label="Year" length="0" sql="YEAR" quote=""/>
|
||||||
|
<type label="Timestamp" length="0" sql="TIMESTAMP" quote="'"/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group label="Miscellaneous" color="rgb(200,200,255)">
|
||||||
|
<type label="ENUM" length="1" sql="ENUM" quote=""/>
|
||||||
|
<type label="SET" length="1" sql="SET" quote=""/>
|
||||||
|
<type label="Bit" length="0" sql="bit" quote=""/>
|
||||||
|
<type label="Jsonb" length="0" sql="JSONB" quote="" />
|
||||||
|
</group>
|
||||||
|
</datatypes>
|
||||||
|
</sql>
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
class DestinatarioOfferta(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'destinatarioofferta'
|
||||||
|
verbose_name_plural = 'destinatarioofferta'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"DestinatarioOfferta (id: {self.id})"
|
||||||
|
|
||||||
|
destinazione = models.ForeignKey('contatti_app.Sede', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="DestinatarioOfferta_da_Sede_destinazione")
|
||||||
|
intestatario = models.ForeignKey('contatti_app.PersonaContattoAzienda', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario")
|
||||||
|
|
||||||
|
|
||||||
|
class GruppoOfferte(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'gruppoofferte'
|
||||||
|
verbose_name_plural = 'gruppoofferte'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"GruppoOfferte (id: {self.id})"
|
||||||
|
|
||||||
|
destinatario = models.ForeignKey('DestinatarioOfferta', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="GruppoOfferte_da_DestinatarioOfferta_destinatario")
|
||||||
|
agente = models.ForeignKey('AgenteOfferta', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="GruppoOfferte_da_AgenteOfferta_agente")
|
||||||
|
tipo = models.ForeignKey('TipologiaOfferta', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="GruppoOfferte_da_TipologiaOfferta_tipo")
|
||||||
|
anno_1a_rev = models.IntegerField(null=True, blank=True)
|
||||||
|
numero = models.IntegerField(null=True, blank=True)
|
||||||
|
descrizione = models.CharField(null=True, max_length=4096)
|
||||||
|
|
||||||
|
|
||||||
|
class Offerta(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'offerta'
|
||||||
|
verbose_name_plural = 'offerta'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"Offerta (id: {self.id})"
|
||||||
|
|
||||||
|
gruppo = models.ForeignKey('GruppoOfferte', on_delete=models.CASCADE,
|
||||||
|
null=True, blank=True, related_name="Offerta_da_GruppoOfferte_gruppo")
|
||||||
|
data = models.DateField(null=True, blank=True)
|
||||||
|
revisione = models.IntegerField(null=True, blank=True)
|
||||||
|
documento = models.CharField(null=True, max_length=128)
|
||||||
|
codice_offerta = models.IntegerField(null=True, blank=True)
|
||||||
|
accettazione = models.DateField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class AgenteOfferta(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'agenteofferta'
|
||||||
|
verbose_name_plural = 'agenteofferta'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"AgenteOfferta (id: {self.id})"
|
||||||
|
|
||||||
|
codice = models.IntegerField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class ModalitaLavoro(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'modalitalavoro'
|
||||||
|
verbose_name_plural = 'modalitalavoro'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"ModalitaLavoro (id: {self.id})"
|
||||||
|
|
||||||
|
unita_misura_std = models.ForeignKey('fattura_elettronica_app.UnitaMisura', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="ModalitaLavoro_da_UnitaMisura_unita_misura_std")
|
||||||
|
descrizione = models.IntegerField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class AtomoFatturabile(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'AtomoFatturabile'
|
||||||
|
verbose_name_plural = 'AtomoFatturabile'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"AtomoFatturabile (id: {self.id})"
|
||||||
|
|
||||||
|
offerta_riferimento = models.ForeignKey('Offerta', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="DettaglioFatturabile_da_Offerta_offerta_riferimento")
|
||||||
|
modalita_lavoro = models.ForeignKey('ModalitaLavoro', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="DettaglioFatturabile_da_ModalitaLavoro_modalita_lavoro")
|
||||||
|
riferimento_oggetto_fattura = models.ForeignKey('fattura_elettronica_app.OggettoDaFatturare', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="DettaglioFatturabile_da_DatiEstesiDettaglioFatturabile_riferimento_oggetto_fattura")
|
||||||
|
# flusso_di_ricavi = models.ForeignKey('FlussoDiRicavi', on_delete=models.CASCADE, null=True,
|
||||||
|
# blank=True, related_name="DettaglioFatturabile_da_FlussoDiRicavi_flusso_di_ricavi")
|
||||||
|
|
||||||
|
class ParteEconomicaOfferta(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'parteeconomicaofferta'
|
||||||
|
verbose_name_plural = 'parteeconomicaofferta'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"ParteEconomicaOfferta (id: {self.id})"
|
||||||
|
|
||||||
|
revisione = models.ForeignKey('Offerta', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="ParteEconomicaOfferta_da_Offerta_revisione")
|
||||||
|
dettaglio_economico_offerto = models.ForeignKey('AtomoFatturabile', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="ParteEconomicaOfferta_da_DettaglioFatturabile_dettaglio_economico_offerto")
|
||||||
|
|
||||||
|
|
||||||
|
class TipologiaOfferta(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'tipologiaofferta'
|
||||||
|
verbose_name_plural = 'tipologiaofferta'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"TipologiaOfferta (id: {self.id})"
|
||||||
|
|
||||||
|
descrizione = models.CharField(null=True, max_length=1024)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
from import_export import resources
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
class DestinatarioOffertaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.DestinatarioOfferta
|
||||||
|
|
||||||
|
|
||||||
|
class GruppoOfferteResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.GruppoOfferte
|
||||||
|
|
||||||
|
|
||||||
|
class OffertaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.Offerta
|
||||||
|
|
||||||
|
|
||||||
|
class AgenteOffertaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.AgenteOfferta
|
||||||
|
|
||||||
|
|
||||||
|
class ParteEconomicaOffertaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.ParteEconomicaOfferta
|
||||||
|
|
||||||
|
|
||||||
|
class TipologiaOffertaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.TipologiaOfferta
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
from rest_framework import serializers
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
class DestinatarioOffertaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.DestinatarioOfferta
|
||||||
|
fields = ('destinazione', 'intestatario')
|
||||||
|
|
||||||
|
|
||||||
|
class GruppoOfferteSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.GruppoOfferte
|
||||||
|
fields = ('destinatario', 'agente', 'tipo',
|
||||||
|
'anno_1a_rev', 'numero', 'descrizione')
|
||||||
|
|
||||||
|
|
||||||
|
class OffertaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.Offerta
|
||||||
|
fields = ('gruppo', 'data', 'revisione', 'documento',
|
||||||
|
'codice_offerta', 'accettazione')
|
||||||
|
|
||||||
|
|
||||||
|
class AgenteOffertaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.AgenteOfferta
|
||||||
|
fields = ('codice')
|
||||||
|
|
||||||
|
|
||||||
|
class ParteEconomicaOffertaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.ParteEconomicaOfferta
|
||||||
|
fields = ('revisione', 'dettaglio_economico_offerto')
|
||||||
|
|
||||||
|
|
||||||
|
class TipologiaOffertaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.TipologiaOfferta
|
||||||
|
fields = ('descrizione')
|
||||||
|
|
||||||
|
|
||||||
|
class ModalitaLavoroSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.ModalitaLavoro
|
||||||
|
fields = ('unita_misura_std', 'descrizione')
|
||||||
|
|
||||||
|
|
||||||
|
class DettaglioFatturabileSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.AtomoFatturabile
|
||||||
|
fields = ('offerta_riferimento', 'modalita_lavoro',
|
||||||
|
'riferimento_oggetto_fattura')#, 'flusso_di_ricavi')
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
|
||||||
|
from django.dispatch import receiver
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
# @receiver(pre_save, sender=models.ExampleModel)
|
||||||
|
# def example_callback(sender, instance, created=False, **kwargs):
|
||||||
|
# if kwargs['raw'] or created:
|
||||||
|
# return
|
||||||
|
|
@ -0,0 +1,480 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
sqldes2django.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
sqldes2django.py write [--tgt-dir=<tgt-dir>] [--unmanaged=<unmanaged-name>] [--models-file=<models-file>] [--serializers-file=<serializers-file>] [--views-file=<views-file>] [--urls-file=<urls-file>] [--admin-file=<admin-file>] [--resources-file=<resources-file>] [--no-format] [--xml=<xml-path>]
|
||||||
|
sqldes2django.py (-h | --help)
|
||||||
|
sqldes2django.py (--version)
|
||||||
|
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--tgt-dir=<tgt-dir> Directory di output [default: .].
|
||||||
|
--xml=<xml-path> Directory di output [default: modello_database.xml].
|
||||||
|
--models-file=<models-file> Nome del file dei modelli [default: <tgt-dir>/models.py].
|
||||||
|
--serializers-file=<serializers-file> Nome del file dei serializers [default: <tgt-dir>/serializers.py].
|
||||||
|
--views-file=<views-file> Nome del file delle views [default: <tgt-dir>/views.py].
|
||||||
|
--urls-file=<urls-file> Nome del file degli url [default: <tgt-dir>/urls.py].
|
||||||
|
--admin-file=<admin-file> Nome del file dell'admin [default: <tgt-dir>/admin.py].
|
||||||
|
--resources-file=<resources-file> Nome del file delle resources [default: <tgt-dir>/resources.py].
|
||||||
|
--no-format Non formattare l'output con autopep8.
|
||||||
|
--unmanaged=<unmanaged-name> Crea modelli unmanaged (senza migrazioni): supporta pk e fk multiple, setta database=<unmanaged-name>
|
||||||
|
--version Show version.
|
||||||
|
-h --help Show this screen.
|
||||||
|
"""
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
from collections import defaultdict
|
||||||
|
import lark
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import autopep8
|
||||||
|
import re
|
||||||
|
from docopt import docopt
|
||||||
|
"""
|
||||||
|
Created on Thu Feb 28 15:28:17 2019
|
||||||
|
|
||||||
|
@author: guido
|
||||||
|
"""
|
||||||
|
# TODO: Validare nomi per uso con Django
|
||||||
|
# TODO: Trattare le chiavi primarie manuali e le chiavi primarie composite
|
||||||
|
# TODO: Aggiungere tipi mancanti alla mappa
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
arguments = docopt(__doc__, version='Sqldes2django 0.1')
|
||||||
|
for arg in arguments:
|
||||||
|
if isinstance(arguments[arg], str):
|
||||||
|
arguments[arg] = arguments[arg].replace("<tgt-dir>",
|
||||||
|
arguments['--tgt-dir'])
|
||||||
|
|
||||||
|
tgtdir = arguments['--tgt-dir']
|
||||||
|
|
||||||
|
unmanaged = False
|
||||||
|
if arguments['--unmanaged']:
|
||||||
|
unmanaged = True
|
||||||
|
nome_db = arguments['--unmanaged']
|
||||||
|
print(arguments)
|
||||||
|
|
||||||
|
tgtfil = {x: arguments["--" + x + "-file"]
|
||||||
|
for x in ('models', 'admin', 'serializers', 'views', 'urls', 'resources',)}
|
||||||
|
|
||||||
|
sql_type_grammar = lark.Lark(r"""
|
||||||
|
%import common.ESCAPED_STRING
|
||||||
|
%import common.SIGNED_NUMBER
|
||||||
|
%import common.WS
|
||||||
|
%import common.CNAME
|
||||||
|
%ignore WS
|
||||||
|
|
||||||
|
tipo: costruttore | costruttore "(" [arg ("," arg)* ] ")"
|
||||||
|
?costruttore: CNAME
|
||||||
|
?arg: val | keyword_argument
|
||||||
|
val: SIGNED_NUMBER | ESCAPED_STRING
|
||||||
|
keyword_argument: CNAME "=" val""",
|
||||||
|
parser="lalr",
|
||||||
|
start="tipo") # TODO: leggere lo standard vero sql
|
||||||
|
|
||||||
|
def tutti_parametri(stringa_orig):
|
||||||
|
params = sql_type_grammar.parse(stringa_orig)
|
||||||
|
parametri = params.children[1:]
|
||||||
|
posizionali = []
|
||||||
|
keyword_args = {}
|
||||||
|
trovato_kw = False
|
||||||
|
for x in parametri:
|
||||||
|
if x.data == "val":
|
||||||
|
assert not trovato_kw, f"Argomento posizionale non può seguire keyword argument in '{stringa_orig}'"
|
||||||
|
posizionali.append(x.children[0].value)
|
||||||
|
if x.data == "keyword_argument":
|
||||||
|
trovato_kw = True
|
||||||
|
keyword_args[x.children[0].value] = x.children[1].children[0].value
|
||||||
|
return {"costruttore": params.children[0].value, "posizionali": posizionali, "keyword_args": keyword_args, "stringa": stringa_orig}
|
||||||
|
|
||||||
|
def get_tipo_mappato(parsato):
|
||||||
|
tipodato = parsato['costruttore'].upper()
|
||||||
|
return mappa_tipi[tipodato]
|
||||||
|
|
||||||
|
def is_parametrico(parsato):
|
||||||
|
return len(parsato["posizionali"]) > 0 or len(parsato["keyword_args"]) > 0
|
||||||
|
|
||||||
|
def get_parametro(parametri, positional=None, keyword=None):
|
||||||
|
if keyword is not None and keyword in parametri['keyword_args']:
|
||||||
|
val = parametri['keyword_args'][keyword]
|
||||||
|
del parametri['keyword_args'][keyword]
|
||||||
|
return val
|
||||||
|
if positional is not None:
|
||||||
|
try:
|
||||||
|
return parametri['posizionali'][positional]
|
||||||
|
except IndexError as e:
|
||||||
|
raise Exception(
|
||||||
|
f"Richiesti almeno {positional + 1} argomenti posizionali, trovati {len(parametri['posizionali'])} in {parametri['stringa']}") from e
|
||||||
|
raise Exception("Occorre specificare positional o keyword")
|
||||||
|
|
||||||
|
fine_prefisso_RE = re.compile(r'# +-+ +FINE PREFISSO TEMPLATE +-+')
|
||||||
|
def leggi_prefisso(nome_modulo):
|
||||||
|
tmpl_prefisso = []
|
||||||
|
with open(tgtfil[nome_modulo]) as fp:
|
||||||
|
for l in fp.readlines():
|
||||||
|
tmpl_prefisso.append(l)
|
||||||
|
if fine_prefisso_RE.search(l):
|
||||||
|
break
|
||||||
|
return ''.join(tmpl_prefisso)
|
||||||
|
|
||||||
|
|
||||||
|
multifkimport = "from compositefk.fields import CompositeForeignKey # Installa django-composite-foreignkey"
|
||||||
|
multipkmodel = """
|
||||||
|
class MultiPkModel(models.Model):
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
raise NotImplementedError("È un MultiPkModel")
|
||||||
|
# TODO
|
||||||
|
def __hash__(self):
|
||||||
|
attributi_chiave_multipla = self._meta.unique_together[0]
|
||||||
|
parti = []
|
||||||
|
for x in attributi_chiave_multipla:
|
||||||
|
try:
|
||||||
|
parte = getattr(self, x + '_id') # se oltre che parte di primary è foreign, non vogliamo fetchare tutto l'oggetto
|
||||||
|
except AttributeError:
|
||||||
|
parte = getattr(self, x)
|
||||||
|
parti.append(parte)
|
||||||
|
return hash(tuple(parti))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class MultiPkQuerySet(models.QuerySet):
|
||||||
|
def get(self, *args, **kwargs):
|
||||||
|
attributi_chiave_multipla = self.model._meta.unique_together[0]
|
||||||
|
if any(key not in kwargs for key in attributi_chiave_multipla):
|
||||||
|
raise Exception("È un MultiPkModel. Fornire anche i seguenti keywoard arguments: " + str(set(attributi_chiave_multipla) - set(kwargs.keys())))
|
||||||
|
filtro = {k : kwargs[k] for k in attributi_chiave_multipla}
|
||||||
|
risultati = list(self.filter(**filtro).all())
|
||||||
|
if len(risultati) == 1:
|
||||||
|
return risultati[0]
|
||||||
|
elif len(risultati) == 0:
|
||||||
|
raise self.model.DoesNotExist(self.model._meta.object_name + " with " + str(filtro))
|
||||||
|
else:
|
||||||
|
raise Exception("MultiPkQuerySet.get: righe multiple con " + str(filtro))
|
||||||
|
|
||||||
|
|
||||||
|
class MultiPkManager(models.Manager):
|
||||||
|
def get_queryset(self):
|
||||||
|
return MultiPkQuerySet(self.model, using=self._db)
|
||||||
|
"""
|
||||||
|
|
||||||
|
tmpl_models_prefisso = leggi_prefisso('models')
|
||||||
|
tmpl_models = '''
|
||||||
|
{multifkimport}
|
||||||
|
{multipkmodel}
|
||||||
|
|
||||||
|
{corpo}
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_model_class = '''
|
||||||
|
class {nometab}({classe_model}):{db_name}
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '{nometab_lower}'
|
||||||
|
verbose_name_plural = '{nometab_lower}'
|
||||||
|
{is_managed}{unique_together}
|
||||||
|
def __str__(self):
|
||||||
|
return f"{nometab} ({chiavi})"
|
||||||
|
|
||||||
|
{righetxt}
|
||||||
|
'''
|
||||||
|
tmpl_riga = '''{nomeriga} = models.{tiporiga}({opzioniriga})'''
|
||||||
|
tmpl_chiave_fk = '''{nomeriga} = models.ForeignKey('{altratab}', {opzioniriga})'''
|
||||||
|
|
||||||
|
tmpl_admin_prefisso = leggi_prefisso('admin')
|
||||||
|
tmpl_admin = '''
|
||||||
|
{corpo}
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_admin_class = '''
|
||||||
|
@admin.register(models.{nometab})
|
||||||
|
class {nometab}Admin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.{nometab}Resource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
tmpl_serializers_prefisso = leggi_prefisso('serializers')
|
||||||
|
tmpl_serializers = '''
|
||||||
|
{corpo}
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_serializer_class = '''
|
||||||
|
class {nometab}Serializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.{nometab}
|
||||||
|
fields = ('{campi}')
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_views_prefisso = leggi_prefisso('views')
|
||||||
|
tmpl_views = '''
|
||||||
|
{corpo}
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_view_class = '''
|
||||||
|
class {nometab}_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.{nometab}.objects.all()
|
||||||
|
serializer_class = serializers.{nometab}Serializer
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_urls_prefisso = leggi_prefisso('urls')
|
||||||
|
tmpl_urls = '''
|
||||||
|
{urls}
|
||||||
|
|
||||||
|
urlpatterns += router.urls
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_url_route = '''router.register(r'{nometaburl}', views.{nometab}_View)'''
|
||||||
|
tmpl_resources_prefisso = leggi_prefisso('resources')
|
||||||
|
tmpl_resources = '''
|
||||||
|
{corpo}
|
||||||
|
'''
|
||||||
|
|
||||||
|
tmpl_resource_class = '''
|
||||||
|
class {nometab}Resource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.{nometab}
|
||||||
|
'''
|
||||||
|
|
||||||
|
mappa_tipi = {
|
||||||
|
'INTEGER': 'IntegerField',
|
||||||
|
'INT': 'IntegerField',
|
||||||
|
'NUMERIC': 'DecimalField',
|
||||||
|
'DECIMAL': 'DecimalField',
|
||||||
|
'SMALLINT': 'SmallIntegerField',
|
||||||
|
'FLOAT': 'FloatField',
|
||||||
|
'TEXT': 'TextField',
|
||||||
|
'VARCHAR': 'CharField',
|
||||||
|
'CHAR': 'CharField',
|
||||||
|
'MEDIUMTEXT': 'TextField',
|
||||||
|
'DATE': 'DateField',
|
||||||
|
'TIME': 'TimeField',
|
||||||
|
'DATETIME': 'DateTimeField',
|
||||||
|
'TIMESTAMP': 'DateTimeField',
|
||||||
|
'DECIMAL': 'DecimalField',
|
||||||
|
'BIT': 'BooleanField',
|
||||||
|
'BINARY': 'BooleanField',
|
||||||
|
'JSONB': 'JSONField'
|
||||||
|
}
|
||||||
|
|
||||||
|
tabelle = list(ET.ElementTree(file=arguments['--xml'])
|
||||||
|
.findall('.//table'))
|
||||||
|
tabelle2 = (ET.ElementTree(file=arguments['--xml'])
|
||||||
|
.findall('.//table'))
|
||||||
|
|
||||||
|
models = []
|
||||||
|
admin = []
|
||||||
|
serializers = []
|
||||||
|
views = []
|
||||||
|
urls = []
|
||||||
|
resources = []
|
||||||
|
nomi_tabelle = []
|
||||||
|
any_multiple_fk = False
|
||||||
|
any_multiple_pk = False
|
||||||
|
|
||||||
|
tabelle_multi_pk = set()
|
||||||
|
for t in tabelle2:
|
||||||
|
nome = t.get('name')
|
||||||
|
chiave = t.findall('.//key/part')
|
||||||
|
if len(chiave) > 1:
|
||||||
|
tabelle_multi_pk.add(nome)
|
||||||
|
any_multiple_pk = True
|
||||||
|
|
||||||
|
renames = {}
|
||||||
|
is_fk_and_pk = set()
|
||||||
|
for t in tabelle:
|
||||||
|
righe = t.findall('.//row')
|
||||||
|
n_tab = t.get('name')
|
||||||
|
chiave = t.findall('.//key/part')
|
||||||
|
|
||||||
|
# prima decido i rename
|
||||||
|
for r in righe:
|
||||||
|
fk = r.find('relation')
|
||||||
|
n = r.get('name')
|
||||||
|
is_simple_fk = fk is not None and fk.get(
|
||||||
|
'table') not in tabelle_multi_pk
|
||||||
|
if is_simple_fk and unmanaged:
|
||||||
|
# renames[(n_tab, n)] = 'fk_' + n # poi ci pensiamo
|
||||||
|
renames[(n_tab, n)] = n
|
||||||
|
else:
|
||||||
|
renames[(n_tab, n)] = n
|
||||||
|
if is_simple_fk and n in [x.text for x in chiave]:
|
||||||
|
is_fk_and_pk.add((n_tab, n))
|
||||||
|
|
||||||
|
for t in tabelle:
|
||||||
|
rec_tabella = dict()
|
||||||
|
rec_serializers = dict()
|
||||||
|
rec_tabella['nometab'] = t.get('name')
|
||||||
|
rec_tabella['nometab_lower'] = rec_tabella['nometab'].lower()
|
||||||
|
n_tab = t.get('name')
|
||||||
|
rec_tabella['classe_model'] = 'models.Model'
|
||||||
|
nomi_tabelle.append(rec_tabella['nometab'])
|
||||||
|
rec_serializers['nometab'] = t.get('name')
|
||||||
|
rec_tabella['is_managed'] = ''
|
||||||
|
rec_tabella['db_name'] = ''
|
||||||
|
rec_tabella['unique_together'] = ''
|
||||||
|
if unmanaged:
|
||||||
|
rec_tabella['is_managed'] = f'managed = False\n db_table = "{rec_tabella["nometab"]}"\n '
|
||||||
|
rec_tabella['db_name'] = f'\n database = "{nome_db}"'
|
||||||
|
righe = t.findall('.//row')
|
||||||
|
chiave = t.findall('.//key/part')
|
||||||
|
pk_singola = None
|
||||||
|
righetxt = []
|
||||||
|
if len(chiave) == 1:
|
||||||
|
if not unmanaged:
|
||||||
|
righe = [r for r in righe if r.get('name') != chiave[0].text]
|
||||||
|
pk_singola = chiave[0].text
|
||||||
|
if unmanaged:
|
||||||
|
rec_tabella['chiavi'] = renames[(n_tab, pk_singola)] + ': {self.' + (renames[(n_tab, pk_singola)]+'_id' if (
|
||||||
|
n_tab, pk_singola) in is_fk_and_pk else renames[(n_tab, pk_singola)]) + '}'
|
||||||
|
else:
|
||||||
|
rec_tabella['chiavi'] = "id: {self.id}"
|
||||||
|
elif len(chiave) > 1:
|
||||||
|
multi_pk = True
|
||||||
|
rec_tabella['classe_model'] = "MultiPkModel"
|
||||||
|
nomi = ", ".join(f"'{renames[(n_tab, x.text)]}'" for x in chiave)
|
||||||
|
rec_tabella['unique_together'] = f"unique_together=[({nomi})]"
|
||||||
|
if unmanaged:
|
||||||
|
rec_tabella['chiavi'] = ", ".join(renames[(n_tab, x.text)] + ': {self.' + (renames[(n_tab, x.text)]+'_id' if (
|
||||||
|
n_tab, x.text) in is_fk_and_pk else renames[(n_tab, x.text)]) + '}' for x in chiave)
|
||||||
|
else:
|
||||||
|
rec_tabella['chiavi'] = "non puoi fare una pk multipla in django"
|
||||||
|
righetxt.append('objects = MultiPkManager()')
|
||||||
|
righeserializerstxt = []
|
||||||
|
# TODO: implementare eventuali tipi multiparametro e con spazi
|
||||||
|
|
||||||
|
datoparametricoRE = re.compile(
|
||||||
|
r'(?P<tipo>[^(]*)\((?P<lunghezza>[^)]*)\)')
|
||||||
|
fk_composite = defaultdict(list)
|
||||||
|
is_first = True
|
||||||
|
for r in righe:
|
||||||
|
rec_riga = dict()
|
||||||
|
rec_chiave_fk = dict()
|
||||||
|
rec_chiave_fk['opzioniriga'] = dict()
|
||||||
|
rec_riga['opzioniriga'] = dict()
|
||||||
|
comm = r.find('comment')
|
||||||
|
if comm is not None and 'django_ignore' in comm.text:
|
||||||
|
continue
|
||||||
|
riga_nullable = r.get('null', "1") == "1"
|
||||||
|
if is_first and unmanaged and rec_tabella['nometab'] in tabelle_multi_pk:
|
||||||
|
if not riga_nullable:
|
||||||
|
# il primo field diventa chiave primaria fittizia. Attenzione a non usarlo davvero!
|
||||||
|
righetxt.append("")
|
||||||
|
righetxt.append(
|
||||||
|
"# chiave primaria fittizia. Attenzione a non usarla! Fa fede unique_together.")
|
||||||
|
rec_riga['opzioniriga']['primary_key'] = True
|
||||||
|
rec_chiave_fk['opzioniriga']['primary_key'] = True
|
||||||
|
is_first = False
|
||||||
|
fk = r.find('relation')
|
||||||
|
is_simple_fk = fk is not None and fk.get(
|
||||||
|
'table') not in tabelle_multi_pk
|
||||||
|
if is_simple_fk:
|
||||||
|
rec_chiave_fk['nomeriga'] = renames[(n_tab, r.get('name'))]
|
||||||
|
n_altra_tab = rec_chiave_fk['altratab'] = fk.get('table')
|
||||||
|
rec_chiave_fk['altracol'] = renames[(
|
||||||
|
n_altra_tab, fk.get('row'))]
|
||||||
|
rec_chiave_fk['opzioniriga']['on_delete'] = 'models.CASCADE'
|
||||||
|
rec_chiave_fk['opzioniriga']['null'] = riga_nullable
|
||||||
|
rec_chiave_fk['opzioniriga']['blank'] = riga_nullable
|
||||||
|
if unmanaged:
|
||||||
|
rec_chiave_fk['opzioniriga']['to_field'] = f"'{rec_chiave_fk['altracol']}'"
|
||||||
|
rec_chiave_fk['opzioniriga']['db_column'] = f"'{r.get('name')}'"
|
||||||
|
rec_chiave_fk['opzioniriga']['related_name'] = (
|
||||||
|
f""""{rec_tabella['nometab']}_da_{rec_chiave_fk['altratab']}_{rec_chiave_fk['nomeriga']}" """.strip())
|
||||||
|
if not rec_chiave_fk['opzioniriga']['null']:
|
||||||
|
del rec_chiave_fk['opzioniriga']['null']
|
||||||
|
del rec_chiave_fk['opzioniriga']['blank']
|
||||||
|
rec_chiave_fk['opzioniriga'] = ', '.join(
|
||||||
|
f'{k}={v}' for k, v in rec_chiave_fk['opzioniriga'].items())
|
||||||
|
righetxt.append(tmpl_chiave_fk.format(**rec_chiave_fk))
|
||||||
|
else:
|
||||||
|
rec_riga['opzioniriga']['null'] = riga_nullable
|
||||||
|
rec_riga['opzioniriga']['blank'] = riga_nullable
|
||||||
|
if fk is not None: # è composita
|
||||||
|
tab_target = fk.get('table')
|
||||||
|
fk_composite[tab_target].append({"campo": r.get('name'),
|
||||||
|
"campo_tgt": renames[(tab_target, fk.get("row"))],
|
||||||
|
"nullabile": rec_riga['opzioniriga']['null']})
|
||||||
|
rec_riga['nomeriga'] = r.get('name')
|
||||||
|
orig = tipodato = str(r.find('datatype').text)
|
||||||
|
parsato = tutti_parametri(tipodato)
|
||||||
|
#parametrico = datoparametricoRE.match(tipodato)
|
||||||
|
parametrico = is_parametrico(parsato)
|
||||||
|
# parametrico = tipo
|
||||||
|
rec_riga['tiporiga'] = get_tipo_mappato(parsato)
|
||||||
|
if parametrico:
|
||||||
|
if rec_riga['tiporiga'] in ('CharField',):
|
||||||
|
lunghezza = get_parametro(
|
||||||
|
parsato, positional=0, keyword="max_length")
|
||||||
|
rec_riga['opzioniriga']['max_length'] = int(lunghezza)
|
||||||
|
elif rec_riga['tiporiga'] == "DecimalField":
|
||||||
|
max_digits = get_parametro(
|
||||||
|
parsato, positional=0, keyword="max_digits")
|
||||||
|
decimal_places = get_parametro(
|
||||||
|
parsato, positional=1, keyword="decimal_places")
|
||||||
|
rec_riga['opzioniriga']['max_digits'] = int(max_digits)
|
||||||
|
rec_riga['opzioniriga']['decimal_places'] = int(
|
||||||
|
decimal_places)
|
||||||
|
arg_avanzati = parsato["keyword_args"]
|
||||||
|
for x in arg_avanzati:
|
||||||
|
rec_riga['opzioniriga'][x] = arg_avanzati[x]
|
||||||
|
elif unmanaged:
|
||||||
|
if tipodato in ('CHAR', 'VARCHAR'):
|
||||||
|
rec_riga['opzioniriga']['max_length'] = 1000000
|
||||||
|
if r.get('name') == pk_singola:
|
||||||
|
# chiave singola
|
||||||
|
rec_riga['opzioniriga']['primary_key'] = True
|
||||||
|
if not rec_riga['opzioniriga']['null']:
|
||||||
|
del rec_riga['opzioniriga']['null']
|
||||||
|
del rec_riga['opzioniriga']['blank']
|
||||||
|
if rec_riga['tiporiga'] in ('CharField', 'TextField') and 'blank' in rec_riga['opzioniriga']:
|
||||||
|
del rec_riga['opzioniriga']['blank']
|
||||||
|
rec_riga['opzioniriga'] = ','.join(
|
||||||
|
f'{k}={v}' for k, v in rec_riga['opzioniriga'].items())
|
||||||
|
righetxt.append(tmpl_riga.format(**rec_riga))
|
||||||
|
rec_riga_serializers = dict()
|
||||||
|
rec_riga_serializers['nomecampo'] = r.get('name')
|
||||||
|
righeserializerstxt.append(rec_riga_serializers['nomecampo'])
|
||||||
|
for tgt in fk_composite:
|
||||||
|
nullabile = any(x['nullabile'] for x in fk_composite[tgt])
|
||||||
|
fk_fields = ",\n ".join(
|
||||||
|
f"'{x['campo_tgt']}': '{x['campo']}'" for x in fk_composite[tgt])
|
||||||
|
asd = f"fk_{tgt} = CompositeForeignKey('{tgt}', on_delete=models.CASCADE, null={nullabile}, to_fields=" + "{\n " + fk_fields + "\n })"
|
||||||
|
righetxt.append(asd)
|
||||||
|
any_multiple_fk = True
|
||||||
|
rec_tabella['righetxt'] = '\n '.join(righetxt)
|
||||||
|
rec_serializers['campi'] = "','".join(righeserializerstxt)
|
||||||
|
models.append(tmpl_model_class.format(**rec_tabella))
|
||||||
|
admin.append(tmpl_admin_class.format(**rec_tabella))
|
||||||
|
serializers.append(tmpl_serializer_class.format(**rec_serializers))
|
||||||
|
views.append(tmpl_view_class.format(nometab=rec_tabella['nometab']))
|
||||||
|
urls.append(tmpl_url_route.format(
|
||||||
|
nometaburl=rec_tabella['nometab'].lower(), nometab=rec_tabella['nometab']))
|
||||||
|
resources.append(tmpl_resource_class.format(
|
||||||
|
nometab=rec_tabella['nometab']))
|
||||||
|
|
||||||
|
models = tmpl_models_prefisso + tmpl_models.format(corpo='\n'.join(models),
|
||||||
|
multipkmodel=multipkmodel if any_multiple_pk else "",
|
||||||
|
multifkimport=multifkimport if any_multiple_fk else "")
|
||||||
|
admin = tmpl_admin_prefisso + tmpl_admin.format(corpo='\n'.join(admin))
|
||||||
|
serializers = tmpl_serializers_prefisso + tmpl_serializers.format(corpo='\n'.join(serializers))
|
||||||
|
views = tmpl_views_prefisso + tmpl_views.format(corpo='\n'.join(views))
|
||||||
|
urls = tmpl_urls_prefisso + tmpl_urls.format(urls='\n'.join(urls))
|
||||||
|
resources = tmpl_resources_prefisso + tmpl_resources.format(corpo='\n'.join(resources))
|
||||||
|
|
||||||
|
for tgt_name, tgt_path in tgtfil.items():
|
||||||
|
with open(tgt_path, 'w') as f:
|
||||||
|
print(
|
||||||
|
f"Writing {tgt_name} to {tgt_path}, autopep8: {not arguments['--no-format']}...")
|
||||||
|
if arguments['--no-format']:
|
||||||
|
f.write(globals()[tgt_name])
|
||||||
|
else:
|
||||||
|
f.write(autopep8.fix_code(globals()[tgt_name]))
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
from rest_framework import routers
|
||||||
|
from django.urls import include, path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
app_name = "offerte_app"
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
# path('', views.index, name='index'),
|
||||||
|
]
|
||||||
|
router = routers.DefaultRouter()
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
router.register(r'destinatarioofferta', views.DestinatarioOfferta_View)
|
||||||
|
router.register(r'gruppoofferte', views.GruppoOfferte_View)
|
||||||
|
router.register(r'offerta', views.Offerta_View)
|
||||||
|
router.register(r'agenteofferta', views.AgenteOfferta_View)
|
||||||
|
router.register(r'parteeconomicaofferta', views.ParteEconomicaOfferta_View)
|
||||||
|
router.register(r'tipologiaofferta', views.TipologiaOfferta_View)
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
|
from django.shortcuts import render, redirect
|
||||||
|
from django.http import JsonResponse, HttpResponse
|
||||||
|
from django.utils.http import url_has_allowed_host_and_scheme
|
||||||
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
|
from django.contrib.auth import authenticate, login, logout
|
||||||
|
from rest_framework import viewsets
|
||||||
|
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
|
||||||
|
from rest_framework.permissions import DjangoModelPermissions, IsAuthenticated
|
||||||
|
|
||||||
|
from django_auto_prefetching import AutoPrefetchViewSetMixin
|
||||||
|
from . import models
|
||||||
|
from . import serializers
|
||||||
|
|
||||||
|
# def index(request):
|
||||||
|
# return HttpResponse("Hello, %s!" % (request.user.username if request.user.is_authenticated else 'World'))
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
class DestinatarioOfferta_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.DestinatarioOfferta.objects.all()
|
||||||
|
serializer_class = serializers.DestinatarioOffertaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class GruppoOfferte_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.GruppoOfferte.objects.all()
|
||||||
|
serializer_class = serializers.GruppoOfferteSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class Offerta_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.Offerta.objects.all()
|
||||||
|
serializer_class = serializers.OffertaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class AgenteOfferta_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.AgenteOfferta.objects.all()
|
||||||
|
serializer_class = serializers.AgenteOffertaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class ParteEconomicaOfferta_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.ParteEconomicaOfferta.objects.all()
|
||||||
|
serializer_class = serializers.ParteEconomicaOffertaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class TipologiaOfferta_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.TipologiaOfferta.objects.all()
|
||||||
|
serializer_class = serializers.TipologiaOffertaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -38,51 +38,6 @@ from . import resources
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.DestinatarioOfferta)
|
|
||||||
class DestinatarioOffertaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.DestinatarioOffertaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.GruppoOfferte)
|
|
||||||
class GruppoOfferteAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.GruppoOfferteResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Offerta)
|
|
||||||
class OffertaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.OffertaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.AgenteOfferta)
|
|
||||||
class AgenteOffertaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.AgenteOffertaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.ParteEconomicaOfferta)
|
|
||||||
class ParteEconomicaOffertaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.ParteEconomicaOffertaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Progetto)
|
@admin.register(models.Progetto)
|
||||||
class ProgettoAdmin(ImportExportModelAdmin):
|
class ProgettoAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.ProgettoResource
|
# resource = resources.ProgettoResource
|
||||||
|
|
@ -101,15 +56,6 @@ class ValorizzazioneEconomicaProgettoAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.TipologiaOfferta)
|
|
||||||
class TipologiaOffertaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.TipologiaOffertaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Repository)
|
@admin.register(models.Repository)
|
||||||
class RepositoryAdmin(ImportExportModelAdmin):
|
class RepositoryAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.RepositoryResource
|
# resource = resources.RepositoryResource
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-12 22:20
|
# Generated by Django 4.1.7 on 2023-05-14 13:48
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -8,30 +8,11 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
("offerte_app", "0001_initial"),
|
||||||
("fattura_elettronica_app", "0001_initial"),
|
("fattura_elettronica_app", "0001_initial"),
|
||||||
("contatti_app", "0001_initial"),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
|
||||||
name="AgenteOfferta",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("codice", models.IntegerField(blank=True, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "agenteofferta",
|
|
||||||
"verbose_name_plural": "agenteofferta",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="ArchivioFiles",
|
name="ArchivioFiles",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -109,25 +90,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "attivitadelprogetto",
|
"verbose_name_plural": "attivitadelprogetto",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCModelloDiBusiness",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("descrizione", models.CharField(max_length=4096, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcmodellodibusiness",
|
|
||||||
"verbose_name_plural": "bmcmodellodibusiness",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="CanaleDiDistribuzione",
|
name="CanaleDiDistribuzione",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -147,190 +109,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "canaledidistribuzione",
|
"verbose_name_plural": "canaledidistribuzione",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="DestinatarioOfferta",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "destinatarioofferta",
|
|
||||||
"verbose_name_plural": "destinatarioofferta",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="DettaglioFatturabile",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"dati_estesi",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DettaglioFatturabile_da_DatiEstesiDettaglioFatturabile_dati_estesi",
|
|
||||||
to="fattura_elettronica_app.datiestesidettagliofatturabile",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "dettagliofatturabile",
|
|
||||||
"verbose_name_plural": "dettagliofatturabile",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="GruppoOfferte",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("anno_1a_rev", models.IntegerField(blank=True, null=True)),
|
|
||||||
("numero", models.IntegerField(blank=True, null=True)),
|
|
||||||
("descrizione", models.CharField(max_length=4096, null=True)),
|
|
||||||
(
|
|
||||||
"agente",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="GruppoOfferte_da_AgenteOfferta_agente",
|
|
||||||
to="sangue_app.agenteofferta",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"destinatario",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="GruppoOfferte_da_DestinatarioOfferta_destinatario",
|
|
||||||
to="sangue_app.destinatarioofferta",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "gruppoofferte",
|
|
||||||
"verbose_name_plural": "gruppoofferte",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Indirizzo",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("duf", models.CharField(max_length=256, null=True)),
|
|
||||||
("civico", models.CharField(max_length=256, null=True)),
|
|
||||||
("altro", models.CharField(max_length=2048, null=True)),
|
|
||||||
("cap_id", models.CharField(max_length=5, null=True)),
|
|
||||||
("comune_id", models.IntegerField(blank=True, null=True)),
|
|
||||||
("dug_id", models.CharField(max_length=40, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "indirizzo",
|
|
||||||
"verbose_name_plural": "indirizzo",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Offerta",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("data", models.DateField(blank=True, null=True)),
|
|
||||||
("revisione", models.IntegerField(blank=True, null=True)),
|
|
||||||
("documento", models.CharField(max_length=128, null=True)),
|
|
||||||
("codice_offerta", models.IntegerField(blank=True, null=True)),
|
|
||||||
("accettazione", models.DateField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"gruppo",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="Offerta_da_GruppoOfferte_gruppo",
|
|
||||||
to="sangue_app.gruppoofferte",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "offerta",
|
|
||||||
"verbose_name_plural": "offerta",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="PersonaFisica",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("titolo", models.CharField(max_length=10, null=True)),
|
|
||||||
("nome", models.CharField(max_length=60, null=True)),
|
|
||||||
("cognome", models.CharField(max_length=60, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "personafisica",
|
|
||||||
"verbose_name_plural": "personafisica",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="PersonaGiuridica",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("denominazione", models.CharField(max_length=80, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "personagiuridica",
|
|
||||||
"verbose_name_plural": "personagiuridica",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="Progetto",
|
name="Progetto",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -524,25 +302,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "tipoattivita",
|
"verbose_name_plural": "tipoattivita",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="TipologiaOfferta",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("descrizione", models.CharField(max_length=1024, null=True)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "tipologiaofferta",
|
|
||||||
"verbose_name_plural": "tipologiaofferta",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="TipoRelazione",
|
name="TipoRelazione",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -582,7 +341,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="ValorizzazioneEconomicaProgetto_da_DettaglioFatturabile_dato_economico",
|
related_name="ValorizzazioneEconomicaProgetto_da_DettaglioFatturabile_dato_economico",
|
||||||
to="sangue_app.dettagliofatturabile",
|
to="offerte_app.atomofatturabile",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|
@ -630,7 +389,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="ValorizzazioneEconomicaAttivita_da_DettaglioFatturabile_dato_economico",
|
related_name="ValorizzazioneEconomicaAttivita_da_DettaglioFatturabile_dato_economico",
|
||||||
to="sangue_app.dettagliofatturabile",
|
to="offerte_app.atomofatturabile",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -715,46 +474,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "valoredellattivita",
|
"verbose_name_plural": "valoredellattivita",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="SoggettoFiscale",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("indirizzo_pec", models.IntegerField(blank=True, null=True)),
|
|
||||||
("regime_fiscale", models.IntegerField(blank=True, null=True)),
|
|
||||||
("codice_fiscale", models.IntegerField(blank=True, null=True)),
|
|
||||||
("partita_iva", models.IntegerField(blank=True, null=True)),
|
|
||||||
("codice_sdi", models.IntegerField(blank=True, null=True)),
|
|
||||||
("sede_legale", models.IntegerField()),
|
|
||||||
("stabile_organizzazione", models.IntegerField(blank=True, null=True)),
|
|
||||||
("cod_eori", models.CharField(max_length=17, null=True)),
|
|
||||||
("nazione", models.IntegerField(blank=True, null=True)),
|
|
||||||
("numero_licenza_guida", models.CharField(max_length=20, null=True)),
|
|
||||||
("iscrizione_rea", models.IntegerField(blank=True, null=True)),
|
|
||||||
("rimosso", models.BooleanField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"revisione_principale",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="SoggettoFiscale_da_SoggettoFiscale_revisione_principale",
|
|
||||||
to="sangue_app.soggettofiscale",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "soggettofiscale",
|
|
||||||
"verbose_name_plural": "soggettofiscale",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="SettoreAzienda",
|
name="SettoreAzienda",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -774,7 +493,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="SettoreAzienda_da_SoggettoFiscale_azienda",
|
related_name="SettoreAzienda_da_SoggettoFiscale_azienda",
|
||||||
to="sangue_app.soggettofiscale",
|
to="fattura_elettronica_app.soggettofiscale",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|
@ -803,35 +522,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "settoreazienda",
|
"verbose_name_plural": "settoreazienda",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="Sede",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("is_legale", models.BooleanField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"inquilino",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="Sede_da_SoggettoFiscale_inquilino",
|
|
||||||
to="sangue_app.soggettofiscale",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "sede",
|
|
||||||
"verbose_name_plural": "sede",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="RisorsaChiave",
|
name="RisorsaChiave",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -880,7 +570,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="RelazioneConAzienda_da_SoggettoFiscale_azienda",
|
related_name="RelazioneConAzienda_da_SoggettoFiscale_azienda",
|
||||||
to="sangue_app.soggettofiscale",
|
to="fattura_elettronica_app.soggettofiscale",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|
@ -909,115 +599,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "relazioneconazienda",
|
"verbose_name_plural": "relazioneconazienda",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="ParteEconomicaOfferta",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"dettaglio_economico_offerto",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="ParteEconomicaOfferta_da_DettaglioFatturabile_dettaglio_economico_offerto",
|
|
||||||
to="sangue_app.dettagliofatturabile",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"revisione",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="ParteEconomicaOfferta_da_Offerta_revisione",
|
|
||||||
to="sangue_app.offerta",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "parteeconomicaofferta",
|
|
||||||
"verbose_name_plural": "parteeconomicaofferta",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="ModalitaLavoro",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("descrizione", models.IntegerField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"unita_misura_std",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="ModalitaLavoro_da_UnitaMisura_unita_misura_std",
|
|
||||||
to="fattura_elettronica_app.unitamisura",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "modalitalavoro",
|
|
||||||
"verbose_name_plural": "modalitalavoro",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="IscrizioneAlboProfessionale",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("albo_professionale", models.IntegerField(blank=True, null=True)),
|
|
||||||
("numero_iscrizione_albo", models.CharField(max_length=60, null=True)),
|
|
||||||
("data_iscrizione_albo", models.DateField(blank=True, null=True)),
|
|
||||||
(
|
|
||||||
"persona_fisica",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="IscrizioneAlboProfessionale_da_PersonaFisica_persona_fisica",
|
|
||||||
to="sangue_app.personafisica",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "iscrizionealboprofessionale",
|
|
||||||
"verbose_name_plural": "iscrizionealboprofessionale",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="gruppoofferte",
|
|
||||||
name="tipo",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="GruppoOfferte_da_TipologiaOfferta_tipo",
|
|
||||||
to="sangue_app.tipologiaofferta",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="FlussoDiRicavi",
|
name="FlussoDiRicavi",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -1047,61 +628,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "flussodiricavi",
|
"verbose_name_plural": "flussodiricavi",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
|
||||||
model_name="dettagliofatturabile",
|
|
||||||
name="flusso_di_ricavi",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DettaglioFatturabile_da_FlussoDiRicavi_flusso_di_ricavi",
|
|
||||||
to="sangue_app.flussodiricavi",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="dettagliofatturabile",
|
|
||||||
name="modalita_lavoro",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DettaglioFatturabile_da_ModalitaLavoro_modalita_lavoro",
|
|
||||||
to="sangue_app.modalitalavoro",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="dettagliofatturabile",
|
|
||||||
name="offerta_riferimento",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DettaglioFatturabile_da_Offerta_offerta_riferimento",
|
|
||||||
to="sangue_app.offerta",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="destinatarioofferta",
|
|
||||||
name="destinazione",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DestinatarioOfferta_da_Sede_destinazione",
|
|
||||||
to="sangue_app.sede",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="destinatarioofferta",
|
|
||||||
name="intestatario",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario",
|
|
||||||
to="contatti_app.personacontattoazienda",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="CanaleDistribuzioneIndiretto",
|
name="CanaleDistribuzioneIndiretto",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -1130,310 +656,6 @@ class Migration(migrations.Migration):
|
||||||
"verbose_name_plural": "canaledistribuzioneindiretto",
|
"verbose_name_plural": "canaledistribuzioneindiretto",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCSegmentiDiClientela",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCSegmentiDiClientela_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"settore_cliente",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCSegmentiDiClientela_da_SettoreAzienda_settore_cliente",
|
|
||||||
to="sangue_app.settoreazienda",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcsegmentidiclientela",
|
|
||||||
"verbose_name_plural": "bmcsegmentidiclientela",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCRisorsaChiave",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCRisorsaChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"risorsa_chiave",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCRisorsaChiave_da_RisorsaChiave_risorsa_chiave",
|
|
||||||
to="sangue_app.risorsachiave",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcrisorsachiave",
|
|
||||||
"verbose_name_plural": "bmcrisorsachiave",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCRelazioneConCliente",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCRelazioneConCliente_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"relazione_cliente",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCRelazioneConCliente_da_RelazioneConAzienda_relazione_cliente",
|
|
||||||
to="sangue_app.relazioneconazienda",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcrelazioneconcliente",
|
|
||||||
"verbose_name_plural": "bmcrelazioneconcliente",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCPropostaDiValore",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCPropostaDiValore_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"proposta_di_valore",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCPropostaDiValore_da_PropostaDiValore_proposta_di_valore",
|
|
||||||
to="sangue_app.propostadivalore",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcpropostadivalore",
|
|
||||||
"verbose_name_plural": "bmcpropostadivalore",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCPartnerChiave",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCPartnerChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"partnership_azienda",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCPartnerChiave_da_RelazioneConAzienda_partnership_azienda",
|
|
||||||
to="sangue_app.relazioneconazienda",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcpartnerchiave",
|
|
||||||
"verbose_name_plural": "bmcpartnerchiave",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCFlussoDiRicavi",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"flusso_di_ricavi",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCFlussoDiRicavi_da_FlussoDiRicavi_flusso_di_ricavi",
|
|
||||||
to="sangue_app.flussodiricavi",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCFlussoDiRicavi_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcflussodiricavi",
|
|
||||||
"verbose_name_plural": "bmcflussodiricavi",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCCanaleDiDistribuzione",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"canale",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCCanaleDiDistribuzione_da_CanaleDiDistribuzione_canale",
|
|
||||||
to="sangue_app.canaledidistribuzione",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCCanaleDiDistribuzione_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmccanaledidistribuzione",
|
|
||||||
"verbose_name_plural": "bmccanaledidistribuzione",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="BMCAttivitaChiave",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.AutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"attivita_chiave",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCAttivitaChiave_da_Attivita_attivita_chiave",
|
|
||||||
to="sangue_app.attivita",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"modello_di_business",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="BMCAttivitaChiave_da_BMCModelloDiBusiness_modello_di_business",
|
|
||||||
to="sangue_app.bmcmodellodibusiness",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "bmcattivitachiave",
|
|
||||||
"verbose_name_plural": "bmcattivitachiave",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="attivitadelprogetto",
|
model_name="attivitadelprogetto",
|
||||||
name="progetto",
|
name="progetto",
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-12 22:46
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("sangue_app", "0001_initial"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmccanaledidistribuzione",
|
|
||||||
name="canale",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmccanaledidistribuzione",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcflussodiricavi",
|
|
||||||
name="flusso_di_ricavi",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcflussodiricavi",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcpartnerchiave",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcpartnerchiave",
|
|
||||||
name="partnership_azienda",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcpropostadivalore",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcpropostadivalore",
|
|
||||||
name="proposta_di_valore",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcrelazioneconcliente",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcrelazioneconcliente",
|
|
||||||
name="relazione_cliente",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcrisorsachiave",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcrisorsachiave",
|
|
||||||
name="risorsa_chiave",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcsegmentidiclientela",
|
|
||||||
name="modello_di_business",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="bmcsegmentidiclientela",
|
|
||||||
name="settore_cliente",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCAttivitaChiave",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCCanaleDiDistribuzione",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCFlussoDiRicavi",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCModelloDiBusiness",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCPartnerChiave",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCPropostaDiValore",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCRelazioneConCliente",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCRisorsaChiave",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="BMCSegmentiDiClientela",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
# Generated by Django 4.1.7 on 2023-05-13 14:06
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("contatti_app", "0001_initial"),
|
|
||||||
("fattura_elettronica_app", "0001_initial"),
|
|
||||||
("sangue_app", "0002_remove_bmccanaledidistribuzione_canale_and_more"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="Indirizzo",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="iscrizionealboprofessionale",
|
|
||||||
name="persona_fisica",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="PersonaGiuridica",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="sede",
|
|
||||||
name="inquilino",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="soggettofiscale",
|
|
||||||
name="revisione_principale",
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="destinatarioofferta",
|
|
||||||
name="destinazione",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="DestinatarioOfferta_da_Sede_destinazione",
|
|
||||||
to="contatti_app.sede",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="relazioneconazienda",
|
|
||||||
name="azienda",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="RelazioneConAzienda_da_SoggettoFiscale_azienda",
|
|
||||||
to="fattura_elettronica_app.soggettofiscale",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="settoreazienda",
|
|
||||||
name="azienda",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
related_name="SettoreAzienda_da_SoggettoFiscale_azienda",
|
|
||||||
to="fattura_elettronica_app.soggettofiscale",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="IscrizioneAlboProfessionale",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="PersonaFisica",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="Sede",
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name="SoggettoFiscale",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
</row>
|
</row>
|
||||||
<row name="dettaglio_economico_offerto" null="1" autoincrement="0">
|
<row name="dettaglio_economico_offerto" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="DettaglioFatturabile" row="id" />
|
<default>NULL</default><relation table="AtomoFatturabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
|
|
@ -151,7 +151,7 @@
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
</key>
|
</key>
|
||||||
</table>
|
</table>
|
||||||
<table x="2304" y="2098" name="DettaglioFatturabile">
|
<table x="2304" y="2098" name="AtomoFatturabile">
|
||||||
<row name="offerta_riferimento" null="1" autoincrement="0">
|
<row name="offerta_riferimento" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="Offerta" row="id" />
|
<default>NULL</default><relation table="Offerta" row="id" />
|
||||||
|
|
@ -163,7 +163,7 @@
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="ModalitaLavoro" row="id" />
|
<default>NULL</default><relation table="ModalitaLavoro" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="dati_estesi" null="1" autoincrement="0">
|
<row name="riferimento_oggetto_fattura" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default></row>
|
<default>NULL</default></row>
|
||||||
<row name="flusso_di_ricavi" null="1" autoincrement="0">
|
<row name="flusso_di_ricavi" null="1" autoincrement="0">
|
||||||
|
|
@ -205,7 +205,7 @@
|
||||||
</row>
|
</row>
|
||||||
<row name="dato_economico" null="1" autoincrement="0">
|
<row name="dato_economico" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="DettaglioFatturabile" row="id" />
|
<default>NULL</default><relation table="AtomoFatturabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<row name="fase_target" null="1" autoincrement="0">
|
<row name="fase_target" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
|
|
@ -631,7 +631,7 @@
|
||||||
</row>
|
</row>
|
||||||
<row name="dato_economico" null="1" autoincrement="0">
|
<row name="dato_economico" null="1" autoincrement="0">
|
||||||
<datatype>INTEGER</datatype>
|
<datatype>INTEGER</datatype>
|
||||||
<default>NULL</default><relation table="DettaglioFatturabile" row="id" />
|
<default>NULL</default><relation table="AtomoFatturabile" row="id" />
|
||||||
</row>
|
</row>
|
||||||
<key type="PRIMARY" name="">
|
<key type="PRIMARY" name="">
|
||||||
<part>id</part>
|
<part>id</part>
|
||||||
|
|
|
||||||
|
|
@ -4,112 +4,6 @@ from polymorphic.models import PolymorphicModel
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
class DestinatarioOfferta(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'destinatarioofferta'
|
|
||||||
verbose_name_plural = 'destinatarioofferta'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"DestinatarioOfferta (id: {self.id})"
|
|
||||||
|
|
||||||
destinazione = models.ForeignKey('contatti_app.Sede', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DestinatarioOfferta_da_Sede_destinazione")
|
|
||||||
intestatario = models.ForeignKey('contatti_app.PersonaContattoAzienda', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DestinatarioOfferta_da_contatti_appPersonaContattoAzienda_intestatario")
|
|
||||||
|
|
||||||
|
|
||||||
class GruppoOfferte(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'gruppoofferte'
|
|
||||||
verbose_name_plural = 'gruppoofferte'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"GruppoOfferte (id: {self.id})"
|
|
||||||
|
|
||||||
destinatario = models.ForeignKey('DestinatarioOfferta', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="GruppoOfferte_da_DestinatarioOfferta_destinatario")
|
|
||||||
agente = models.ForeignKey('AgenteOfferta', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="GruppoOfferte_da_AgenteOfferta_agente")
|
|
||||||
tipo = models.ForeignKey('TipologiaOfferta', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="GruppoOfferte_da_TipologiaOfferta_tipo")
|
|
||||||
anno_1a_rev = models.IntegerField(null=True, blank=True)
|
|
||||||
numero = models.IntegerField(null=True, blank=True)
|
|
||||||
descrizione = models.CharField(null=True, max_length=4096)
|
|
||||||
|
|
||||||
|
|
||||||
class Offerta(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'offerta'
|
|
||||||
verbose_name_plural = 'offerta'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Offerta (id: {self.id})"
|
|
||||||
|
|
||||||
gruppo = models.ForeignKey('GruppoOfferte', on_delete=models.CASCADE,
|
|
||||||
null=True, blank=True, related_name="Offerta_da_GruppoOfferte_gruppo")
|
|
||||||
data = models.DateField(null=True, blank=True)
|
|
||||||
revisione = models.IntegerField(null=True, blank=True)
|
|
||||||
documento = models.CharField(null=True, max_length=128)
|
|
||||||
codice_offerta = models.IntegerField(null=True, blank=True)
|
|
||||||
accettazione = models.DateField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class AgenteOfferta(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'agenteofferta'
|
|
||||||
verbose_name_plural = 'agenteofferta'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"AgenteOfferta (id: {self.id})"
|
|
||||||
|
|
||||||
codice = models.IntegerField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
class ParteEconomicaOfferta(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'parteeconomicaofferta'
|
|
||||||
verbose_name_plural = 'parteeconomicaofferta'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"ParteEconomicaOfferta (id: {self.id})"
|
|
||||||
|
|
||||||
revisione = models.ForeignKey('Offerta', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="ParteEconomicaOfferta_da_Offerta_revisione")
|
|
||||||
dettaglio_economico_offerto = models.ForeignKey('DettaglioFatturabile', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="ParteEconomicaOfferta_da_DettaglioFatturabile_dettaglio_economico_offerto")
|
|
||||||
|
|
||||||
class ModalitaLavoro(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'modalitalavoro'
|
|
||||||
verbose_name_plural = 'modalitalavoro'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"ModalitaLavoro (id: {self.id})"
|
|
||||||
|
|
||||||
unita_misura_std = models.ForeignKey('fattura_elettronica_app.UnitaMisura', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="ModalitaLavoro_da_UnitaMisura_unita_misura_std")
|
|
||||||
descrizione = models.IntegerField(null=True, blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class DettaglioFatturabile(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'dettagliofatturabile'
|
|
||||||
verbose_name_plural = 'dettagliofatturabile'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"DettaglioFatturabile (id: {self.id})"
|
|
||||||
|
|
||||||
offerta_riferimento = models.ForeignKey('Offerta', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DettaglioFatturabile_da_Offerta_offerta_riferimento")
|
|
||||||
modalita_lavoro = models.ForeignKey('ModalitaLavoro', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DettaglioFatturabile_da_ModalitaLavoro_modalita_lavoro")
|
|
||||||
dati_estesi = models.ForeignKey('fattura_elettronica_app.DatiEstesiDettaglioFatturabile', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DettaglioFatturabile_da_DatiEstesiDettaglioFatturabile_dati_estesi")
|
|
||||||
flusso_di_ricavi = models.ForeignKey('FlussoDiRicavi', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="DettaglioFatturabile_da_FlussoDiRicavi_flusso_di_ricavi")
|
|
||||||
|
|
||||||
|
|
||||||
class Progetto(models.Model):
|
class Progetto(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'progetto'
|
verbose_name = 'progetto'
|
||||||
|
|
@ -135,22 +29,11 @@ class ValorizzazioneEconomicaProgetto(models.Model):
|
||||||
|
|
||||||
progetto = models.ForeignKey('Progetto', on_delete=models.CASCADE, null=True,
|
progetto = models.ForeignKey('Progetto', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="ValorizzazioneEconomicaProgetto_da_Progetto_progetto")
|
blank=True, related_name="ValorizzazioneEconomicaProgetto_da_Progetto_progetto")
|
||||||
dato_economico = models.ForeignKey('DettaglioFatturabile', on_delete=models.CASCADE, null=True,
|
dato_economico = models.ForeignKey('offerte_app.AtomoFatturabile', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="ValorizzazioneEconomicaProgetto_da_DettaglioFatturabile_dato_economico")
|
blank=True, related_name="ValorizzazioneEconomicaProgetto_da_DettaglioFatturabile_dato_economico")
|
||||||
fase_target = models.IntegerField(null=True, blank=True)
|
fase_target = models.IntegerField(null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class TipologiaOfferta(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'tipologiaofferta'
|
|
||||||
verbose_name_plural = 'tipologiaofferta'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"TipologiaOfferta (id: {self.id})"
|
|
||||||
|
|
||||||
descrizione = models.CharField(null=True, max_length=1024)
|
|
||||||
|
|
||||||
|
|
||||||
class Repository(models.Model):
|
class Repository(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'repository'
|
verbose_name = 'repository'
|
||||||
|
|
@ -401,7 +284,7 @@ class ValorizzazioneEconomicaAttivita(models.Model):
|
||||||
|
|
||||||
attivita_del_progetto = models.ForeignKey('AttivitaDelProgetto', on_delete=models.CASCADE, null=True,
|
attivita_del_progetto = models.ForeignKey('AttivitaDelProgetto', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="ValorizzazioneEconomicaAttivita_da_AttivitaDelProgetto_attivita_del_progetto")
|
blank=True, related_name="ValorizzazioneEconomicaAttivita_da_AttivitaDelProgetto_attivita_del_progetto")
|
||||||
dato_economico = models.ForeignKey('DettaglioFatturabile', on_delete=models.CASCADE, null=True,
|
dato_economico = models.ForeignKey('offerte_app.AtomoFatturabile', on_delete=models.CASCADE, null=True,
|
||||||
blank=True, related_name="ValorizzazioneEconomicaAttivita_da_DettaglioFatturabile_dato_economico")
|
blank=True, related_name="ValorizzazioneEconomicaAttivita_da_DettaglioFatturabile_dato_economico")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,31 +4,6 @@ from . import models
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
class DestinatarioOffertaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.DestinatarioOfferta
|
|
||||||
|
|
||||||
|
|
||||||
class GruppoOfferteResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.GruppoOfferte
|
|
||||||
|
|
||||||
|
|
||||||
class OffertaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.Offerta
|
|
||||||
|
|
||||||
|
|
||||||
class AgenteOffertaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.AgenteOfferta
|
|
||||||
|
|
||||||
|
|
||||||
class ParteEconomicaOffertaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.ParteEconomicaOfferta
|
|
||||||
|
|
||||||
|
|
||||||
class ProgettoResource(resources.ModelResource):
|
class ProgettoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Progetto
|
model = models.Progetto
|
||||||
|
|
@ -39,11 +14,6 @@ class ValorizzazioneEconomicaProgettoResource(resources.ModelResource):
|
||||||
model = models.ValorizzazioneEconomicaProgetto
|
model = models.ValorizzazioneEconomicaProgetto
|
||||||
|
|
||||||
|
|
||||||
class TipologiaOffertaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.TipologiaOfferta
|
|
||||||
|
|
||||||
|
|
||||||
class RepositoryResource(resources.ModelResource):
|
class RepositoryResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Repository
|
model = models.Repository
|
||||||
|
|
|
||||||
|
|
@ -4,38 +4,6 @@ from . import models
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
class DestinatarioOffertaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.DestinatarioOfferta
|
|
||||||
fields = ('destinazione', 'intestatario')
|
|
||||||
|
|
||||||
|
|
||||||
class GruppoOfferteSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.GruppoOfferte
|
|
||||||
fields = ('destinatario', 'agente', 'tipo',
|
|
||||||
'anno_1a_rev', 'numero', 'descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class OffertaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.Offerta
|
|
||||||
fields = ('gruppo', 'data', 'revisione', 'documento',
|
|
||||||
'codice_offerta', 'accettazione')
|
|
||||||
|
|
||||||
|
|
||||||
class AgenteOffertaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.AgenteOfferta
|
|
||||||
fields = ('codice')
|
|
||||||
|
|
||||||
|
|
||||||
class ParteEconomicaOffertaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.ParteEconomicaOfferta
|
|
||||||
fields = ('revisione', 'dettaglio_economico_offerto')
|
|
||||||
|
|
||||||
|
|
||||||
class ProgettoSerializer(serializers.ModelSerializer):
|
class ProgettoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Progetto
|
model = models.Progetto
|
||||||
|
|
@ -48,12 +16,6 @@ class ValorizzazioneEconomicaProgettoSerializer(serializers.ModelSerializer):
|
||||||
fields = ('progetto', 'dato_economico', 'fase_target')
|
fields = ('progetto', 'dato_economico', 'fase_target')
|
||||||
|
|
||||||
|
|
||||||
class TipologiaOffertaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.TipologiaOfferta
|
|
||||||
fields = ('descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class RepositorySerializer(serializers.ModelSerializer):
|
class RepositorySerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Repository
|
model = models.Repository
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,9 @@ router = routers.DefaultRouter()
|
||||||
|
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
router.register(r'destinatarioofferta', views.DestinatarioOfferta_View)
|
|
||||||
router.register(r'gruppoofferte', views.GruppoOfferte_View)
|
|
||||||
router.register(r'offerta', views.Offerta_View)
|
|
||||||
router.register(r'agenteofferta', views.AgenteOfferta_View)
|
|
||||||
router.register(r'parteeconomicaofferta', views.ParteEconomicaOfferta_View)
|
|
||||||
router.register(r'progetto', views.Progetto_View)
|
router.register(r'progetto', views.Progetto_View)
|
||||||
router.register(r'valorizzazioneeconomicaprogetto',
|
router.register(r'valorizzazioneeconomicaprogetto',
|
||||||
views.ValorizzazioneEconomicaProgetto_View)
|
views.ValorizzazioneEconomicaProgetto_View)
|
||||||
router.register(r'tipologiaofferta', views.TipologiaOfferta_View)
|
|
||||||
router.register(r'repository', views.Repository_View)
|
router.register(r'repository', views.Repository_View)
|
||||||
router.register(r'tiporelazione', views.TipoRelazione_View)
|
router.register(r'tiporelazione', views.TipoRelazione_View)
|
||||||
router.register(r'attivita', views.Attivita_View)
|
router.register(r'attivita', views.Attivita_View)
|
||||||
|
|
|
||||||
|
|
@ -19,46 +19,6 @@ from . import serializers
|
||||||
# --------------- FINE PREFISSO TEMPLATE ---------------
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
class DestinatarioOfferta_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.DestinatarioOfferta.objects.all()
|
|
||||||
serializer_class = serializers.DestinatarioOffertaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class GruppoOfferte_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.GruppoOfferte.objects.all()
|
|
||||||
serializer_class = serializers.GruppoOfferteSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class Offerta_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.Offerta.objects.all()
|
|
||||||
serializer_class = serializers.OffertaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class AgenteOfferta_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.AgenteOfferta.objects.all()
|
|
||||||
serializer_class = serializers.AgenteOffertaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class ParteEconomicaOfferta_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.ParteEconomicaOfferta.objects.all()
|
|
||||||
serializer_class = serializers.ParteEconomicaOffertaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class Progetto_View(viewsets.ModelViewSet):
|
class Progetto_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -75,14 +35,6 @@ class ValorizzazioneEconomicaProgetto_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.ValorizzazioneEconomicaProgettoSerializer
|
serializer_class = serializers.ValorizzazioneEconomicaProgettoSerializer
|
||||||
|
|
||||||
|
|
||||||
class TipologiaOfferta_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.TipologiaOfferta.objects.all()
|
|
||||||
serializer_class = serializers.TipologiaOffertaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class Repository_View(viewsets.ModelViewSet):
|
class Repository_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -134,6 +134,7 @@ FIXTURE_DIRS = (
|
||||||
# Application definition
|
# Application definition
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'sangue_app.apps.SangueAppConfig',
|
'sangue_app.apps.SangueAppConfig',
|
||||||
|
'offerte_app.apps.OfferteAppConfig',
|
||||||
'business_model_canvas_app.apps.BusinessModelCanvasAppConfig',
|
'business_model_canvas_app.apps.BusinessModelCanvasAppConfig',
|
||||||
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
||||||
'contatti_app.apps.ContattiAppConfig',
|
'contatti_app.apps.ContattiAppConfig',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue