altra app

my-submodulepoetico
Guido Longoni 2023-05-13 00:47:58 +02:00
parent ed803a29c7
commit 2fe90c03a0
23 changed files with 1512 additions and 386 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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",
},
),
]

View File

@ -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 &amp; 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>

View File

@ -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")

View File

@ -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

View File

@ -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')

View File

@ -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

View File

@ -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]))

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -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

View File

@ -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

View File

@ -200,24 +200,6 @@ class SettoreAziendaAdmin(ImportExportModelAdmin):
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)
class RelazioneConAziendaAdmin(ImportExportModelAdmin):
# resource = resources.RelazioneConAziendaResource
@ -227,24 +209,6 @@ class RelazioneConAziendaAdmin(ImportExportModelAdmin):
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)
class TipoAttivitaAdmin(ImportExportModelAdmin):
# resource = resources.TipoAttivitaResource
@ -254,15 +218,6 @@ class TipoAttivitaAdmin(ImportExportModelAdmin):
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)
class ValoreDelProgettoAdmin(ImportExportModelAdmin):
# resource = resources.ValoreDelProgettoResource
@ -272,15 +227,6 @@ class ValoreDelProgettoAdmin(ImportExportModelAdmin):
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)
class AttivitaDelProgettoAdmin(ImportExportModelAdmin):
# resource = resources.AttivitaDelProgettoResource
@ -326,15 +272,6 @@ class RisorsaFinanziariaAdmin(ImportExportModelAdmin):
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)
class ValoreDellAttivitaAdmin(ImportExportModelAdmin):
# resource = resources.ValoreDellAttivitaResource
@ -371,24 +308,6 @@ class ArchivioFilesAdmin(ImportExportModelAdmin):
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)
class CanaleDistribuzioneIndirettoAdmin(ImportExportModelAdmin):
# resource = resources.CanaleDistribuzioneIndirettoResource

View File

@ -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",
),
]

View File

@ -275,31 +275,6 @@ class SettoreAzienda(models.Model):
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 Meta:
verbose_name = 'relazioneconazienda'
@ -316,34 +291,6 @@ class RelazioneConAzienda(models.Model):
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 Meta:
verbose_name = 'tipoattivita'
@ -355,20 +302,6 @@ class TipoAttivita(models.Model):
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 Meta:
verbose_name = 'valoredelprogetto'
@ -383,20 +316,6 @@ class ValoreDelProgetto(models.Model):
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 Meta:
verbose_name = 'attivitadelprogetto'
@ -458,20 +377,6 @@ class RisorsaFinanziaria(models.Model):
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 Meta:
verbose_name = 'valoredellattivita'
@ -526,34 +431,6 @@ class ArchivioFiles(models.Model):
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 Meta:
verbose_name = 'canaledistribuzioneindiretto'

View File

@ -94,51 +94,21 @@ class SettoreAziendaResource(resources.ModelResource):
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 Meta:
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 Meta:
model = models.TipoAttivita
class BMCAttivitaChiaveResource(resources.ModelResource):
class Meta:
model = models.BMCAttivitaChiave
class ValoreDelProgettoResource(resources.ModelResource):
class Meta:
model = models.ValoreDelProgetto
class BMCPropostaDiValoreResource(resources.ModelResource):
class Meta:
model = models.BMCPropostaDiValore
class AttivitaDelProgettoResource(resources.ModelResource):
class Meta:
model = models.AttivitaDelProgetto
@ -164,11 +134,6 @@ class RisorsaFinanziariaResource(resources.ModelResource):
model = models.RisorsaFinanziaria
class BMCRisorsaChiaveResource(resources.ModelResource):
class Meta:
model = models.BMCRisorsaChiave
class ValoreDellAttivitaResource(resources.ModelResource):
class Meta:
model = models.ValoreDellAttivita
@ -189,16 +154,6 @@ class ArchivioFilesResource(resources.ModelResource):
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 Meta:
model = models.CanaleDistribuzioneIndiretto

View File

@ -114,60 +114,24 @@ class SettoreAziendaSerializer(serializers.ModelSerializer):
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 Meta:
model = models.RelazioneConAzienda
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 Meta:
model = models.TipoAttivita
fields = ('descrizione')
class BMCAttivitaChiaveSerializer(serializers.ModelSerializer):
class Meta:
model = models.BMCAttivitaChiave
fields = ('attivita_chiave', 'modello_di_business')
class ValoreDelProgettoSerializer(serializers.ModelSerializer):
class Meta:
model = models.ValoreDelProgetto
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 Meta:
model = models.AttivitaDelProgetto
@ -198,12 +162,6 @@ class RisorsaFinanziariaSerializer(serializers.ModelSerializer):
fields = ('descrizione')
class BMCRisorsaChiaveSerializer(serializers.ModelSerializer):
class Meta:
model = models.BMCRisorsaChiave
fields = ('risorsa_chiave', 'modello_di_business')
class ValoreDellAttivitaSerializer(serializers.ModelSerializer):
class Meta:
model = models.ValoreDellAttivita
@ -228,18 +186,6 @@ class ArchivioFilesSerializer(serializers.ModelSerializer):
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 Meta:
model = models.CanaleDistribuzioneIndiretto

View File

@ -30,29 +30,19 @@ router.register(r'settoredimercato', views.SettoreDiMercato_View)
router.register(r'flussodiricavi', views.FlussoDiRicavi_View)
router.register(r'strutturadeicosti', views.StrutturaDeiCosti_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'bmcsegmentidiclientela', views.BMCSegmentiDiClientela_View)
router.register(r'bmcrelazioneconcliente', views.BMCRelazioneConCliente_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'bmcpropostadivalore', views.BMCPropostaDiValore_View)
router.register(r'attivitadelprogetto', views.AttivitaDelProgetto_View)
router.register(r'assetdelprogetto', views.AssetDelProgetto_View)
router.register(r'risorsapersonale', views.RisorsaPersonale_View)
router.register(r'risorsafisica', views.RisorsaFisica_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'valorizzazioneeconomicaattivita',
views.ValorizzazioneEconomicaAttivita_View)
router.register(r'assetdaattivita', views.AssetDaAttivita_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',
views.CanaleDistribuzioneIndiretto_View)
router.register(r'soggettofiscale', views.SoggettoFiscale_View)

View File

@ -163,22 +163,6 @@ class SettoreAzienda_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]
@ -187,22 +171,6 @@ class RelazioneConAzienda_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]
@ -211,14 +179,6 @@ class TipoAttivita_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]
@ -227,14 +187,6 @@ class ValoreDelProgetto_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]
@ -275,14 +227,6 @@ class RisorsaFinanziaria_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]
@ -315,22 +259,6 @@ class ArchivioFiles_View(viewsets.ModelViewSet):
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):
# authentication_classes = [BasicAuthentication, SessionAuthentication, TokenAuthentication]
# permission_classes = [DjangoModelPermissions]

View File

@ -134,9 +134,10 @@ FIXTURE_DIRS = (
# Application definition
INSTALLED_APPS = [
'sangue_app.apps.SangueAppConfig',
'dati_geo_app.apps.DatiGeograficiAppConfig',
'business_model_canvas_app.apps.BusinessModelCanvasAppConfig',
'fattura_elettronica_app.apps.FatturaElettronicaAppConfig',
'contatti_app.apps.ContattiAppConfig',
'dati_geo_app.apps.DatiGeograficiAppConfig',
'djaa_list_filter',
'rest_framework',
# 'rest_framework.authtoken',