altra app
parent
ed803a29c7
commit
2fe90c03a0
|
|
@ -0,0 +1,119 @@
|
||||||
|
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.BMCModelloDiBusiness)
|
||||||
|
class BMCModelloDiBusinessAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCModelloDiBusinessResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCPartnerChiave)
|
||||||
|
class BMCPartnerChiaveAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCPartnerChiaveResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCSegmentiDiClientela)
|
||||||
|
class BMCSegmentiDiClientelaAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCSegmentiDiClientelaResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCRelazioneConCliente)
|
||||||
|
class BMCRelazioneConClienteAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCRelazioneConClienteResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCAttivitaChiave)
|
||||||
|
class BMCAttivitaChiaveAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCAttivitaChiaveResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCPropostaDiValore)
|
||||||
|
class BMCPropostaDiValoreAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCPropostaDiValoreResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCRisorsaChiave)
|
||||||
|
class BMCRisorsaChiaveAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCRisorsaChiaveResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCFlussoDiRicavi)
|
||||||
|
class BMCFlussoDiRicaviAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCFlussoDiRicaviResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.BMCCanaleDiDistribuzione)
|
||||||
|
class BMCCanaleDiDistribuzioneAdmin(ImportExportModelAdmin):
|
||||||
|
# resource = resources.BMCCanaleDiDistribuzioneResource
|
||||||
|
# list_per_page = 15
|
||||||
|
# paginator = CachingPaginator
|
||||||
|
# show_full_result_count = False
|
||||||
|
pass
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class BusinessModelCanvasAppConfig(AppConfig):
|
||||||
|
name = 'business_model_canvas_app'
|
||||||
|
verbose_name = 'Business Model Canvas'
|
||||||
|
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)
|
||||||
|
|
@ -0,0 +1,264 @@
|
||||||
|
# Generated by Django 4.1.7 on 2023-05-12 22:46
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = []
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
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(
|
||||||
|
name="BMCSegmentiDiClientela",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("settore_cliente", models.IntegerField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"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="business_model_canvas_app.bmcmodellodibusiness",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
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",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("risorsa_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="BMCRisorsaChiave_da_BMCModelloDiBusiness_modello_di_business",
|
||||||
|
to="business_model_canvas_app.bmcmodellodibusiness",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
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",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("relazione_cliente", models.IntegerField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"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="business_model_canvas_app.bmcmodellodibusiness",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
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",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("proposta_di_valore", models.IntegerField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"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="business_model_canvas_app.bmcmodellodibusiness",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
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",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("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(
|
||||||
|
name="BMCFlussoDiRicavi",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
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(
|
||||||
|
name="BMCCanaleDiDistribuzione",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
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(
|
||||||
|
name="BMCAttivitaChiave",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
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,171 @@
|
||||||
|
<?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=""/>
|
||||||
|
</group>
|
||||||
|
</datatypes><table x="5052" y="2991" name="BMCModelloDiBusiness">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="descrizione" null="1" autoincrement="0">
|
||||||
|
<datatype>VARCHAR(4096)</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4376" y="2864" name="BMCPartnerChiave">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="partnership_azienda" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4360" y="2741" name="BMCSegmentiDiClientela">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="settore_cliente" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4453" y="2982" name="BMCRelazioneConCliente">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="relazione_cliente" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4537" y="3374" name="BMCAttivitaChiave">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="attivita_chiave" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4546" y="3508" name="BMCPropostaDiValore">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="proposta_di_valore" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4534" y="3230" name="BMCRisorsaChiave">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="risorsa_chiave" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4389" y="2619" name="BMCFlussoDiRicavi">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="flusso_di_ricavi" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
<table x="4483" y="3109" name="BMCCanaleDiDistribuzione">
|
||||||
|
<row name="id" null="1" autoincrement="1">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="canale" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default></row>
|
||||||
|
<row name="modello_di_business" null="1" autoincrement="0">
|
||||||
|
<datatype>INTEGER</datatype>
|
||||||
|
<default>NULL</default><relation table="BMCModelloDiBusiness" row="id" />
|
||||||
|
</row>
|
||||||
|
<key type="PRIMARY" name="">
|
||||||
|
<part>id</part>
|
||||||
|
</key>
|
||||||
|
</table>
|
||||||
|
</sql>
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
|
class BMCModelloDiBusiness(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcmodellodibusiness'
|
||||||
|
verbose_name_plural = 'bmcmodellodibusiness'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCModelloDiBusiness (id: {self.id})"
|
||||||
|
|
||||||
|
descrizione = models.CharField(null=True, max_length=4096)
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPartnerChiave(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcpartnerchiave'
|
||||||
|
verbose_name_plural = 'bmcpartnerchiave'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCPartnerChiave (id: {self.id})"
|
||||||
|
|
||||||
|
partnership_azienda = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCPartnerChiave_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCSegmentiDiClientela(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcsegmentidiclientela'
|
||||||
|
verbose_name_plural = 'bmcsegmentidiclientela'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCSegmentiDiClientela (id: {self.id})"
|
||||||
|
|
||||||
|
settore_cliente = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCSegmentiDiClientela_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRelazioneConCliente(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcrelazioneconcliente'
|
||||||
|
verbose_name_plural = 'bmcrelazioneconcliente'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCRelazioneConCliente (id: {self.id})"
|
||||||
|
|
||||||
|
relazione_cliente = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCRelazioneConCliente_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCAttivitaChiave(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcattivitachiave'
|
||||||
|
verbose_name_plural = 'bmcattivitachiave'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCAttivitaChiave (id: {self.id})"
|
||||||
|
|
||||||
|
attivita_chiave = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCAttivitaChiave_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPropostaDiValore(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcpropostadivalore'
|
||||||
|
verbose_name_plural = 'bmcpropostadivalore'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCPropostaDiValore (id: {self.id})"
|
||||||
|
|
||||||
|
proposta_di_valore = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCPropostaDiValore_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRisorsaChiave(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcrisorsachiave'
|
||||||
|
verbose_name_plural = 'bmcrisorsachiave'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCRisorsaChiave (id: {self.id})"
|
||||||
|
|
||||||
|
risorsa_chiave = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCRisorsaChiave_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCFlussoDiRicavi(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmcflussodiricavi'
|
||||||
|
verbose_name_plural = 'bmcflussodiricavi'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCFlussoDiRicavi (id: {self.id})"
|
||||||
|
|
||||||
|
flusso_di_ricavi = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCFlussoDiRicavi_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
||||||
|
|
||||||
|
class BMCCanaleDiDistribuzione(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'bmccanaledidistribuzione'
|
||||||
|
verbose_name_plural = 'bmccanaledidistribuzione'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"BMCCanaleDiDistribuzione (id: {self.id})"
|
||||||
|
|
||||||
|
canale = models.IntegerField(null=True, blank=True)
|
||||||
|
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
||||||
|
blank=True, related_name="BMCCanaleDiDistribuzione_da_BMCModelloDiBusiness_modello_di_business")
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
from import_export import resources
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
|
class BMCModelloDiBusinessResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCModelloDiBusiness
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPartnerChiaveResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCPartnerChiave
|
||||||
|
|
||||||
|
|
||||||
|
class BMCSegmentiDiClientelaResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCSegmentiDiClientela
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRelazioneConClienteResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCRelazioneConCliente
|
||||||
|
|
||||||
|
|
||||||
|
class BMCAttivitaChiaveResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCAttivitaChiave
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPropostaDiValoreResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCPropostaDiValore
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRisorsaChiaveResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCRisorsaChiave
|
||||||
|
|
||||||
|
|
||||||
|
class BMCFlussoDiRicaviResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCFlussoDiRicavi
|
||||||
|
|
||||||
|
|
||||||
|
class BMCCanaleDiDistribuzioneResource(resources.ModelResource):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCCanaleDiDistribuzione
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
from rest_framework import serializers
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
|
||||||
|
class BMCModelloDiBusinessSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCModelloDiBusiness
|
||||||
|
fields = ('descrizione')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPartnerChiaveSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCPartnerChiave
|
||||||
|
fields = ('partnership_azienda', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCSegmentiDiClientelaSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCSegmentiDiClientela
|
||||||
|
fields = ('settore_cliente', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRelazioneConClienteSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCRelazioneConCliente
|
||||||
|
fields = ('relazione_cliente', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCAttivitaChiaveSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCAttivitaChiave
|
||||||
|
fields = ('attivita_chiave', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPropostaDiValoreSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCPropostaDiValore
|
||||||
|
fields = ('proposta_di_valore', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRisorsaChiaveSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCRisorsaChiave
|
||||||
|
fields = ('risorsa_chiave', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCFlussoDiRicaviSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCFlussoDiRicavi
|
||||||
|
fields = ('flusso_di_ricavi', 'modello_di_business')
|
||||||
|
|
||||||
|
|
||||||
|
class BMCCanaleDiDistribuzioneSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.BMCCanaleDiDistribuzione
|
||||||
|
fields = ('canale', 'modello_di_business')
|
||||||
|
|
@ -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,25 @@
|
||||||
|
from rest_framework import routers
|
||||||
|
from django.urls import include, path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
app_name = "business_model_canvas_app"
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
# path('', views.index, name='index'),
|
||||||
|
]
|
||||||
|
router = routers.DefaultRouter()
|
||||||
|
|
||||||
|
# --------------- FINE PREFISSO TEMPLATE ---------------
|
||||||
|
|
||||||
|
router.register(r'bmcmodellodibusiness', views.BMCModelloDiBusiness_View)
|
||||||
|
router.register(r'bmcpartnerchiave', views.BMCPartnerChiave_View)
|
||||||
|
router.register(r'bmcsegmentidiclientela', views.BMCSegmentiDiClientela_View)
|
||||||
|
router.register(r'bmcrelazioneconcliente', views.BMCRelazioneConCliente_View)
|
||||||
|
router.register(r'bmcattivitachiave', views.BMCAttivitaChiave_View)
|
||||||
|
router.register(r'bmcpropostadivalore', views.BMCPropostaDiValore_View)
|
||||||
|
router.register(r'bmcrisorsachiave', views.BMCRisorsaChiave_View)
|
||||||
|
router.register(r'bmcflussodiricavi', views.BMCFlussoDiRicavi_View)
|
||||||
|
router.register(r'bmccanaledidistribuzione',
|
||||||
|
views.BMCCanaleDiDistribuzione_View)
|
||||||
|
|
||||||
|
urlpatterns += router.urls
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
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 BMCModelloDiBusiness_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCModelloDiBusiness.objects.all()
|
||||||
|
serializer_class = serializers.BMCModelloDiBusinessSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPartnerChiave_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCPartnerChiave.objects.all()
|
||||||
|
serializer_class = serializers.BMCPartnerChiaveSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCSegmentiDiClientela_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCSegmentiDiClientela.objects.all()
|
||||||
|
serializer_class = serializers.BMCSegmentiDiClientelaSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRelazioneConCliente_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCRelazioneConCliente.objects.all()
|
||||||
|
serializer_class = serializers.BMCRelazioneConClienteSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCAttivitaChiave_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCAttivitaChiave.objects.all()
|
||||||
|
serializer_class = serializers.BMCAttivitaChiaveSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCPropostaDiValore_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCPropostaDiValore.objects.all()
|
||||||
|
serializer_class = serializers.BMCPropostaDiValoreSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCRisorsaChiave_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCRisorsaChiave.objects.all()
|
||||||
|
serializer_class = serializers.BMCRisorsaChiaveSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCFlussoDiRicavi_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCFlussoDiRicavi.objects.all()
|
||||||
|
serializer_class = serializers.BMCFlussoDiRicaviSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class BMCCanaleDiDistribuzione_View(viewsets.ModelViewSet):
|
||||||
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
||||||
|
queryset = models.BMCCanaleDiDistribuzione.objects.all()
|
||||||
|
serializer_class = serializers.BMCCanaleDiDistribuzioneSerializer
|
||||||
|
|
@ -200,24 +200,6 @@ class SettoreAziendaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCModelloDiBusiness)
|
|
||||||
class BMCModelloDiBusinessAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCModelloDiBusinessResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCPartnerChiave)
|
|
||||||
class BMCPartnerChiaveAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCPartnerChiaveResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.RelazioneConAzienda)
|
@admin.register(models.RelazioneConAzienda)
|
||||||
class RelazioneConAziendaAdmin(ImportExportModelAdmin):
|
class RelazioneConAziendaAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.RelazioneConAziendaResource
|
# resource = resources.RelazioneConAziendaResource
|
||||||
|
|
@ -227,24 +209,6 @@ class RelazioneConAziendaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCSegmentiDiClientela)
|
|
||||||
class BMCSegmentiDiClientelaAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCSegmentiDiClientelaResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCRelazioneConCliente)
|
|
||||||
class BMCRelazioneConClienteAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCRelazioneConClienteResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.TipoAttivita)
|
@admin.register(models.TipoAttivita)
|
||||||
class TipoAttivitaAdmin(ImportExportModelAdmin):
|
class TipoAttivitaAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.TipoAttivitaResource
|
# resource = resources.TipoAttivitaResource
|
||||||
|
|
@ -254,15 +218,6 @@ class TipoAttivitaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCAttivitaChiave)
|
|
||||||
class BMCAttivitaChiaveAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCAttivitaChiaveResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.ValoreDelProgetto)
|
@admin.register(models.ValoreDelProgetto)
|
||||||
class ValoreDelProgettoAdmin(ImportExportModelAdmin):
|
class ValoreDelProgettoAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.ValoreDelProgettoResource
|
# resource = resources.ValoreDelProgettoResource
|
||||||
|
|
@ -272,15 +227,6 @@ class ValoreDelProgettoAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCPropostaDiValore)
|
|
||||||
class BMCPropostaDiValoreAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCPropostaDiValoreResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.AttivitaDelProgetto)
|
@admin.register(models.AttivitaDelProgetto)
|
||||||
class AttivitaDelProgettoAdmin(ImportExportModelAdmin):
|
class AttivitaDelProgettoAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.AttivitaDelProgettoResource
|
# resource = resources.AttivitaDelProgettoResource
|
||||||
|
|
@ -326,15 +272,6 @@ class RisorsaFinanziariaAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCRisorsaChiave)
|
|
||||||
class BMCRisorsaChiaveAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCRisorsaChiaveResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.ValoreDellAttivita)
|
@admin.register(models.ValoreDellAttivita)
|
||||||
class ValoreDellAttivitaAdmin(ImportExportModelAdmin):
|
class ValoreDellAttivitaAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.ValoreDellAttivitaResource
|
# resource = resources.ValoreDellAttivitaResource
|
||||||
|
|
@ -371,24 +308,6 @@ class ArchivioFilesAdmin(ImportExportModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCFlussoDiRicavi)
|
|
||||||
class BMCFlussoDiRicaviAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCFlussoDiRicaviResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.BMCCanaleDiDistribuzione)
|
|
||||||
class BMCCanaleDiDistribuzioneAdmin(ImportExportModelAdmin):
|
|
||||||
# resource = resources.BMCCanaleDiDistribuzioneResource
|
|
||||||
# list_per_page = 15
|
|
||||||
# paginator = CachingPaginator
|
|
||||||
# show_full_result_count = False
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.CanaleDistribuzioneIndiretto)
|
@admin.register(models.CanaleDistribuzioneIndiretto)
|
||||||
class CanaleDistribuzioneIndirettoAdmin(ImportExportModelAdmin):
|
class CanaleDistribuzioneIndirettoAdmin(ImportExportModelAdmin):
|
||||||
# resource = resources.CanaleDistribuzioneIndirettoResource
|
# resource = resources.CanaleDistribuzioneIndirettoResource
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
# 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",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -275,31 +275,6 @@ class SettoreAzienda(models.Model):
|
||||||
blank=True, related_name="SettoreAzienda_da_SettoreDiMercato_settore_di_mercato")
|
blank=True, related_name="SettoreAzienda_da_SettoreDiMercato_settore_di_mercato")
|
||||||
|
|
||||||
|
|
||||||
class BMCModelloDiBusiness(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcmodellodibusiness'
|
|
||||||
verbose_name_plural = 'bmcmodellodibusiness'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCModelloDiBusiness (id: {self.id})"
|
|
||||||
|
|
||||||
descrizione = models.CharField(null=True, max_length=4096)
|
|
||||||
|
|
||||||
|
|
||||||
class BMCPartnerChiave(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcpartnerchiave'
|
|
||||||
verbose_name_plural = 'bmcpartnerchiave'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCPartnerChiave (id: {self.id})"
|
|
||||||
|
|
||||||
partnership_azienda = models.ForeignKey('RelazioneConAzienda', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCPartnerChiave_da_RelazioneConAzienda_partnership_azienda")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCPartnerChiave_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class RelazioneConAzienda(models.Model):
|
class RelazioneConAzienda(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'relazioneconazienda'
|
verbose_name = 'relazioneconazienda'
|
||||||
|
|
@ -316,34 +291,6 @@ class RelazioneConAzienda(models.Model):
|
||||||
blank=True, related_name="RelazioneConAzienda_da_TipoRelazione_tipo_relazione")
|
blank=True, related_name="RelazioneConAzienda_da_TipoRelazione_tipo_relazione")
|
||||||
|
|
||||||
|
|
||||||
class BMCSegmentiDiClientela(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcsegmentidiclientela'
|
|
||||||
verbose_name_plural = 'bmcsegmentidiclientela'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCSegmentiDiClientela (id: {self.id})"
|
|
||||||
|
|
||||||
settore_cliente = models.ForeignKey('SettoreAzienda', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCSegmentiDiClientela_da_SettoreAzienda_settore_cliente")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCSegmentiDiClientela_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class BMCRelazioneConCliente(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcrelazioneconcliente'
|
|
||||||
verbose_name_plural = 'bmcrelazioneconcliente'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCRelazioneConCliente (id: {self.id})"
|
|
||||||
|
|
||||||
relazione_cliente = models.ForeignKey('RelazioneConAzienda', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCRelazioneConCliente_da_RelazioneConAzienda_relazione_cliente")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCRelazioneConCliente_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class TipoAttivita(models.Model):
|
class TipoAttivita(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'tipoattivita'
|
verbose_name = 'tipoattivita'
|
||||||
|
|
@ -355,20 +302,6 @@ class TipoAttivita(models.Model):
|
||||||
descrizione = models.CharField(null=True, max_length=4096)
|
descrizione = models.CharField(null=True, max_length=4096)
|
||||||
|
|
||||||
|
|
||||||
class BMCAttivitaChiave(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcattivitachiave'
|
|
||||||
verbose_name_plural = 'bmcattivitachiave'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCAttivitaChiave (id: {self.id})"
|
|
||||||
|
|
||||||
attivita_chiave = models.ForeignKey('Attivita', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCAttivitaChiave_da_Attivita_attivita_chiave")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCAttivitaChiave_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDelProgetto(models.Model):
|
class ValoreDelProgetto(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'valoredelprogetto'
|
verbose_name = 'valoredelprogetto'
|
||||||
|
|
@ -383,20 +316,6 @@ class ValoreDelProgetto(models.Model):
|
||||||
blank=True, related_name="ValoreDelProgetto_da_PropostaDiValore_proposta_di_valore")
|
blank=True, related_name="ValoreDelProgetto_da_PropostaDiValore_proposta_di_valore")
|
||||||
|
|
||||||
|
|
||||||
class BMCPropostaDiValore(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcpropostadivalore'
|
|
||||||
verbose_name_plural = 'bmcpropostadivalore'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCPropostaDiValore (id: {self.id})"
|
|
||||||
|
|
||||||
proposta_di_valore = models.ForeignKey('PropostaDiValore', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCPropostaDiValore_da_PropostaDiValore_proposta_di_valore")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCPropostaDiValore_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class AttivitaDelProgetto(models.Model):
|
class AttivitaDelProgetto(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'attivitadelprogetto'
|
verbose_name = 'attivitadelprogetto'
|
||||||
|
|
@ -458,20 +377,6 @@ class RisorsaFinanziaria(models.Model):
|
||||||
descrizione = models.CharField(null=True, max_length=4096)
|
descrizione = models.CharField(null=True, max_length=4096)
|
||||||
|
|
||||||
|
|
||||||
class BMCRisorsaChiave(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcrisorsachiave'
|
|
||||||
verbose_name_plural = 'bmcrisorsachiave'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCRisorsaChiave (id: {self.id})"
|
|
||||||
|
|
||||||
risorsa_chiave = models.ForeignKey('RisorsaChiave', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCRisorsaChiave_da_RisorsaChiave_risorsa_chiave")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCRisorsaChiave_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDellAttivita(models.Model):
|
class ValoreDellAttivita(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'valoredellattivita'
|
verbose_name = 'valoredellattivita'
|
||||||
|
|
@ -526,34 +431,6 @@ class ArchivioFiles(models.Model):
|
||||||
descrizione = models.CharField(null=True, max_length=4096)
|
descrizione = models.CharField(null=True, max_length=4096)
|
||||||
|
|
||||||
|
|
||||||
class BMCFlussoDiRicavi(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmcflussodiricavi'
|
|
||||||
verbose_name_plural = 'bmcflussodiricavi'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCFlussoDiRicavi (id: {self.id})"
|
|
||||||
|
|
||||||
flusso_di_ricavi = models.ForeignKey('FlussoDiRicavi', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCFlussoDiRicavi_da_FlussoDiRicavi_flusso_di_ricavi")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCFlussoDiRicavi_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class BMCCanaleDiDistribuzione(models.Model):
|
|
||||||
class Meta:
|
|
||||||
verbose_name = 'bmccanaledidistribuzione'
|
|
||||||
verbose_name_plural = 'bmccanaledidistribuzione'
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"BMCCanaleDiDistribuzione (id: {self.id})"
|
|
||||||
|
|
||||||
canale = models.ForeignKey('CanaleDiDistribuzione', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCCanaleDiDistribuzione_da_CanaleDiDistribuzione_canale")
|
|
||||||
modello_di_business = models.ForeignKey('BMCModelloDiBusiness', on_delete=models.CASCADE, null=True,
|
|
||||||
blank=True, related_name="BMCCanaleDiDistribuzione_da_BMCModelloDiBusiness_modello_di_business")
|
|
||||||
|
|
||||||
|
|
||||||
class CanaleDistribuzioneIndiretto(models.Model):
|
class CanaleDistribuzioneIndiretto(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'canaledistribuzioneindiretto'
|
verbose_name = 'canaledistribuzioneindiretto'
|
||||||
|
|
|
||||||
|
|
@ -94,51 +94,21 @@ class SettoreAziendaResource(resources.ModelResource):
|
||||||
model = models.SettoreAzienda
|
model = models.SettoreAzienda
|
||||||
|
|
||||||
|
|
||||||
class BMCModelloDiBusinessResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCModelloDiBusiness
|
|
||||||
|
|
||||||
|
|
||||||
class BMCPartnerChiaveResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCPartnerChiave
|
|
||||||
|
|
||||||
|
|
||||||
class RelazioneConAziendaResource(resources.ModelResource):
|
class RelazioneConAziendaResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.RelazioneConAzienda
|
model = models.RelazioneConAzienda
|
||||||
|
|
||||||
|
|
||||||
class BMCSegmentiDiClientelaResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCSegmentiDiClientela
|
|
||||||
|
|
||||||
|
|
||||||
class BMCRelazioneConClienteResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCRelazioneConCliente
|
|
||||||
|
|
||||||
|
|
||||||
class TipoAttivitaResource(resources.ModelResource):
|
class TipoAttivitaResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.TipoAttivita
|
model = models.TipoAttivita
|
||||||
|
|
||||||
|
|
||||||
class BMCAttivitaChiaveResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCAttivitaChiave
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDelProgettoResource(resources.ModelResource):
|
class ValoreDelProgettoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ValoreDelProgetto
|
model = models.ValoreDelProgetto
|
||||||
|
|
||||||
|
|
||||||
class BMCPropostaDiValoreResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCPropostaDiValore
|
|
||||||
|
|
||||||
|
|
||||||
class AttivitaDelProgettoResource(resources.ModelResource):
|
class AttivitaDelProgettoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.AttivitaDelProgetto
|
model = models.AttivitaDelProgetto
|
||||||
|
|
@ -164,11 +134,6 @@ class RisorsaFinanziariaResource(resources.ModelResource):
|
||||||
model = models.RisorsaFinanziaria
|
model = models.RisorsaFinanziaria
|
||||||
|
|
||||||
|
|
||||||
class BMCRisorsaChiaveResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCRisorsaChiave
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDellAttivitaResource(resources.ModelResource):
|
class ValoreDellAttivitaResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ValoreDellAttivita
|
model = models.ValoreDellAttivita
|
||||||
|
|
@ -189,16 +154,6 @@ class ArchivioFilesResource(resources.ModelResource):
|
||||||
model = models.ArchivioFiles
|
model = models.ArchivioFiles
|
||||||
|
|
||||||
|
|
||||||
class BMCFlussoDiRicaviResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCFlussoDiRicavi
|
|
||||||
|
|
||||||
|
|
||||||
class BMCCanaleDiDistribuzioneResource(resources.ModelResource):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCCanaleDiDistribuzione
|
|
||||||
|
|
||||||
|
|
||||||
class CanaleDistribuzioneIndirettoResource(resources.ModelResource):
|
class CanaleDistribuzioneIndirettoResource(resources.ModelResource):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.CanaleDistribuzioneIndiretto
|
model = models.CanaleDistribuzioneIndiretto
|
||||||
|
|
|
||||||
|
|
@ -114,60 +114,24 @@ class SettoreAziendaSerializer(serializers.ModelSerializer):
|
||||||
fields = ('settore_generico', 'azienda', 'settore_di_mercato')
|
fields = ('settore_generico', 'azienda', 'settore_di_mercato')
|
||||||
|
|
||||||
|
|
||||||
class BMCModelloDiBusinessSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCModelloDiBusiness
|
|
||||||
fields = ('descrizione')
|
|
||||||
|
|
||||||
|
|
||||||
class BMCPartnerChiaveSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCPartnerChiave
|
|
||||||
fields = ('partnership_azienda', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class RelazioneConAziendaSerializer(serializers.ModelSerializer):
|
class RelazioneConAziendaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.RelazioneConAzienda
|
model = models.RelazioneConAzienda
|
||||||
fields = ('relazione_generica', 'azienda', 'tipo_relazione')
|
fields = ('relazione_generica', 'azienda', 'tipo_relazione')
|
||||||
|
|
||||||
|
|
||||||
class BMCSegmentiDiClientelaSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCSegmentiDiClientela
|
|
||||||
fields = ('settore_cliente', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class BMCRelazioneConClienteSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCRelazioneConCliente
|
|
||||||
fields = ('relazione_cliente', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class TipoAttivitaSerializer(serializers.ModelSerializer):
|
class TipoAttivitaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.TipoAttivita
|
model = models.TipoAttivita
|
||||||
fields = ('descrizione')
|
fields = ('descrizione')
|
||||||
|
|
||||||
|
|
||||||
class BMCAttivitaChiaveSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCAttivitaChiave
|
|
||||||
fields = ('attivita_chiave', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDelProgettoSerializer(serializers.ModelSerializer):
|
class ValoreDelProgettoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ValoreDelProgetto
|
model = models.ValoreDelProgetto
|
||||||
fields = ('progetto', 'proposta_di_valore')
|
fields = ('progetto', 'proposta_di_valore')
|
||||||
|
|
||||||
|
|
||||||
class BMCPropostaDiValoreSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCPropostaDiValore
|
|
||||||
fields = ('proposta_di_valore', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class AttivitaDelProgettoSerializer(serializers.ModelSerializer):
|
class AttivitaDelProgettoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.AttivitaDelProgetto
|
model = models.AttivitaDelProgetto
|
||||||
|
|
@ -198,12 +162,6 @@ class RisorsaFinanziariaSerializer(serializers.ModelSerializer):
|
||||||
fields = ('descrizione')
|
fields = ('descrizione')
|
||||||
|
|
||||||
|
|
||||||
class BMCRisorsaChiaveSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCRisorsaChiave
|
|
||||||
fields = ('risorsa_chiave', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDellAttivitaSerializer(serializers.ModelSerializer):
|
class ValoreDellAttivitaSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ValoreDellAttivita
|
model = models.ValoreDellAttivita
|
||||||
|
|
@ -228,18 +186,6 @@ class ArchivioFilesSerializer(serializers.ModelSerializer):
|
||||||
fields = ('url', 'descrizione')
|
fields = ('url', 'descrizione')
|
||||||
|
|
||||||
|
|
||||||
class BMCFlussoDiRicaviSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCFlussoDiRicavi
|
|
||||||
fields = ('flusso_di_ricavi', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class BMCCanaleDiDistribuzioneSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = models.BMCCanaleDiDistribuzione
|
|
||||||
fields = ('canale', 'modello_di_business')
|
|
||||||
|
|
||||||
|
|
||||||
class CanaleDistribuzioneIndirettoSerializer(serializers.ModelSerializer):
|
class CanaleDistribuzioneIndirettoSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.CanaleDistribuzioneIndiretto
|
model = models.CanaleDistribuzioneIndiretto
|
||||||
|
|
|
||||||
|
|
@ -30,29 +30,19 @@ router.register(r'settoredimercato', views.SettoreDiMercato_View)
|
||||||
router.register(r'flussodiricavi', views.FlussoDiRicavi_View)
|
router.register(r'flussodiricavi', views.FlussoDiRicavi_View)
|
||||||
router.register(r'strutturadeicosti', views.StrutturaDeiCosti_View)
|
router.register(r'strutturadeicosti', views.StrutturaDeiCosti_View)
|
||||||
router.register(r'settoreazienda', views.SettoreAzienda_View)
|
router.register(r'settoreazienda', views.SettoreAzienda_View)
|
||||||
router.register(r'bmcmodellodibusiness', views.BMCModelloDiBusiness_View)
|
|
||||||
router.register(r'bmcpartnerchiave', views.BMCPartnerChiave_View)
|
|
||||||
router.register(r'relazioneconazienda', views.RelazioneConAzienda_View)
|
router.register(r'relazioneconazienda', views.RelazioneConAzienda_View)
|
||||||
router.register(r'bmcsegmentidiclientela', views.BMCSegmentiDiClientela_View)
|
|
||||||
router.register(r'bmcrelazioneconcliente', views.BMCRelazioneConCliente_View)
|
|
||||||
router.register(r'tipoattivita', views.TipoAttivita_View)
|
router.register(r'tipoattivita', views.TipoAttivita_View)
|
||||||
router.register(r'bmcattivitachiave', views.BMCAttivitaChiave_View)
|
|
||||||
router.register(r'valoredelprogetto', views.ValoreDelProgetto_View)
|
router.register(r'valoredelprogetto', views.ValoreDelProgetto_View)
|
||||||
router.register(r'bmcpropostadivalore', views.BMCPropostaDiValore_View)
|
|
||||||
router.register(r'attivitadelprogetto', views.AttivitaDelProgetto_View)
|
router.register(r'attivitadelprogetto', views.AttivitaDelProgetto_View)
|
||||||
router.register(r'assetdelprogetto', views.AssetDelProgetto_View)
|
router.register(r'assetdelprogetto', views.AssetDelProgetto_View)
|
||||||
router.register(r'risorsapersonale', views.RisorsaPersonale_View)
|
router.register(r'risorsapersonale', views.RisorsaPersonale_View)
|
||||||
router.register(r'risorsafisica', views.RisorsaFisica_View)
|
router.register(r'risorsafisica', views.RisorsaFisica_View)
|
||||||
router.register(r'risorsafinanziaria', views.RisorsaFinanziaria_View)
|
router.register(r'risorsafinanziaria', views.RisorsaFinanziaria_View)
|
||||||
router.register(r'bmcrisorsachiave', views.BMCRisorsaChiave_View)
|
|
||||||
router.register(r'valoredellattivita', views.ValoreDellAttivita_View)
|
router.register(r'valoredellattivita', views.ValoreDellAttivita_View)
|
||||||
router.register(r'valorizzazioneeconomicaattivita',
|
router.register(r'valorizzazioneeconomicaattivita',
|
||||||
views.ValorizzazioneEconomicaAttivita_View)
|
views.ValorizzazioneEconomicaAttivita_View)
|
||||||
router.register(r'assetdaattivita', views.AssetDaAttivita_View)
|
router.register(r'assetdaattivita', views.AssetDaAttivita_View)
|
||||||
router.register(r'archiviofiles', views.ArchivioFiles_View)
|
router.register(r'archiviofiles', views.ArchivioFiles_View)
|
||||||
router.register(r'bmcflussodiricavi', views.BMCFlussoDiRicavi_View)
|
|
||||||
router.register(r'bmccanaledidistribuzione',
|
|
||||||
views.BMCCanaleDiDistribuzione_View)
|
|
||||||
router.register(r'canaledistribuzioneindiretto',
|
router.register(r'canaledistribuzioneindiretto',
|
||||||
views.CanaleDistribuzioneIndiretto_View)
|
views.CanaleDistribuzioneIndiretto_View)
|
||||||
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
router.register(r'soggettofiscale', views.SoggettoFiscale_View)
|
||||||
|
|
|
||||||
|
|
@ -163,22 +163,6 @@ class SettoreAzienda_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.SettoreAziendaSerializer
|
serializer_class = serializers.SettoreAziendaSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCModelloDiBusiness_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCModelloDiBusiness.objects.all()
|
|
||||||
serializer_class = serializers.BMCModelloDiBusinessSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class BMCPartnerChiave_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCPartnerChiave.objects.all()
|
|
||||||
serializer_class = serializers.BMCPartnerChiaveSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class RelazioneConAzienda_View(viewsets.ModelViewSet):
|
class RelazioneConAzienda_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -187,22 +171,6 @@ class RelazioneConAzienda_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.RelazioneConAziendaSerializer
|
serializer_class = serializers.RelazioneConAziendaSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCSegmentiDiClientela_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCSegmentiDiClientela.objects.all()
|
|
||||||
serializer_class = serializers.BMCSegmentiDiClientelaSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class BMCRelazioneConCliente_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCRelazioneConCliente.objects.all()
|
|
||||||
serializer_class = serializers.BMCRelazioneConClienteSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class TipoAttivita_View(viewsets.ModelViewSet):
|
class TipoAttivita_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -211,14 +179,6 @@ class TipoAttivita_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.TipoAttivitaSerializer
|
serializer_class = serializers.TipoAttivitaSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCAttivitaChiave_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCAttivitaChiave.objects.all()
|
|
||||||
serializer_class = serializers.BMCAttivitaChiaveSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDelProgetto_View(viewsets.ModelViewSet):
|
class ValoreDelProgetto_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -227,14 +187,6 @@ class ValoreDelProgetto_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.ValoreDelProgettoSerializer
|
serializer_class = serializers.ValoreDelProgettoSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCPropostaDiValore_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCPropostaDiValore.objects.all()
|
|
||||||
serializer_class = serializers.BMCPropostaDiValoreSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class AttivitaDelProgetto_View(viewsets.ModelViewSet):
|
class AttivitaDelProgetto_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -275,14 +227,6 @@ class RisorsaFinanziaria_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.RisorsaFinanziariaSerializer
|
serializer_class = serializers.RisorsaFinanziariaSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCRisorsaChiave_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCRisorsaChiave.objects.all()
|
|
||||||
serializer_class = serializers.BMCRisorsaChiaveSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class ValoreDellAttivita_View(viewsets.ModelViewSet):
|
class ValoreDellAttivita_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
@ -315,22 +259,6 @@ class ArchivioFiles_View(viewsets.ModelViewSet):
|
||||||
serializer_class = serializers.ArchivioFilesSerializer
|
serializer_class = serializers.ArchivioFilesSerializer
|
||||||
|
|
||||||
|
|
||||||
class BMCFlussoDiRicavi_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCFlussoDiRicavi.objects.all()
|
|
||||||
serializer_class = serializers.BMCFlussoDiRicaviSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class BMCCanaleDiDistribuzione_View(viewsets.ModelViewSet):
|
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
|
||||||
# permission_classes = [DjangoModelPermissions]
|
|
||||||
|
|
||||||
queryset = models.BMCCanaleDiDistribuzione.objects.all()
|
|
||||||
serializer_class = serializers.BMCCanaleDiDistribuzioneSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class CanaleDistribuzioneIndiretto_View(viewsets.ModelViewSet):
|
class CanaleDistribuzioneIndiretto_View(viewsets.ModelViewSet):
|
||||||
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
|
||||||
# permission_classes = [DjangoModelPermissions]
|
# permission_classes = [DjangoModelPermissions]
|
||||||
|
|
|
||||||
|
|
@ -134,9 +134,10 @@ FIXTURE_DIRS = (
|
||||||
# Application definition
|
# Application definition
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'sangue_app.apps.SangueAppConfig',
|
'sangue_app.apps.SangueAppConfig',
|
||||||
'dati_geo_app.apps.DatiGeograficiAppConfig',
|
'business_model_canvas_app.apps.BusinessModelCanvasAppConfig',
|
||||||
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
|
||||||
'contatti_app.apps.ContattiAppConfig',
|
'contatti_app.apps.ContattiAppConfig',
|
||||||
|
'dati_geo_app.apps.DatiGeograficiAppConfig',
|
||||||
'djaa_list_filter',
|
'djaa_list_filter',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
# 'rest_framework.authtoken',
|
# 'rest_framework.authtoken',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue