, line 1) - Line : 199
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:14:34] "POST /myclass/api/Record_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:15:53.089485 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:15:53] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:16:04.617741 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:16:04.632215 : Record_Survey_Data_No_Token -local variable 'response' referenced before assignment - Line : 204
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:16:04] "POST /myclass/api/Record_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:17:26.952246 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:17:26.953246 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:17:26.953246 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:17:26.953246 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:17:26.953246 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:root:2024-04-04 18:17:26.999895 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:27] "POST /myclass/api/Record_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:17:34.717048 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:17:34.719065 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:17:34.720304 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:17:34.728532 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:17:34.730531 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:17:34.732851 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:34] "POST /myclass/api/get_List_domaine_formation/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:34] "POST /myclass/api/get_List_domaine_formation/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:34] "POST /myclass/api/Get_Suggested_Fr_Cities/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:34] "POST /myclass/api/Get_Suggested_Fr_Cities/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:34] "POST /myclass/api/Get_Suggested_Word/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:17:35] "POST /myclass/api/Get_Suggested_Word/ HTTP/1.1" 200 -
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:18:50.380670 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:18:50.380670 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:18:50.380670 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:18:50.380670 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:18:50.380670 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:root:2024-04-04 18:18:50.413521 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:18:50.416525 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:18:50] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:18:50] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:04.604832 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:04] "POST /myclass/api/Record_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:07.010862 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:07.013276 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:07.015276 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:07.017826 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:07.018806 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:07.021431 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/get_List_domaine_formation/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/get_List_domaine_formation/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/Get_Suggested_Fr_Cities/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/Get_Suggested_Fr_Cities/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/Get_Suggested_Word/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:07] "POST /myclass/api/Get_Suggested_Word/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.132631 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.134701 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/get_all_class/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.444479 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.448893 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.452005 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.457528 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.462584 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.466716 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.471085 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.482326 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.487558 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.502914 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.511653 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.514639 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.521529 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.529840 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.534295 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.539828 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.547344 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.561855 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.565063 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.574198 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.593348 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.596344 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.598346 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.604690 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.608707 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.617473 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.623118 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.632545 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.636742 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.643835 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.649099 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.657975 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.664480 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.668478 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.673466 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.686955 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.692863 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.698071 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.706817 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.716025 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.721308 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.724775 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.730815 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.737829 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.742951 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.748950 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.754973 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.765279 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.771077 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.779410 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.789651 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.793664 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.803001 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.807278 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.811822 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.820810 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.825808 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.831891 : Security check : IP adresse '127.0.0.1' connected
+INFO:root:2024-04-04 18:19:08.834297 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/getRecodedClassImage_from_front/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:08.873464 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSessionFormation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:08] "POST /myclass/api/GetActiveSession_Cities_And_Distance_Formation_List/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:16.198301 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:16] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:16.204773 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:16] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:23.722503 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:23] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:19:23.731529 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:19:23] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:root:2024-04-04 18:21:51.923711 : Security check : IP adresse '127.0.0.1' connected
+INFO:werkzeug:127.0.0.1 - - [04/Apr/2024 18:21:51] "POST /myclass/api/Get_Given_Survey_Data_No_Token/ HTTP/1.1" 200 -
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:29:24.426058 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:29:24.426058 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:29:24.426058 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:29:24.426058 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:29:24.426058 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:32:12.945316 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:32:12.945316 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:32:12.945316 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:32:12.945316 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:32:12.945316 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:33:12.218681 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:33:12.218681 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:33:12.218681 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:33:12.218681 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:33:12.218681 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:42:42.020516 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:42:42.020516 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:42:42.020516 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:42:42.020516 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:42:42.020516 : ++ LMS_BAS_URL mysy-training.com/ ++
+INFO:werkzeug:[31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
+ * Running on http://localhost:5001
+INFO:werkzeug:[33mPress CTRL+C to quit[0m
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:42:51.214383 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:42:51.214383 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:42:51.214383 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:42:51.214383 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:42:51.214383 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:43:33.216759 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:43:33.217759 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:43:33.217759 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:43:33.217759 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:43:33.217759 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:43:56.693783 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:43:56.693783 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:43:56.693783 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:43:56.693783 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:43:56.693783 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:44:13.047936 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:44:13.048923 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:44:13.048923 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:44:13.048923 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:44:13.048923 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:44:33.078731 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:44:33.078731 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:44:33.078731 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:44:33.078731 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:44:33.078731 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:44:59.191612 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:44:59.192907 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:44:59.192907 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:44:59.192907 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:44:59.192907 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:45:16.410195 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:45:16.410195 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:45:16.410195 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:45:16.410195 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:45:16.410195 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:46:02.206578 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:46:02.206578 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:46:02.206578 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:46:02.206578 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:46:02.206578 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:46:40.710167 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:46:40.710167 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:46:40.710167 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:46:40.710167 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:46:40.710167 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:49:48.645751 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:49:48.645751 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:49:48.645751 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:49:48.645751 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:49:48.645751 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\E_Sign_Document.py', reloading
+INFO:werkzeug: * Restarting with stat
+INFO:root:2024-04-04 18:55:53.543625 : ++++ ENVIRONNEMENT DEVELOPPEMENT ++++
+INFO:root:2024-04-04 18:55:53.544626 : ++ DATABASE mongodb://localhost:27017/cherifdb_dev ++
+INFO:root:2024-04-04 18:55:53.544626 : ++ DBNAME Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'cherifdb_dev') ++
+INFO:root:2024-04-04 18:55:53.544626 : ++ FLASK PORT 5001 ++
+INFO:root:2024-04-04 18:55:53.544626 : ++ LMS_BAS_URL mysy-training.com/ ++
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 877-541-979
+INFO:werkzeug: * Detected change in 'C:\\Users\\billa\\Documents\\myclass.com\\Siteweb\\Production\\Ela_back\\Back_Office\\survey_mgt.py', reloading
+INFO:werkzeug: * Restarting with stat
diff --git a/formulaire_mgt.py b/formulaire_mgt.py
index ddd6412..5f31c15 100644
--- a/formulaire_mgt.py
+++ b/formulaire_mgt.py
@@ -520,7 +520,7 @@ def Delete_Formulaire(diction):
"""
-Recuperer la listes des formulaire d'un partenaire
+Recuperer la listes des formulaire d'un partenaire, sans filter
"""
def Get_List_Formulaire(diction):
try:
@@ -582,6 +582,88 @@ def Get_List_Formulaire(diction):
return False, " Impossible de récupérer la liste des formulaires "
+
+"""
+Recuperer la listes des formulaire d'un partenaire, AVEC filter
+"""
+def Get_List_Formulaire_with_filter(diction):
+ try:
+ diction = mycommon.strip_dictionary(diction)
+
+ """
+ Verification des input acceptés
+ """
+ field_list = ['token', 'code', 'nom', 'description' ]
+
+ incom_keys = diction.keys()
+ for val in incom_keys:
+ if val not in field_list and val.startswith('my_') is False:
+ mycommon.myprint(str(
+ inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification des champs obligatoires
+ """
+ field_list_obligatoire = ['token',]
+
+ for val in field_list_obligatoire:
+ if val not in diction:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification de l'identité et autorisation de l'entité qui
+ appelle cette API
+ """
+ token = ""
+ if ("token" in diction.keys()):
+ if diction['token']:
+ token = diction['token']
+
+ local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
+ if (local_status is not True):
+ return local_status, my_partner
+
+ filt_code = {}
+ if ("code" in diction.keys()):
+ filt_code = {'code': {'$regex': str(diction['code']), "$options": "i"}}
+
+ filt_nom = {}
+ if ("nom" in diction.keys()):
+ filt_nom = {'nom': {'$regex': str(diction['nom']), "$options": "i"}}
+
+ filt_description = {}
+ if ("description" in diction.keys()):
+ filt_description = {'description': {'$regex': str(diction['description']), "$options": "i"}}
+
+
+ RetObject = []
+ val_tmp = 0
+
+ qry = {"partner_owner_recid": str(my_partner['recid']), 'valide': '1', 'locked': '0'}
+ query_with_filter = {'$and': [qry, filt_code, filt_nom, filt_description]}
+
+ for New_retVal in MYSY_GV.dbname['formulaire'].find(query_with_filter).sort([("_id", pymongo.DESCENDING), ]):
+ user = New_retVal
+ user['id'] = str(val_tmp)
+ val_tmp = val_tmp + 1
+
+ RetObject.append(mycommon.JSONEncoder().encode(user))
+
+ return True, RetObject
+
+
+ except Exception as e:
+ exc_type, exc_obj, exc_tb = sys.exc_info()
+ mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
+ return False, " Impossible de récupérer la liste des formulaires "
+
+
+
+
+
"""
Fonction pour recuperer les données d'un formulaire données
"""
diff --git a/main.py b/main.py
index d2b42a2..5eaca57 100644
--- a/main.py
+++ b/main.py
@@ -80,6 +80,7 @@ import paiement_condition as paiement_condition
import E_Sign_Document as E_Sign_Document
import competence as competence
import formulaire_mgt as formulaire_mgt
+import survey_mgt as survey_mgt
app = Flask(__name__)
@@ -8230,7 +8231,7 @@ def Delete_Formulaire():
"""
-API pour recuperer la listes des formulaire d'un partenaire
+API pour recuperer la listes des formulaire d'un partenaire, sans filtre
"""
@app.route('/myclass/api/Get_List_Formulaire/', methods=['POST','GET'])
@crossdomain(origin='*')
@@ -8243,6 +8244,20 @@ def Get_List_Formulaire():
+"""
+API pour recuperer la listes des formulaire d'un partenaire, avec filtre
+"""
+@app.route('/myclass/api/Get_List_Formulaire_with_filter/', methods=['POST','GET'])
+@crossdomain(origin='*')
+def Get_List_Formulaire_with_filter():
+ # On recupere le corps (payload) de la requete
+ payload = mycommon.strip_dictionary (request.form.to_dict())
+ print(" ### Get_List_Formulaire_with_filter payload = ",payload)
+ status, retval = formulaire_mgt.Get_List_Formulaire_with_filter(payload)
+ return jsonify(status=status, message=retval)
+
+
+
"""
API pour recuperer les données d'un formulaire données
"""
@@ -8271,6 +8286,34 @@ def Update_Formulaire():
+"""
+API pour recuperer les données d'une enquete
+"""
+@app.route('/myclass/api/Get_Given_Survey_Data_No_Token/', methods=['POST','GET'])
+@crossdomain(origin='*')
+def Get_Given_Survey_Data_No_Token():
+ # On recupere le corps (payload) de la requete
+ payload = mycommon.strip_dictionary (request.form.to_dict())
+ print(" ### Get_Given_Survey_Data_No_Token payload = ",payload)
+ status, retval = survey_mgt.Get_Given_Survey_Data_No_Token(payload)
+ return jsonify(status=status, message=retval)
+
+
+"""
+API pour enregistrer les resultat d'une enquete
+"""
+@app.route('/myclass/api/Record_Survey_Data_No_Token/', methods=['POST','GET'])
+@crossdomain(origin='*')
+def Record_Survey_Data_No_Token():
+ # On recupere le corps (payload) de la requete
+ payload = mycommon.strip_dictionary (request.form.to_dict())
+ print(" ### Record_Survey_Data_No_Token payload = ",payload)
+ status, retval = survey_mgt.Record_Survey_Data_No_Token(payload)
+ return jsonify(status=status, message=retval)
+
+
+
+
if __name__ == '__main__':
print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD)
diff --git a/survey_mgt.py b/survey_mgt.py
new file mode 100644
index 0000000..3d79373
--- /dev/null
+++ b/survey_mgt.py
@@ -0,0 +1,530 @@
+"""
+Ce document permet de gerer les "enquetes" avec utilisation des formulaires
+
+"""
+import ast
+
+import bson
+import pymongo
+from pymongo import MongoClient
+import json
+from bson import ObjectId
+import re
+from datetime import datetime
+import prj_common as mycommon
+import secrets
+import inspect
+import sys, os
+import csv
+import pandas as pd
+from pymongo import ReturnDocument
+import GlobalVariable as MYSY_GV
+from math import isnan
+import GlobalVariable as MYSY_GV
+import ela_index_bdd_classes as eibdd
+import email_mgt as email
+import jinja2
+from flask import send_file
+from xhtml2pdf import pisa
+from email.message import EmailMessage
+from email.mime.text import MIMEText
+from email import encoders
+import smtplib
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.mime.base import MIMEBase
+from email import encoders
+
+
+"""
+Fontion pour recupérer les données d'une enquete données
+"""
+
+def Get_Given_Survey_Data_No_Token(diction):
+ try:
+ diction = mycommon.strip_dictionary(diction)
+
+ """
+ Verification des input acceptés
+ """
+ field_list = ['survey_id' ]
+
+ incom_keys = diction.keys()
+ for val in incom_keys:
+ if val not in field_list and val.startswith('my_') is False:
+ mycommon.myprint(str(
+ inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification des champs obligatoires
+ """
+ field_list_obligatoire = [ 'survey_id']
+
+ for val in field_list_obligatoire:
+ if val not in diction:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification de l'identité et autorisation de l'entité qui
+ appelle cette API
+ """
+ token = ""
+ if ("token" in diction.keys()):
+ if diction['token']:
+ token = diction['token']
+
+
+
+ RetObject = []
+ val_tmp = 0
+
+ qry = { 'statut':'0', 'valide': '1', 'locked': '0', '_id':ObjectId(str(diction['survey_id']))}
+
+
+ for New_retVal in MYSY_GV.dbname['survey'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
+ user = New_retVal
+ user['id'] = str(val_tmp)
+ val_tmp = val_tmp + 1
+
+
+ class_title = ""
+ session_code = ""
+ session_title = ""
+ session_code_date_debut = ""
+ session_code_date_fin = ""
+
+
+ if( "session_id" in New_retVal.keys() and New_retVal['session_id']):
+ # On va recuperer les données de la session
+ my_session_data = MYSY_GV.dbname['session_formation'].find_one( {"partner_owner_recid": str(New_retVal['partner_owner_recid']), 'valide': '1', '_id':ObjectId(str(New_retVal['session_id']))})
+ if( my_session_data and "class_internal_url" in my_session_data.keys() ):
+ my_class_data = MYSY_GV.dbname['myclass'].find_one(
+ {"partner_owner_recid":str(New_retVal['partner_owner_recid']), 'valide': '1',
+ 'internal_url': str(my_session_data['class_internal_url'])})
+
+ if( my_class_data and "title" in my_class_data.keys() ):
+ class_title = my_class_data['title']
+ session_code = my_session_data['code_session']
+ session_title = my_session_data['titre']
+ session_code_date_debut = my_session_data['date_debut']
+ session_code_date_fin = my_session_data['date_fin']
+
+
+ user['class_title'] = class_title
+ user['session_code'] = session_code
+ user['session_title'] = session_title
+ user['session_code_date_debut'] = session_code_date_debut
+ user['session_code_date_fin'] = session_code_date_fin
+
+ """
+ Recuperation des données du formulaire (question)
+ """
+ list_questions = []
+ if( "formulaire_id" in New_retVal.keys() ):
+ my_formulaire_data = MYSY_GV.dbname['formulaire'].find_one( {"partner_owner_recid": str(New_retVal['partner_owner_recid']), 'valide': '1', 'locked':'0', '_id':ObjectId(str(New_retVal['formulaire_id']))})
+
+ if(my_formulaire_data and "list_questions" in my_formulaire_data.keys() ):
+ list_questions = my_formulaire_data['list_questions']
+
+ user['list_questions'] = list_questions
+
+ RetObject.append(mycommon.JSONEncoder().encode(user))
+
+ return True, RetObject
+
+
+ except Exception as e:
+ exc_type, exc_obj, exc_tb = sys.exc_info()
+ mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
+ return False, " Impossible de récupérer les données "
+
+
+
+"""
+Cette fonction enregistrer le resultat d'un survey
+"""
+
+def Record_Survey_Data_No_Token(diction):
+ try:
+ diction = mycommon.strip_dictionary(diction)
+
+ """
+ Verification des input acceptés
+ """
+ field_list = ['survey_id', "list_response" ]
+
+ incom_keys = diction.keys()
+ for val in incom_keys:
+ if val not in field_list and val.startswith('my_') is False:
+ mycommon.myprint(str(
+ inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification des champs obligatoires
+ """
+ field_list_obligatoire = [ 'survey_id', "list_response" ]
+
+ for val in field_list_obligatoire:
+ if val not in diction:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Les informations fournies sont incorrectes"
+
+ """
+ Verification de l'identité et autorisation de l'entité qui
+ appelle cette API
+ """
+ token = ""
+ if ("token" in diction.keys()):
+ if diction['token']:
+ token = diction['token']
+
+ """
+ Verifier que l'enquete est valide
+ """
+ qry = {'statut': '0', 'valide': '1', 'locked': '0', '_id': ObjectId(str(diction['survey_id']))}
+
+ is_valide_survey = MYSY_GV.dbname['survey'].count_documents(qry)
+
+ if( is_valide_survey <= 0 ):
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " L'identifiant de l'enquête est invalide ")
+ return False, " L'identifiant de l'enquête est invalide "
+
+
+ JSON_user_response = ast.literal_eval(diction['list_response'])
+ list_keys = list(JSON_user_response.keys())
+ global_response = []
+ for my_key in list_keys:
+ question_id = my_key
+ response = JSON_user_response[my_key]
+ node = {"question_id":question_id, "response":response}
+ global_response.append(node)
+
+
+
+ """
+ On va enregister les reponse et changer le statut
+ """
+ mydata = {}
+ mydata['date_update'] = str(datetime.now())
+ mydata['update_by'] = ""
+ mydata['statut'] = "1"
+ mydata['user_response'] = global_response
+
+ result = MYSY_GV.dbname['survey'].find_one_and_update(
+ {'statut': '0', 'valide': '1', 'locked': '0', '_id': ObjectId(str(diction['survey_id']))},
+ {"$set": mydata},
+ upsert=False,
+ return_document=ReturnDocument.AFTER
+ )
+ if (result is None or "_id" not in result.keys()):
+ mycommon.myprint(
+ " Impossible de mettre à jour le formulaire (2) ")
+ return False, " Impossible de mettre à jour le formulaire (2) "
+
+
+ return True, " Le formulaire a été correctement mis à jour"
+
+
+ except Exception as e:
+ exc_type, exc_obj, exc_tb = sys.exc_info()
+ mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
+ return False, " Impossible d'enregister les informations "
+
+
+
+"""
+Survey for enduser : Cette fonction créer une enquete en prenant à partir d'une liste d'inscri
+"""
+def Add_Survey_Tab_Inscrit(diction):
+ try:
+ field_list_obligatoire = ['session_id', 'token', 'tab_ids', 'formulaire_id']
+
+ for val in field_list_obligatoire:
+ if val not in diction:
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Les informations fournies sont incorrectes"
+
+ my_token = ""
+ if ("token" in diction.keys()):
+ if diction['token']:
+ my_token = diction['token']
+
+ local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
+ if (local_status is not True):
+ return local_status, my_partner
+
+ my_inscription_ids = ""
+ if ("tab_ids" in diction.keys()):
+ if diction['tab_ids']:
+ my_inscription_ids = diction['tab_ids']
+
+ tab_my_inscription_ids = str(my_inscription_ids).split(",")
+ for my_inscription_id in tab_my_inscription_ids:
+
+ # Verifier que les inscriptions sont valides pour cette session
+ tmp_count = MYSY_GV.dbname['inscription'].count_documents({'session_id': str(diction['session_id']),
+ '_id':ObjectId(str(my_inscription_id)),
+ 'partner_owner_recid': str(my_partner['recid']),
+ 'valide':'1'})
+
+ if (tmp_count > 0):
+ mycommon.myprint(str(inspect.stack()[0][3]) + " L'identifiant de l'apprenant est invalide ")
+ return False, " L'identifiant de l'apprenant est invalide "
+
+
+ """
+ Verifier la valididé du formulaire
+ """
+ is_valide_form = MYSY_GV.dbname['formulaire'].count_documents({'_id':ObjectId(str(diction['formulaire_id'])),
+ 'valide':'1',
+ 'locked':'0',
+ 'partner_owner_recid':str(my_partner['recid'])})
+
+ if( is_valide_form <= 0 ):
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " L'identifiant du formulaire est invalide ")
+ return False, " L'identifiant du formulaire est invalide "
+
+
+
+ """
+ Les inscriptions etant toutes valides, on va preceder à la creation de l'enquete
+ """
+ for my_inscription_id in tab_my_inscription_ids:
+ # Recuperation des données de l'inscript
+ local_Insc_retval = MYSY_GV.dbname['inscription'].find_one({'session_id': str(diction['session_id']),
+ '_id':ObjectId(str(my_inscription_id)),
+ 'partner_owner_recid': str(my_partner['recid']),
+ 'valide': '1'
+ })
+
+ if(local_Insc_retval is None ):
+ mycommon.myprint(str(inspect.stack()[0][3]) + " L'identifiant de l'inscrit est invalide ")
+ return False, " L'identifiant de l'inscrit est invalide "
+
+ server_diction = {}
+ server_diction['token'] = diction['token']
+ server_diction['session_id'] = diction['session_id']
+ server_diction['inscrit_id'] = str(local_Insc_retval['_id'])
+ server_diction['formulaire_id'] = diction['formulaire_id']
+
+
+
+
+ return True, " La demande d'enquete a été créée "
+
+
+ except Exception as e:
+ exc_type, exc_obj, exc_tb = sys.exc_info()
+ mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
+ return False, " Impossible de créer le formulaire "
+
+"""
+Cette fonction envoi un formulaire pour inscrit
+"""
+def Send_One_Survey_To_Inscrit(diction):
+ try:
+ field_list_obligatoire = ['session_id', 'token', 'inscrit_id', 'formulaire_id']
+
+ for val in field_list_obligatoire:
+ if val not in diction:
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Les informations fournies sont incorrectes"
+
+ my_token = ""
+ if ("token" in diction.keys()):
+ if diction['token']:
+ my_token = diction['token']
+
+ local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
+ if (local_status is not True):
+ return local_status, my_partner
+
+ """
+ Recuperer les données du formulaire
+ """
+ my_formulaire_data = MYSY_GV.dbname['formulaire'].find_one({'_id':ObjectId(str(diction['formulaire_id'])),
+ 'valide':'1',
+ 'locked':'1',
+ 'partner_owner_recid':str(my_partner['recid'])})
+
+ if( my_formulaire_data is None):
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " L'identifiant du formulaire est invalide ")
+ return False, " L'identifiant du formulaire est invalide "
+
+ """
+ Recuperation des données de la session
+ """
+ my_session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id'])),
+ 'valide': '1',
+ 'locked': '1',
+ 'partner_owner_recid': str(my_partner['recid'])})
+
+ if (my_session_data is None):
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " L'identifiant de la session est invalide ")
+ return False, " L'identifiant de la session est invalide "
+
+
+ """
+ Recuperer les données de l'inscrit
+ """
+ my_inscrit_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['inscrit_id'])),
+ 'valide': '1',
+ 'locked': '1',
+ 'partner_owner_recid': str(
+ my_partner['recid'])})
+
+ if (my_inscrit_data is None):
+ mycommon.myprint(
+ str(inspect.stack()[0][
+ 3]) + " L'identifiant de l'inscrit est invalide ")
+ return False, " L'identifiant de l'inscrit est invalide "
+
+
+
+ new_survey_data = {}
+ new_survey_data['email'] = my_inscrit_data['email']
+ new_survey_data['formulaire_id'] = str(diction['formulaire_id'])
+ new_survey_data['partner_owner_recid'] = str(my_partner['recid'])
+ new_survey_data['session_id'] = str(diction['session_id'])
+
+ new_survey_data['statut'] = "0"
+ new_survey_data['type'] = "1"
+ new_survey_data['date_update'] = str(datetime.now())
+ new_survey_data['update_by'] = str(my_partner['_id'])
+ new_survey_data['created_by'] = str(my_partner['_id'])
+
+ inserted_id = MYSY_GV.dbname['survey'].insert_one(new_survey_data).inserted_id
+
+ if (not inserted_id):
+ mycommon.myprint(" Impossible de créer l'enquete (2) ")
+ return False, " Impossible de créer l'enquete (2) "
+
+ servey_url = MYSY_GV.CLIENT_URL_BASE+"Survey/"+str(inserted_id)
+
+ """
+ A présent l'enquete est créée, il faut donc envoyer
+ le mail avec l'url à la personne qui doit remplir l'enquete
+ """
+
+ """
+ Recuperation des parametre SMTP du partner si le client a decidé d'utiliser son propre smpt
+ """
+ partner_own_smtp_value = "0"
+ partner_own_smtp = MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'partner_smtp',
+ 'valide': '1',
+ 'locked': '0'})
+
+ if (partner_own_smtp and "config_value" in partner_own_smtp.keys()):
+ partner_own_smtp_value = partner_own_smtp['config_value']
+
+ if (str(partner_own_smtp_value) == "1"):
+ partner_SMTP_COUNT_password = str(MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'smtp_user_pwd',
+ 'valide': '1',
+ 'locked': '0'}, {'config_value': 1})['config_value'])
+
+ partner_SMTP_COUNT_smtpsrv = str(MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'smtp_server',
+ 'valide': '1',
+ 'locked': '0'}, {'config_value': 1})['config_value'])
+
+ partner_SMTP_COUNT_user = str(MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'smtp_user',
+ 'valide': '1',
+ 'locked': '0'}, {'config_value': 1})['config_value'])
+
+ partner_SMTP_COUNT_From_User = str(MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'smtp_count_from_name',
+ 'valide': '1',
+ 'locked': '0'}, {'config_value': 1})['config_value'])
+
+ partner_SMTP_COUNT_port = str(MYSY_GV.dbname['base_partner_setup'].find_one(
+ {'partner_owner_recid': str(my_partner['recid']),
+ 'config_name': 'smtp_count_port',
+ 'valide': '1',
+ 'locked': '0'}, {'config_value': 1})['config_value'])
+
+ if (str(partner_own_smtp_value) == "1"):
+ smtpserver = smtplib.SMTP(partner_SMTP_COUNT_smtpsrv, partner_SMTP_COUNT_port)
+ else:
+ smtpserver = smtplib.SMTP(MYSY_GV.O365_SMTP_COUNT_smtpsrv, MYSY_GV.O365_SMTP_COUNT_port)
+
+ html = """\
+
+
+ Hi,
+ Merci de suivre l'enquete :"""+str(servey_url)+"""
+ SMTP Server for Testing: Cloud-based or Local?
+ Feel free to let us know what content would be useful for you!
+
+
+ """
+
+ html_mime = MIMEText(html, 'html')
+
+ # Creation de l'email à enoyer
+ msg = MIMEMultipart("alternative")
+
+ if (str(partner_own_smtp_value) == "1"):
+ msg.attach(html_mime)
+ msg['From'] = partner_SMTP_COUNT_From_User
+ msg['Bcc'] = 'contact@mysy-training.com'
+ msg['Subject'] = " Demande d'enquete "
+ # msg['to'] = "billardman01@hotmail.com"
+
+ msg['to'] = str(my_inscrit_data['email'])
+
+
+ smtpserver.ehlo()
+ smtpserver.starttls()
+ smtpserver.login(partner_SMTP_COUNT_user, partner_SMTP_COUNT_password)
+
+ else:
+ msg.attach(html_mime)
+ msg['From'] = MYSY_GV.O365_SMTP_COUNT_From_User
+ msg['Bcc'] = 'contact@mysy-training.com'
+ msg['Subject'] = " Demande d'enquete "
+ # msg['to'] = "billardman01@hotmail.com"
+
+ msg['to'] = str(my_inscrit_data['email'])
+
+ smtpserver.ehlo()
+ smtpserver.starttls()
+ smtpserver.login(MYSY_GV.O365_SMTP_COUNT_user, MYSY_GV.O365_SMTP_COUNT_password)
+
+ val = smtpserver.send_message(msg)
+ smtpserver.close()
+ print(" Email envoyé " + str(val))
+
+ return True, "OK"
+
+ except Exception as e:
+ exc_type, exc_obj, exc_tb = sys.exc_info()
+ mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
+ return False, " Impossible d'envoyer l'enquete unitaire "
+
+"""
+Survey for customer : Cette fonction créer une enquete en prenant à partir d'une liste d'inscri
+"""
\ No newline at end of file