From c75e173eb911625e1ef708bc1f59b72666610656 Mon Sep 17 00:00:00 2001
From: Campos Airas <d.campos@ibermatica.com>
Date: Mon, 20 Mar 2023 15:46:46 +0100
Subject: [PATCH] [IMP] added code changes

---
 README.md        |   3 +-
 app.py           |  11 +++++
 model.pkcls      | Bin 0 -> 75973 bytes
 requirements.txt | 115 ++++++++++++++++++++++++++++++++++++++++++--
 src/app.py       | 122 ++++++++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 243 insertions(+), 8 deletions(-)
 create mode 100644 model.pkcls

diff --git a/README.md b/README.md
index 88087a8..a4d1a4d 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # Recommendation Engine - Alternative
 
-
+INSTALL
+python -m pip install --index-url https://support.bayesfusion.com/pysmile-B/ pysmile
 
 ## Getting started
 
diff --git a/app.py b/app.py
index bb94bca..111f00f 100644
--- a/app.py
+++ b/app.py
@@ -219,6 +219,17 @@ def planner_plan_detail():
     """
     return planner.planner_plan_detail(cnx, request)
 
+@app.get("/database/store/kpi")
+def database_store_kpi():
+    """
+    It stores the Kpis that have been selected.
+    The json provided should have the same format that json with the kpi
+    """
+    #if request.json:
+    if request:
+        return database.database_store_kpi(cnx, request)
+    else:
+        return constants.ERROR_JSON_NEEDED
 
 # MAIN: ----------------------------------------------------------------------------------------------------------------
 if __name__ == "__main__":
diff --git a/model.pkcls b/model.pkcls
new file mode 100644
index 0000000000000000000000000000000000000000..e411d12e79697cd958f093cb976f947346f70662
GIT binary patch
literal 75973
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

literal 0
HcmV?d00001

diff --git a/requirements.txt b/requirements.txt
index a048e94..6bfca5c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,111 @@
-mysql-connector-python~=8.0.31
-Flask~=2.2.2
+anyio==3.6.2
+AnyQt==0.2.0
+asttokens==2.2.1
+backcall==0.2.0
+baycomp==1.0.2
+Bottleneck==1.3.7
+CacheControl==0.12.12
+certifi==2022.12.7
+cffi==1.15.1
+chardet==5.1.0
+charset-normalizer==3.0.1
+click==8.1.3
+comm==0.1.2
+commonmark==0.9.1
+contourpy==1.0.7
+cryptography==39.0.2
+cycler==0.11.0
+debugpy==1.6.6
+decorator==5.1.1
+dictdiffer==0.9.0
+docopt==0.6.2
+docutils==0.19
+et-xmlfile==1.1.0
+executing==1.2.0
+filelock==3.9.0
+Flask==2.2.3
+fonttools==4.39.0
+h11==0.14.0
+httpcore==0.16.3
+httpx==0.23.3
+idna==3.4
+importlib-metadata==6.0.0
+importlib-resources==5.12.0
+ipykernel==6.21.3
+ipython==8.11.0
+ipython-genutils==0.2.0
+itsdangerous==2.1.2
+jaraco.classes==3.2.3
+jedi==0.18.2
+jeepney==0.8.0
+Jinja2==3.1.2
+joblib==1.2.0
+jupyter_client==8.0.3
+jupyter_core==5.2.0
+keyring==23.13.1
+keyrings.alt==4.2.0
+kiwisolver==1.4.4
+MarkupSafe==2.1.2
+matplotlib==3.7.1
+matplotlib-inline==0.1.6
+more-itertools==9.1.0
+msgpack==1.0.5
+mysql-connector-python~=8.0.32
+nest-asyncio==1.5.6
+networkx==3.0
 numpy~=1.23.5
-requests~=2.28.1
-pandas~=1.5.1
-utm~=0.7.0
\ No newline at end of file
+openpyxl==3.1.2
+openTSNE==0.7.1
+orange-canvas-core==0.1.29
+orange-widget-base==4.19.0
+Orange3==3.34.1
+packaging==23.0
+pandas==1.5.3
+parso==0.8.3
+pexpect==4.8.0
+pickleshare==0.7.5
+Pillow==9.4.0
+pipreqs==0.4.11
+platformdirs==3.1.1
+prompt-toolkit==3.0.38
+protobuf==3.20.3
+psutil==5.9.4
+ptyprocess==0.7.0
+pure-eval==0.2.2
+pycparser==2.21
+Pygments==2.14.0
+pyparsing==3.0.9
+pyqtgraph==0.13.2
+pysmile==2.0.10
+python-dateutil==2.8.2
+python-louvain==0.16
+pytz==2022.7.1
+pywin32==305
+pywin32-ctypes==0.2.0
+PyYAML==6.0
+pyzmq==25.0.0
+qasync==0.23.0
+qtconsole==5.4.1
+QtPy==2.3.0
+requests=2.28.2
+rfc3986==1.5.0
+scikit-learn==1.1.3
+scipy==1.10.1
+SecretStorage==3.3.3
+serverfiles==0.3.1
+six==1.16.0
+sniffio==1.3.0
+stack-data==0.6.2
+threadpoolctl==3.1.0
+tornado==6.2
+traitlets==5.9.0
+typing_extensions==4.5.0
+urllib3==1.26.14
+utm==0.7.0
+wcwidth==0.2.6
+Werkzeug==2.2.3
+xlrd==2.0.1
+XlsxWriter==3.0.9
+xmltodict==0.13.0
+yarg==0.1.9
+zipp==3.14.0
diff --git a/src/app.py b/src/app.py
index 5b04d7c..ad17184 100644
--- a/src/app.py
+++ b/src/app.py
@@ -4,16 +4,19 @@
 Created on: 16/01/2023
 @author: Andoni Aranguren Ubierna
 @updates: Sergio Campos 02-03/2023
-
 """
