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
|
||||
|
||||
|
||||
@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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
||||
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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Reference in New Issue