diff --git a/django/business_model_canvas_app/__init__.py b/django/business_model_canvas_app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django/business_model_canvas_app/admin.py b/django/business_model_canvas_app/admin.py new file mode 100644 index 0000000..928060e --- /dev/null +++ b/django/business_model_canvas_app/admin.py @@ -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 diff --git a/django/business_model_canvas_app/apps.py b/django/business_model_canvas_app/apps.py new file mode 100644 index 0000000..971a0d5 --- /dev/null +++ b/django/business_model_canvas_app/apps.py @@ -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 diff --git a/django/business_model_canvas_app/consumers.py b/django/business_model_canvas_app/consumers.py new file mode 100644 index 0000000..f11bdce --- /dev/null +++ b/django/business_model_canvas_app/consumers.py @@ -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) diff --git a/django/business_model_canvas_app/migrations/0001_initial.py b/django/business_model_canvas_app/migrations/0001_initial.py new file mode 100644 index 0000000..4b19a5a --- /dev/null +++ b/django/business_model_canvas_app/migrations/0001_initial.py @@ -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", + }, + ), + ] diff --git a/django/business_model_canvas_app/migrations/__init__.py b/django/business_model_canvas_app/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django/business_model_canvas_app/modello_database.xml b/django/business_model_canvas_app/modello_database.xml new file mode 100644 index 0000000..4e2f1cd --- /dev/null +++ b/django/business_model_canvas_app/modello_database.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +INTEGER +NULL + +VARCHAR(4096) +NULL + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+ + +INTEGER +NULL + +INTEGER +NULL + +INTEGER +NULL + + +id + +
+
diff --git a/django/business_model_canvas_app/models.py b/django/business_model_canvas_app/models.py new file mode 100644 index 0000000..a9aa5a8 --- /dev/null +++ b/django/business_model_canvas_app/models.py @@ -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") diff --git a/django/business_model_canvas_app/resources.py b/django/business_model_canvas_app/resources.py new file mode 100644 index 0000000..8a51383 --- /dev/null +++ b/django/business_model_canvas_app/resources.py @@ -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 diff --git a/django/business_model_canvas_app/serializers.py b/django/business_model_canvas_app/serializers.py new file mode 100644 index 0000000..ed15f1d --- /dev/null +++ b/django/business_model_canvas_app/serializers.py @@ -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') diff --git a/django/business_model_canvas_app/signals.py b/django/business_model_canvas_app/signals.py new file mode 100644 index 0000000..418cbb8 --- /dev/null +++ b/django/business_model_canvas_app/signals.py @@ -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 diff --git a/django/business_model_canvas_app/sqldes2django.py b/django/business_model_canvas_app/sqldes2django.py new file mode 100755 index 0000000..89b438d --- /dev/null +++ b/django/business_model_canvas_app/sqldes2django.py @@ -0,0 +1,480 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +sqldes2django. + +Usage: + sqldes2django.py write [--tgt-dir=] [--unmanaged=] [--models-file=] [--serializers-file=] [--views-file=] [--urls-file=] [--admin-file=] [--resources-file=] [--no-format] [--xml=] + sqldes2django.py (-h | --help) + sqldes2django.py (--version) + + +Options: + --tgt-dir= Directory di output [default: .]. + --xml= Directory di output [default: modello_database.xml]. + --models-file= Nome del file dei modelli [default: /models.py]. + --serializers-file= Nome del file dei serializers [default: /serializers.py]. + --views-file= Nome del file delle views [default: /views.py]. + --urls-file= Nome del file degli url [default: /urls.py]. + --admin-file= Nome del file dell'admin [default: /admin.py]. + --resources-file= Nome del file delle resources [default: /resources.py]. + --no-format Non formattare l'output con autopep8. + --unmanaged= Crea modelli unmanaged (senza migrazioni): supporta pk e fk multiple, setta database= + --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("", + 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[^(]*)\((?P[^)]*)\)') + 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])) diff --git a/django/business_model_canvas_app/tests.py b/django/business_model_canvas_app/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/django/business_model_canvas_app/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/django/business_model_canvas_app/urls.py b/django/business_model_canvas_app/urls.py new file mode 100644 index 0000000..71eb5d9 --- /dev/null +++ b/django/business_model_canvas_app/urls.py @@ -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 diff --git a/django/business_model_canvas_app/views.py b/django/business_model_canvas_app/views.py new file mode 100644 index 0000000..2a1f53e --- /dev/null +++ b/django/business_model_canvas_app/views.py @@ -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 diff --git a/django/sangue_app/admin.py b/django/sangue_app/admin.py index 099f1ed..28daa66 100644 --- a/django/sangue_app/admin.py +++ b/django/sangue_app/admin.py @@ -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 diff --git a/django/sangue_app/migrations/0002_remove_bmccanaledidistribuzione_canale_and_more.py b/django/sangue_app/migrations/0002_remove_bmccanaledidistribuzione_canale_and_more.py new file mode 100644 index 0000000..b38ee39 --- /dev/null +++ b/django/sangue_app/migrations/0002_remove_bmccanaledidistribuzione_canale_and_more.py @@ -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", + ), + ] diff --git a/django/sangue_app/models.py b/django/sangue_app/models.py index a23343b..17bbb7c 100644 --- a/django/sangue_app/models.py +++ b/django/sangue_app/models.py @@ -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' diff --git a/django/sangue_app/resources.py b/django/sangue_app/resources.py index b6755f4..8b57153 100644 --- a/django/sangue_app/resources.py +++ b/django/sangue_app/resources.py @@ -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 diff --git a/django/sangue_app/serializers.py b/django/sangue_app/serializers.py index 0ef0a5a..93b10f0 100644 --- a/django/sangue_app/serializers.py +++ b/django/sangue_app/serializers.py @@ -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 diff --git a/django/sangue_app/urls.py b/django/sangue_app/urls.py index 8ce3599..cd03e3e 100644 --- a/django/sangue_app/urls.py +++ b/django/sangue_app/urls.py @@ -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) diff --git a/django/sangue_app/views.py b/django/sangue_app/views.py index 27eb9d4..790f3b3 100644 --- a/django/sangue_app/views.py +++ b/django/sangue_app/views.py @@ -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] diff --git a/django/sangue_django/settings.py b/django/sangue_django/settings.py index 0e588e1..18c883c 100644 --- a/django/sangue_django/settings.py +++ b/django/sangue_django/settings.py @@ -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',