+
+import pickle
+import pysmile
 import sys
+import json
 print(sys.path)
 from src import constants
 
 import mysql.connector
 from flask import Flask, request, render_template
 
-from src import recommender, database, planner, modal_choice
+from src import configuration, recommender, database, planner, modal_choice
 
 app = Flask(__name__)
 cnx = None
@@ -24,6 +27,111 @@ def index():
     return render_template("index.html")
 
 
+
+# MODAL CHOICE: -------------------------------------------------------------------------------------------------------
+@app.get("/modal_choice/estimation")
+def modal_choice_estimation():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return modal_choice.modal_choice_estimation(cnx, request) 
+
+@app.get("/modal_choice/getProbabilites")
+def modal_choice_getprobabilities():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return modal_choice.modal_choice_getprobabilities(cnx, request)
+
+@app.get("/modal_choice/setProbabilites")
+def modal_choice_setprobabilities():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return modal_choice.modal_choice_setprobabilities(cnx, request)
+
+
+@app.get("/modal_choice/getDependencies")
+def modal_choice_getdependencies():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return modal_choice.modal_choice_getdependencies(cnx, request)
+
+
+@app.get("/modal_choice/getValues")
+def modal_choice_getvalues():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return modal_choice.modal_choice_getvalues(cnx, request)
+
+
+
+
+
+#Dexi configuration: -------------------------------------------------------------------------------------------------
+@app.get("/recommender/configuration/getMatrix")
+def configuration_getmatrix():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.getmatrix(cnx, request) 
+
+
+@app.get("/recommender/configuration/setMatrix")
+def configuration_setmatrix():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.setmatrix(cnx, request)
+
+
+@app.get("/recommender/configuration/getSliders")
+def configuration_getsliders():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.getsliders(cnx, request)
+
+
+@app.get("/recommender/configuration/setSliders")
+def configuration_setsliders():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.setsliders(cnx, request)
+
+
+
+@app.get("/recommender/configuration/getEvaluationFile")
+def configuration_getevaluationfile():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.getevaluationfile(cnx, request)
+
+
+@app.get("/recommender/configuration/getConfigurationFile")
+def configuration_getconfigurationfile():
+    """
+    We ask for actions based on popularity of the actions
+    :return: json
+    """
+    return configuration.getconfigurationfile(cnx, request)
+
+
+
 # RECOMMENDERS: -------------------------------------------------------------------------------------------------------
 @app.get("/recommender/popularity")
 def recommender_popularity():
@@ -101,6 +209,15 @@ def database_save_plan():
     else:
         return constants.ERROR_JSON_NEEDED
 
+# plan_detail PLANNER: -------------------------------------------------------------------------------------------------------
+@app.get("/planner/plan_detail")
+def planner_plan_detail():
+    """
+    It calculates the best plan_detail traversing streets and reordering the intermediate nodes provided.
+    :return: json with the plan_detail
+    """
+    return planner.planner_plan_detail(cnx, request)
+
 @app.get("/database/store/kpi")
 def database_store_kpi():
     """
@@ -125,5 +242,6 @@ def planner_plan_detail():
 
 # MAIN: ----------------------------------------------------------------------------------------------------------------
 if __name__ == "__main__":
+    model = pickle.load(open('model.pkcls', 'rb'))
     cnx = mysql.connector.connect(**constants.DDBB_CONFIG)
     app.run(debug=True, host='0.0.0.0')
-- 
GitLab