Elyos_FI_Back_Office/GlobalVariable.py

908 lines
26 KiB
Python

'''
Ce fichier contient les variables globales du systeme
'''
from pymongo import MongoClient
from spellchecker import SpellChecker
from nltk.stem.snowball import SnowballStemmer
import spacy
import logging
from autocorrect import Speller
from nltk.corpus import stopwords
import ela_spacy_common as lsc
import Env_Data as ENV_DATA
"""
Cette variable definit l'environnement de travail
"""
MYSY_ENV = ENV_DATA.MYSY_ENV
# Cette variable definit l'url de base du server
CLIENT_URL_BASE = ""
if (MYSY_ENV == "PROD"):
CONNECTION_STRING = "mongodb://localhost:27017/cherifdb"
client = MongoClient(CONNECTION_STRING)
dbname = client['cherifdb']
CLIENT_URL_BASE = 'https://www.mysy-training.com/'
MYSY_DEBUG_LEVEL = 0
# Domaine pour le catalogue public
MYSY_PUBLIC_CATALOG_DOMAIN = 'mysy-hosting.online'
"""
REPERTOIRE FTP DES IMAGES DU BLOG
Volontairement on met tous les environnements dans le meme repertoire. C'est un choix
"""
BLOG_FTP_IMG_REPOSITORY = "/var/www/html/blog_imgs/blog_img_prod/"
BLOG_IMG_URL = "https://blogimg.mysy-training.com/"
elif (MYSY_ENV == "DEV"):
CONNECTION_STRING = "mongodb://localhost:27017/cherifdb_dev"
client = MongoClient(CONNECTION_STRING)
dbname = client['cherifdb_dev']
CLIENT_URL_BASE = 'http://localhost:3009/'
MYSY_DEBUG_LEVEL = 1
# Domaine pour le catalogue public
MYSY_PUBLIC_CATALOG_DOMAIN = 'localhost:3009'
"""
REPERTOIRE FTP DES IMAGES DU BLOG
Volontairement on met tous les environnements dans le meme repertoire. C'est un choix
"""
BLOG_FTP_IMG_REPOSITORY = "/var/www/html/blog_imgs/blog_img_prod/"
BLOG_IMG_URL = "https://blogimg.mysy-training.com/"
elif (MYSY_ENV == "REC"):
CONNECTION_STRING = "mongodb://localhost:27017/cherifdb_rec"
client = MongoClient(CONNECTION_STRING)
dbname = client['cherifdb_rec']
CLIENT_URL_BASE = 'https://dev.mysy-training.com/'
MYSY_DEBUG_LEVEL = 1
# Domaine pour le catalogue public
MYSY_PUBLIC_CATALOG_DOMAIN = 'devmysy-hosting.online'
"""
REPERTOIRE FTP DES IMAGES DU BLOG
Volontairement on met tous les environnements dans le meme repertoire. C'est un choix
"""
BLOG_FTP_IMG_REPOSITORY = "/var/www/html/blog_imgs/blog_img_prod/"
BLOG_IMG_URL = "https://blogimg.mysy-training.com/"
elif (MYSY_ENV == "DEM"):
CONNECTION_STRING = "mongodb://localhost:27017/cherifdb_demo"
client = MongoClient(CONNECTION_STRING)
dbname = client['cherifdb_demo']
CLIENT_URL_BASE = 'https://demo.mysy-training.com/'
MYSY_DEBUG_LEVEL = 1
# Domaine pour le catalogue public
MYSY_PUBLIC_CATALOG_DOMAIN = 'demomysy-hosting.online'
"""
REPERTOIRE FTP DES IMAGES DU BLOG
Volontairement on met tous les environnements dans le meme repertoire. C'est un choix
"""
BLOG_FTP_IMG_REPOSITORY = "/var/www/html/blog_imgs/blog_img_prod/"
BLOG_IMG_URL = "https://blogimg.mysy-training.com/"
YTUBES_CONNECTION_STRING = "mongodb://localhost:27017/"
YTUBES_client = MongoClient(YTUBES_CONNECTION_STRING)
YTUBES_dbname = YTUBES_client['mysyvideodb']
"""
Cette Variable definit les port de connexion
en dev ou en production
"""
MYSY_PORT_PROD = 5000
MYSY_PORT_DEV = 5001
MYSY_PORT_REC = 5001
MYSY_PORT_DEM = 5003
'''
Cette Variable defini le nombre minimum
de frequence d'un mot pour qu'il soit indexé.
en gros, dans une text, les mots apparaissent moins de 5 fois sont consideré
comme des mots à faible raisonnance'''
INDEX_MIN_OCCURENCE = 5
## Gle Variables
stemmer = SnowballStemmer(language='french')
nlp = spacy.load("fr_core_news_sm")
spell = SpellChecker(language='fr')
token_fr_pontuation = []
'''
La taille maximal d'un champs à retourner.
Au dela de 300 caractère, le système rame
'''
MAX_CARACT = 300 # Celui est utilisé pour les affichage courts et tronqués, comme sur la page principale du moteur
MAX_CARACT_DEDUIT = 150
TOKEN_SIZE = 25
MAX_CARACT_DETAIL = 1000 # Celui est utilisé pour les affichage globaux (si le texte est trop long, il va tronquer un peut mais cela permet de cadrer un peu les choses
DEBUG_LEVEL = logging.DEBUG
LOG_FILE_NAME = "./Log/log_file.log"
TEMPORARY_DIRECTORY_V2 = "./temp_direct/"
upload_folder = "./Data/"
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'webp'}
logging.basicConfig( level=DEBUG_LEVEL, filename=LOG_FILE_NAME)
AUTORIZED_SOURCE_IPV4=["127.0.0.1", "localhost", "88.170.110.220", "192.168.1.21", "192.168.1.48", "51.77.211.142"]
#assign the default stopwords list to a variable
STOP_WORDS = spacy.lang.fr.stop_words.STOP_WORDS
stopWords = set(stopwords.words('french'))
sentence = "Bouygues a eu une coupure de réseau à Marseille chez ses clients marseillais et son couteau"
lsc.update_stopWords(stopWords)
#print(type(stopWords))
lsc.update_token_fr_pontuation(token_fr_pontuation)
spell_fr = Speller(lang='fr')
'''
Repertoire de stockage de video YouTubes
'''
YTUBES_ENSCRIPT_LOCATION = ""
'''
Email recever des alertes internes
'''
INTERNAL_MAIL_RECEVER = "contact@mysy-training.com"
INTERNAL_MAIL_SENDER = "contact@mysy-training.com"
INTERNAL_TEL_RECEVER = "+33769203945"
INTERNAL_TEL_SENDER = "+33769203945"
'''
Cette variable definit le nombre max
de retour à faire sur une requet de recherche
'''
QUERY_LIMIT_ROW = 50
'''
Cette variable definit le nombre max
retour à faire sur page d'acceuil '''
MAINPAGE_QUERY_LIMIT_ROW =50
'''
Cette variable definit le nombre de mots retourné dans le
cas d'une aide à avec une recherche vide
'''
HELP_WORD_QUERY_LIMIT = 3
'''
Les formats d'image accepté
'''
IMG_FORMAT=['jpg', 'jpeg', 'png', 'jpe', 'webp', 'gif',]
"""
Image au formation PNG UNIQUEMENT
"""
IMG_PNG_FORMAT=['png']
'''
Sendinblue clea API
'''
SENDINBLUE_API_KEY = "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"
'''
Taux de TVA
'''
TVA_TAUX = 0.2
"""
Variable defini le mombre max de mots clés dans une formation
"""
MAX_KEYWORD = 3
"""
Connexion SFTP
"""
#MYSY_FTP_HOST = "192.168.1.21"
MYSY_FTP_HOST = "51.77.211.142"
MYSY_FTP_LOGIN = "mysysftpuser"
MYSY_FTP_PWD = "JvMysedrBsDMy01!+"
if (MYSY_ENV == "DEM"):
MYSY_FTP_HOST = "192.168.1.21"
MYSY_FTP_LOGIN = "mysysftpuser"
MYSY_FTP_PWD = "JvMysedrBsDMy01!+"
"""
Repertoire de depot des factures
"""
#INVOICE_DIRECTORY = "/var/www/html/sftp_iexercice/mysy_invoices"
INVOICE_DIRECTORY = "./Invoices/"
"""
Repertoire pour les liste d'emargement
"""
EMARGEMENT_DIRECTORY = "./Emargement/"
"""
Repertoire racine du ftp ou sont stocké les factures
"""
INVOICE_FTP_DIRECTORY = "https://sftp.iexercice.com/mysy_invoices/"
if (MYSY_ENV == "PROD"):
INVOICE_FTP_LOCAL_STORAGE_DIRECTORY = "/home/mysy_data/mysy_invoices/"
elif (MYSY_ENV == "DEV"):
INVOICE_FTP_LOCAL_STORAGE_DIRECTORY = "/home/mysy_data/mysy_invoices_dev/"
elif (MYSY_ENV == "REC"):
INVOICE_FTP_LOCAL_STORAGE_DIRECTORY = "/home/mysy_data/mysy_invoices_rec/"
elif (MYSY_ENV == "DEM"):
INVOICE_FTP_LOCAL_STORAGE_DIRECTORY = "/home/mysy_data/mysy_invoices_demo/"
"""
Cette Variable definit le nombre de formation associées à retourner
"""
LIMIT_ASSOCIATED_TRAINING = 3
"""
Valeur MAX du display ranking accordé aux compte de type demo
"""
DEMO_RANKING_VALUE = "50"
"""
Sendinblu compte support
"""
SENDINBLUE_API_KEY_SUPPORT = "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"
"""
Variable SMTP de OFFICE 365, suite a l'abandon de sendinblu comme relay stmp
"""
if (MYSY_ENV == "PROD"):
O365_SMTP_COUNT_password = 'Xad47198'
O365_SMTP_COUNT_smtpsrv = "smtp.office365.com"
O365_SMTP_COUNT_user = "support@mysy-training.com"
O365_SMTP_COUNT_From_User = "support@mysy-training.com"
O365_SMTP_COUNT_port = 587
if (MYSY_ENV == "REC"):
O365_SMTP_COUNT_password = 'Xad47198'
O365_SMTP_COUNT_smtpsrv = "smtp.office365.com"
O365_SMTP_COUNT_user = "support@mysy-training.com"
O365_SMTP_COUNT_From_User = "support@mysy-training.com"
O365_SMTP_COUNT_port = 587
if (MYSY_ENV == "DEM"):
O365_SMTP_COUNT_password = 'Xad47198'
O365_SMTP_COUNT_smtpsrv = "smtp.office365.com"
O365_SMTP_COUNT_user = "support@mysy-training.com"
O365_SMTP_COUNT_From_User = "support@mysy-training.com"
O365_SMTP_COUNT_port = 587
if (MYSY_ENV == "DEV"):
"""
O365_SMTP_COUNT_password = 'GomboyaVince1234+'
O365_SMTP_COUNT_smtpsrv = "smtp.office365.com"
O365_SMTP_COUNT_user = "cbalde@mysy-training.com"
O365_SMTP_COUNT_From_User = "cbalde@mysy-training.com"
O365_SMTP_COUNT_port = 587
"""
"""
O365_SMTP_COUNT_password = 'Sod78!526+'
O365_SMTP_COUNT_smtpsrv = "smtp.office365.com"
O365_SMTP_COUNT_user = "communication@mysytraining.fr"
O365_SMTP_COUNT_From_User = "communication@mysytraining.fr"
O365_SMTP_COUNT_port = 587
"""
# Tester le relay smtp perso (maison)
O365_SMTP_COUNT_password = 'cherif'
O365_SMTP_COUNT_smtpsrv = "srvdmz.iexercice.com"
O365_SMTP_COUNT_user = "clientmail-vm2"
O365_SMTP_COUNT_From_User = "clientmail-vm2@iexercice.com"
O365_SMTP_COUNT_port = 587
"""
Repertoire temporaire de telechargement ou de creation de fichier
"""
TEMPORARY_DIRECTORY = "./temp_direct"
"""
Nombre maximum de participants importable par csv
"""
MAX_PARTICIPANT_BY_CSV = 50
"""
Nombre maximum de clients de partner importable par csv
"""
MAX_PARTNER_CLIENT_BY_CSV = 100
"""
Nombre maximum de lignes dans un fichier de planification d'une UE
"""
MAX_EU_PLANIF_BY_CSV = 200
"""
Stripe : Nom des produits et prix et la clé de config
"""
if (MYSY_ENV == "PROD"):
STRIPE_GOLD_PRICE_ID = "price_1NG2HdAbmaEugrFTMbzVRwj1"
STRIPE_GOLD_PRICE_ID_50_OFF = "price_1NG2HsAbmaEugrFTAiHh2SzD"
STRIPE_GOLD_PRICE_ID_95_OFF = "price_1NG2IJAbmaEugrFTMPdMIzNH"
STRIPE_STANDARD_PRICE_ID = "price_1NG2JmAbmaEugrFTBwRDLlbs"
STRIPE_STANDARD_PRICE_ID_50_OFF = "price_1NG2GtAbmaEugrFTyJavt1Lx"
STRIPE_STANDARD_PRICE_ID_95_OFF = "price_1NG2HBAbmaEugrFTaMsDGikP"
STRIPE_STANDARD_PRICE_ID = "price_1MUSoGAbmaEugrFTTjz5lSye"
STRIPE_TEST_PRICE_ID = "price_1MT0f0AbmaEugrFTJjdZZXG7"
STRIPE_CONFIG_KEY_PUB = "pk_live_51LUUfAAbmaEugrFTyfNe4Dj0vbxc5qXQqNs0rztjAKy8oSlc5EEQyJGjA8Z5kXmP2gvUMcYLUBYCIyWWzLCw59RY00PtGInkVf"
STRIPE_CONFIG_API_KEY = "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"
elif (MYSY_ENV == "DEV"):
STRIPE_GOLD_PRICE_ID = "price_1MT3FmAbmaEugrFTZ5vyJRcZ"
STRIPE_GOLD_PRICE_ID_50_OFF = "price_1NEpALAbmaEugrFTCDhlJyo3"
STRIPE_GOLD_PRICE_ID_95_OFF = "price_1NFyUEAbmaEugrFT5sRXixeZ"
STRIPE_STANDARD_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_STANDARD_PRICE_ID_50_OFF = "price_1NEpCOAbmaEugrFTcBnOf89X"
STRIPE_STANDARD_PRICE_ID_95_OFF = "price_1NFySwAbmaEugrFTxrQHhFN9"
STRIPE_TEST_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_CONFIG_KEY_PUB = "pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p"
STRIPE_CONFIG_API_KEY = "sk_test_51LUUfAAbmaEugrFTrWsfcBWZtbBh9r3HCa2sgeyikG808LjSk3bAdFhV6KxgRZ3vFxooa6RE0c5zBkTuOUrKkyjy00BrsIXAPs"
elif (MYSY_ENV == "REC"):
STRIPE_GOLD_PRICE_ID = "price_1MT3FmAbmaEugrFTZ5vyJRcZ"
STRIPE_GOLD_PRICE_ID_50_OFF = "price_1NEpALAbmaEugrFTCDhlJyo3"
STRIPE_GOLD_PRICE_ID_95_OFF = "price_1NFyUEAbmaEugrFT5sRXixeZ"
STRIPE_GOLD_PRICE_ID_100_OFF = "price_1NEpeJAbmaEugrFTXT5OFciX"
STRIPE_STANDARD_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_STANDARD_PRICE_ID_50_OFF = "price_1NEpCOAbmaEugrFTcBnOf89X"
STRIPE_STANDARD_PRICE_ID_95_OFF = "price_1NFySwAbmaEugrFTxrQHhFN9"
STRIPE_STANDARD_PRICE_ID_100_OFF = "price_1NEpbrAbmaEugrFTgLABbIOF"
STRIPE_TEST_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_CONFIG_KEY_PUB = "pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p"
STRIPE_CONFIG_API_KEY = "sk_test_51LUUfAAbmaEugrFTrWsfcBWZtbBh9r3HCa2sgeyikG808LjSk3bAdFhV6KxgRZ3vFxooa6RE0c5zBkTuOUrKkyjy00BrsIXAPs"
elif (MYSY_ENV == "DEM"):
STRIPE_GOLD_PRICE_ID = "price_1MT3FmAbmaEugrFTZ5vyJRcZ"
STRIPE_GOLD_PRICE_ID_50_OFF = "price_1NEpALAbmaEugrFTCDhlJyo3"
STRIPE_GOLD_PRICE_ID_95_OFF = "price_1NFyUEAbmaEugrFT5sRXixeZ"
STRIPE_GOLD_PRICE_ID_100_OFF = "price_1NEpeJAbmaEugrFTXT5OFciX"
STRIPE_STANDARD_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_STANDARD_PRICE_ID_50_OFF = "price_1NEpCOAbmaEugrFTcBnOf89X"
STRIPE_STANDARD_PRICE_ID_95_OFF = "price_1NFySwAbmaEugrFTxrQHhFN9"
STRIPE_STANDARD_PRICE_ID_100_OFF = "price_1NEpbrAbmaEugrFTgLABbIOF"
STRIPE_TEST_PRICE_ID = "price_1MT3FLAbmaEugrFTDgw7MVgb"
STRIPE_CONFIG_KEY_PUB = "pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p"
STRIPE_CONFIG_API_KEY = "sk_test_51LUUfAAbmaEugrFTrWsfcBWZtbBh9r3HCa2sgeyikG808LjSk3bAdFhV6KxgRZ3vFxooa6RE0c5zBkTuOUrKkyjy00BrsIXAPs"
"""
Limite des zones de texte des formation
- porgramme
- objectif
- description
"""
CLASS_ZONE_PROGRAM_LIMIT = 1300
CLASS_ZONE_DESCRIP_LIMIT = 2000
CLASS_ZONE_OBJECTIF_LIMIT = 2000
"""
MariaDB database access
"""
if (MYSY_ENV == "PROD"):
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "51.77.211.142"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "mysy_db_chamilo_prod"
MYSY_LMS_URL = "https://lms-mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy_prod/"
LMS_BAS_URL = "lms-mysy-training.com/"
MYSY_ENV_API = "https://apimysy.mysy-training.com/myclass/api/"
""" DEV on localHost
elif (MYSY_ENV == "DEV"):
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "127.0.0.1"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "chamilo"
MYSY_LMS_URL = "http://localhost/mysylms/lmsdev/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy/"
LMS_BAS_URL = "mysy-training.fr/"
elif (MYSY_ENV == "DEV"):
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "192.168.1.21"
#MYSY_MARIADB_HOST = "88.170.110.220"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "chamilo_dev2"
MYSY_LMS_URL = "https://lms.mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy/"
LMS_BAS_URL = "mysy-training.fr/"
"""
elif (MYSY_ENV == "DEV"):
"""
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "88.170.110.220"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "chamilo_dev2"
MYSY_LMS_URL = "https://lms.mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy/"
LMS_BAS_URL = "mysy-training.com/"
"""
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "51.77.211.142"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "mysy_db_chamilo_rec"
MYSY_LMS_URL = "https://reclms.mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy_rec/"
LMS_BAS_URL = "mysy-hosting.com/"
MYSY_ENV_API = "http://localhost:"+str(MYSY_PORT_DEV)+"/myclass/api/"
elif (MYSY_ENV == "REC"):
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "51.77.211.142"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "mysy_db_chamilo_rec"
MYSY_LMS_URL = "https://reclms.mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_mysy_rec/"
LMS_BAS_URL = "mysy-hosting.com/"
MYSY_ENV_API = "https://devapimysy.mysy-training.com/myclass/api/"
elif (MYSY_ENV == "DEM"):
MYSY_MARIADB_USER = "mysy_mariadb_user"
MYSY_MARIADB_USER_PASS = "fB5z%M)GG&g!n2c"
MYSY_MARIADB_HOST = "192.168.1.21"
MYSY_MARIADB_PORT = 3306
MYSY_LMS_BDD = "mysy_db_chamilo_rec"
MYSY_LMS_URL = "https://demolms.mysy-training.com/"
MYSY_LMS_BASE_DIRECTORY = "/var/www/html/chamilo_demo/"
LMS_BAS_URL = "mysy-hosting.fr/"
MYSY_ENV_API = "https://demoapi.mysy-training.com/myclass/api/"
"""
Variable pour definir les unité de durée acceptées pour une formation
"""
CLASS_DURATION_UNIT = ['heure', 'jour', 'semaine', 'mois', 'annee', 'user_rythme']
# user_rythme : definit les formations ou la durée depend de la progression de l'utilisateur
"""
Varibale definit la taille maximiale des repertoire à créer par mysy
"""
DIRECTORY_MAX_LENGTH = 50
"""
Variable defini les type de remise (code promo) acceptés:
percent ou fix
"""
CODE_PROMO_TYPE = ['fix', 'percent']
"""
Variable qui defini les type de contact possible
"""
CONTACT_TYPE = ['liv', 'fac', 'aut', 'nor']
"""
Variable qui defini les collections qui accepte des contact
"""
CONTACT_COLLECTION = ['user_account', 'partnair_account', 'partner_client']
"""
Variable qui defini les type d'activité possible
"""
ACTIVITE_TYPE = ['email', 'call', 'meeting', 'cmd', 'devis', 'facture', 'autre']
"""
Variable qui defini les collections qui accepte les activités
"""
ACTIVITE_COLLECTION = ['user_account', 'partnair_account', 'partner_client']
"""
Variable qui defini les status qui sont acceptés pour une activité
encours : 0
fait : 1
annulé : -1
archivé : 2
"""
ACTIVITE_STATUS = ['0', '-1', '1', '2']
"""
Les types d'image authorisé a etre stockés en base de données
"""
BDD_STOCKAGE_IMG = ['logo', 'cachet', 'user']
"""
Pour les session, on definit les étapes suivantes :
0 => En projet
1 => En planification
2 => Planifiée
3 => Terminée
4 => Facturée
-1 => Annulée
"""
SESSION_ETAPE = ['-1', '0', '1', '2', '3', '4', '5']
"""
Les profils des ressources humaines autorisé
"""
RESSOURCE_PROFIL = ['enseignant', 'cadre', 'employe', 'autre', '']
"""
Dans le processus d'inscription, les statuts accepté sont :
- '-1' => Annulé
- 0 => Préinscription
- 1 => Inscription (validée)
- 2 => Encours (Inscription en cours de creation, ici, on ne declenche aucun email)
"""
INSCRIPTION_STATUS = ['-1', '0', '1', '2']
"""
Gestion de modele de courrier : Type de courrier autorisé
"""
MODELE_DOCUMENT_TYPE = ['sms', 'email', 'pdf']
"""
Gestion des commandes et devis des partenaires
"""
PARTNER_ORDER_TYPE = ['devis', 'commande']
"""
Les Commandes :
En termes de process, un document de type commande peut avoir le statut de :
• -1 => Annulé
• 0 => Brouillon
• 1 => En cours
• 2 => Traité (prêt à être facturée)
• 3 => Facturé (la facture est traitée dans un autre document).
"""
PARTNER_ORDER_STATUS = ['-1', '0', '1', '2', '3']
"""
Les devis :
En termes de process, un document de type devis peut avoir le un des statuts ci-dessous :
• Brouillon => valeur 0
• En cours => valeur 1
• Fermé => valeur 2
• gagné => valeur 3
• perdu => valeur 4
• Annulé => valeur -1
"""
PARTNER_QUOTATION_STATUS = ['-1', '0', '1', '2', '3', '4']
"""
Pour mettre en place un système de configuration global, on va definir les valeur acceptée
"""
PARTNER_BASE_CONFIG_NAME = ['tva', 'smtp_server', 'smtp_user', 'smtp_user_pwd', 'smtp_count_from_name',
'smtp_count_port', 'partner_smtp', 'partner_jour_heure', 'nb_relance_auto',
'relance_auto', 'frequence_relance_auto', 'session_warning', 'session_warning_lead_time',
'recyclage_warning', 'recyclage_warning_lead_time',
'preinscription_notification_email', 'inscription_notification_email']
"""
Pour la personnalisation des champ, seuls certains objet metier / collection
sont autorisés
"""
PERSONALISATION_AUTORIZED_COLLECTION = ['ressource_humaine', 'ressource_materielle', 'partner_client',
'myclass', 'session_formation', 'inscription']
"""
Les objets metiers qui accepte d'etre lié à un agenda.
Par defaut il en y a 2 :
- ressource_humaine et
- ressource_materielle
"""
ALLOWED_AGENDA_RELATED_COLLECTION = ['ressource_humaine', 'ressource_materielle', 'inscription', 'apprenant']
"""
Les types de location pour une session (intra ou extra ou autre)
"""
TRAINING_LOCATION_TYPE = ['intra', 'extra', 'autre', '']
"""
Gestion des champs spécifique : Type de champs autorisé
"""
SPECIFIC_FIELD_TYPE = ['float', 'string']
"""
Gestion des type d'evenement accepté dans un egend
- absence
- planning
- etc
"""
AGENDA_EVENT_TYPE = ['absence', 'planning', 'autre', '']
"""
Limite pour l'affichage des historique d'action coté front.
Par exemple on va afficher les 100 dernières action, mais pas tout.
"""
HISTORIQUE_MAX_EVENT = 100
"""
Type d'apprenant à l'inscription d'une session de formation
• 0 => autre
• 1 => salariés
• 2 => apprentis
• 3 => particuliers
• 4 => sans_emploi
"""
INSCRIPTION_TYPE_APPRENANT = [ '0', '1', '2', '3', '4']
"""
Gestion des prix d'achat / cout employé / cout location materiel
Ici on definit la périodicité
"""
PURCHASE_PRICE_PERIODICITY = ['fixe', 'heure', 'jour', 'mois', 'annee', ]
"""
Recyclage des formation
Ici on definit la périodicité
"""
RECYCLAGE_PERIODICITY = [ 'mois', 'annee', ]
"""
Les civilité
"""
CIVILITE = ['m', 'mme', 'neutre', '']
"""
Les prix de vente des formations
"""
TRAINING_PRICE = ['persession', 'perstagiaire', '']
"""
Les conditions de paiement : Date depart
xxx jrs fin du mois, ou y jours date facture.
les valeurs autorisées sont :
- facture = date facture
- mois = fin du mois
"""
PAIEMENT_CONDITION_DEPART = ['facture', 'mois']
"""
CRM :
Proabilité de gain valeur
"""
CRM_GAIN_PROBABILITE = ['faible', 'moyen', 'fort', 'inconnu', '']
"""
Statut de facturation d'un session de formation : invoiced_statut
- Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2
- Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1
- Si non invoiced_statut de la session =0
"""
"""
Gestion des sequences de formation ( en rapport avec les emargements) :
- option = 0 ==> on prend le calendrier
- option = 1 ==> on prend la demi-journée
- option = 2 ==> on prend la journée
"""
EMARGEMENT_OPTION = ["0", "1", "2"]
"""
Taille maximale des nom de fichier
"""
FILE_NAME_MAX_SIZE = 250
"""
Les types de formulaire
- pos = Formulaire pour questionnaire de positionnement
- hot_eval = Formulaire pour evaluation à chaud
- cold_eval = Formulaire pour evaluation à froid
- human_eval = Formulaire pour evaluation d'une ressource humaine
- autre_eval = Formulaire pour d'autres evaluation non prevu plus haut
"""
FORM_TYPE = ['pos', 'hot_eval', 'cold_eval', 'human_eval', 'autre_eval']
"""
Formulaire : Type de question :
- qcm,
- text,
- note
- entier
"""
FORM_QUESTION_TYPE = ['qcm', 'text', 'note', 'entier', 'bool', 'checkbox']
"""
Survey Statut :
Une enquete a les statuts suivants :
0 - initialisé
1 - envoyé
2 - repondu
-1 - annulé
"""
SURVEY_STATUS = ['-1', '0', '1', '2']
"""
Statut de paiement des factures
0 - aucun regelement
1 - partiellement payé
2 - entièrement payé
"""
INVOICE_PAIEMENT_STATUS = ['0', '1', '2']
"""
Completude des etapes d'une session de formation : "statut_completude"
- 2 = "Oui", Etape completé
- 1 = "Part", Etape partiellement effectué
- 0 = "Non", Etape non demarré
"""
"""
Gestion is_company ?
- 0 : Particulier
- 1 : Société
- 2 : Pouvoir Public
"""
"""
Gestion du module d'envoie d'email
les 'related_collection' sont : ['inscription', 'apprenant', 'contact', 'nointernalcontact']
"""
EMAIL_DEST_RELATED_COLLECTION = ['inscription', 'apprenant', 'contact', 'nointernalcontact']
EMAIL_MAX_DESTINAIRE = 30
EMAIL_MAX_CC = 10
EMAIL_MAX_BCC = 10
EMAIL_MAX_PJ = 5
"""
La clé API de OpenAI
"""
OPENAI_KEY = "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"
"""
Variable interne pour le traitement
des mysy_voice_to_text
"""
#Les collections autorisées pour les opérations voix
mysy_voice_instruction_related_collection = ['myclass', 'session_formation', 'parter_order_header', 'parter_order_line']
#Les mots de ponctuation vocale
mysy_voice_stop_word = ['stop', 'fin']
#Les champs autorisés par collection
mysy_voice_instruction_collection_field = {
"myclass": [
"Titre",
"Description",
"Programme"
],
"session_formation": [
"Titre",
"Debut",
"Fin"
]
}
#Les actions autorisées par collection
mysy_voice_instruction_collection_action = {
"myclass": [
{"créer": "create"}, {"création": "create"}, {"crée": "create"},
{"ajoute": "create"}, {"ajout": "create"}, {"nouvelle": "create"},
{"nouveau": "create"},
{"met à jour": "update"}, {"met a jour": "update"}, {"mettre à jour": "update"},
{"mettre a jour": "update"}, {"modifier": "update"}, {"modifie": "update"},
{"update":"update"} ,
],
"session_formation": [
{"créer": "create"}, {"création": "create"}, {"crée": "create"},
{"ajoute": "create"}, {"ajout": "create"}, {"nouvelle": "create"},
{"nouveau": "create"},
{"met à jour": "update"}, {"met a jour": "update"}, {"mettre à jour": "update"},
{"mettre a jour": "update"}, {"modifier": "update"}, {"modifie": "update"},
{"update":"update"} ,
]
}
"""
Cette variable defini ou les messages vocaux utilisés par le système
sont stocké
"""
SYSTEM_VOICE_MESSAGES_LOCATION = "./admin_voices_messages/"
"""
Confirmation d'un ordre de vocal
"""
VOICE_INSTRUCTION_CONFIRMATION = ["confirme", "confimer", "conformation"]
"""
Annulation d'un ordre de vocal
"""
VOICE_INSTRUCTION_ANNULATION = ["annuler", "annulle", "refus", "refuser"]
"""
Gestion du context de connexion d'un partenaire
"""
PARTNER_ACCOUNT_CONNEXION_CONTEXT_VALUES = ['mysy_session_display_view',
'mysy_menu_gauche_reduit',
'mysy_catalog_data_row_grouped_by']