def insertC2CMoisPartnerRegionAdm(self, monthString): prevMonthString = Utils.getPrevMonthString(monthString) prevMonthData = self.getMonthValues(prevMonthString) monthData = self.getMonthValues(monthString) for c2c in monthData: for prevC2C in prevMonthData: if (prevC2C.partnerId == c2c.partnerId and prevC2C.regionAdm == c2c.regionAdm): c2c.c2cM1 = prevC2C.c2c c2c.evolM1 = c2c.c2c - prevC2C.c2c sessionFactory = SessionFactory() session = sessionFactory.Session() try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(monthData) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def getC2CMoisValues(self, monthString): """ Cette fonction prend en paramètres un mois au format aaaamm récupère tous les jours du mois et calcul pour chaque stkb le c2s du mois on crée un dictionnaire contenant toutes les stkbs du mois en question au début si un élément n'existe pas on le rajoute, ensuite pour les prochains jours """ #on récupère tous les jours du mois en paramètre year = int(monthString[:4]) month = int(monthString[-2:]) numDays = calendar.monthrange(year, month)[1] days = [datetime.date(year, month, day) for day in range(1, numDays + 1)] jours = [] for day in days: jours.append(day.strftime(self._DATE_FORMAT)) #on initialise le dictionnaire des données avec sessionFactory = SessionFactory() session = sessionFactory.Session() c2cMonth = dict() for jour in jours: c2cJourStkas = session.query(DDC2CJourSTKA).filter_by(jour = jour) for c2cJour in c2cJourStkas: if(c2cJour.stkaMsisdn not in c2cMonth): tmpC2c = DDC2CMoisSTKA(c2cJour) tmpC2c.mois = monthString tmpC2c.c2c = 0 c2cMonth[c2cJour.stkaMsisdn] = tmpC2c tmp = c2cMonth[c2cJour.stkaMsisdn] tmp.c2c = tmp.c2c + c2cJour.c2c c2cMonth[c2cJour.stkaMsisdn] = tmp session.close() return c2cMonth
def insertObjectifsMensuelACVI(self, month): sessionFactory = SessionFactory() data = [] #01082017 connection = sessionFactory.getConnection() requete = "select acvi, mois, sum(objectif) objectif from dd_objectif_mensuel_c2s_stkb where mois = '" + month + "' GROUP BY acvi" result = connection.execute(requete) for row in result: tmpElt = DDObjectifMensuelACVI(row) print(tmpElt) data.append(tmpElt) connection.close() session = sessionFactory.Session() try: session.add_all(data) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec succès") except Exception as ex: self.view_traceback() session.rollback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec erreur, rollback fait!") finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertC2CJourPartnerRegionAdm(self, day): sessionFactory = SessionFactory() session = sessionFactory.Session() data = [] connection = sessionFactory.getConnection() result = connection.execute( "select partner_id, partner_name, region_adm, region_com, sem, jour, sum(c2c) c2c from dd_c2c_jour_stkp where jour = '" + day + "' group by partner_id, region_adm") for row in result: tmpElt = DDC2CJourPartnerRegionAdm(row) data.append(tmpElt) connection.close() try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(data) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def getC2SMoisValues(self, monthString): """ Cette fonction prend en paramètres un mois au format aaaamm récupère tous les jours du mois et calcul pour chaque stkb le c2s du mois on crée un dictionnaire contenant toutes les stkbs du mois en question au début si un élément n'existe pas on le rajoute, ensuite pour les prochains jours """ #on récupère tous les jours du mois en paramètre year = int(monthString[:4]) month = int(monthString[-2:]) numDays = calendar.monthrange(year, month)[1] days = [ datetime.date(year, month, day) for day in range(1, numDays + 1) ] sessionFactory = SessionFactory() session = sessionFactory.Session() jours = [] for day in days: jours.append(day.strftime(self._DATE_FORMAT)) #on initialise le dictionnaire des données avec c2sMonth = dict() for jour in jours: print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>>> Début recherche infos pour le jour ", jour) c2sJourStkbs = session.query(DDC2SJourSTKB).filter_by(jour=jour) for c2sJour in c2sJourStkbs: if (c2sJour.stkbMsisdn not in c2sMonth): tmpC2s = DDC2SMoisSTKB(c2sJour) tmpC2s.mois = monthString tmpC2s.c2s = 0 c2sMonth[c2sJour.stkbMsisdn] = tmpC2s tmp = c2sMonth[c2sJour.stkbMsisdn] tmp.c2s = tmp.c2s + c2sJour.c2s if c2sJour.c2s >= self._SEUIL_PRESENCE_MENSUEL_C2S: if tmp.presence != None: tmp.presence = tmp.presence + 1 else: tmp.presence = 1 else: if tmp.presence == None: tmp.presence = 0 print(time.strftime("%d/%m/%Y %H:%M:%S"), " >>>>>>>>> Fin recherche infos pour le jour ", jour) return c2sMonth
def getAllStkpForWeek(self, weekString): """ Cette fonction prend en paramètres une semaine au format aaaass exemple 201735 Génère l'ensemble des jours de la semaine en question au format dd/mm/aaaa Elle crée ensuite une liste contenant les informations de la stkb sans c2s """ #jours = self.getAllWeekDays(weekString, self._DATE_FORMAT) jours = Utils.getAllWeekDays(weekString, self._DATE_FORMAT) for jour in jours: print(jour) sessionFactory = SessionFactory() session = sessionFactory.Session() stkpsWeek = self.getC2CJourSTKPEntriesByDate(jours, self._DATE_FORMAT, session) return stkpsWeek
def getPrevMonthString(monthString): year = int(monthString[:4]) month = int(monthString[-2:]) sessionFactory = SessionFactory() session = sessionFactory.Session() previousMonth = month - 1 if (previousMonth <= 9): previousMonthString = str(year) + "0" + str(previousMonth) else: previousMonthString = str(year) + str(previousMonth) return previousMonthString
def insertC2CSTKADay(self, day): sessionFactory = SessionFactory() session = sessionFactory.Session() stkps = session.query(DDC2CJourSTKP).filter_by(jour = day) resultat = dict() sem = Utils.getWeekNumberFromDate(day, self._DATE_FORMAT) for stkp in stkps: if(resultat.get(stkp.stkaMsisdn) == None): tmp = DDC2CJourSTKA(stkp) tmp.jour = day tmp.sem = sem tmp.stkaMsisdn = stkp.stkaMsisdn resultat[stkp.stkaMsisdn] = tmp connection = sessionFactory.getConnection() result = connection.execute("select sum(c2c) c2c, stka_msisdn from dd_c2c_jour_stkp where jour= '"+day+"' group by stka_msisdn") for row in result: stkaMsisdn = row['stka_msisdn'] tmpC2c = row['c2c'] resultat[stkaMsisdn].c2c = tmpC2c connection.close() toAdd = [] for res, val in resultat.items(): toAdd.append(val) try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(toAdd) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def getC2CWeek(self, weekString): """ Cette fonction prend en paramètres une semaine au format aaaass et retourne la liste des c2s_stkb_week pour cette semaine """ sessionFactory = SessionFactory() session = sessionFactory.Session() stkpsWeek = session.query(DDC2CWeekSTKP).filter_by(sem=weekString) resultat = dict() for stkp in stkpsWeek: resultat[stkp.stkpMsisdn] = stkp return resultat
def getWeekValues(self, weekString): sessionFactory = SessionFactory() session = sessionFactory.Session() data = [] connection = sessionFactory.getConnection() result = connection.execute( "select partner_id, partner_name, region_adm, region_com, sem, sum(c2c) c2c from dd_c2c_jour_stkp where sem = '" + weekString + "' group by partner_id, region_adm") for row in result: tmpElt = DDC2CWeekPartnerRegionAdm(row) data.append(tmpElt) connection.close() return data
def getMonthValues(self, month): sessionFactory = SessionFactory() session = sessionFactory.Session() data = [] #01082017 connection = sessionFactory.getConnection() requete = "select partner_id, partner_name, region_adm, region_com, concat(substr(replace(jour, '/', ''), 5), substr(replace(jour, '/', ''), 3, 2)) mois, sum(c2c) c2c from dd_c2c_jour_stkp where concat(substr(replace(jour, '/', ''), 5), substr(replace(jour, '/', ''), 3, 2)) = '" + month + "' group by partner_id, region_adm" result = connection.execute(requete) for row in result: tmpElt = DDC2CMoisPartnerRegionAdm(row) data.append(tmpElt) connection.close() return data
def saveNewC2SJourSTB(self, c2sList): sessionFactory = SessionFactory() session = sessionFactory.Session() try: session.add_all(c2sList) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec succès") except Exception as ex: self.view_traceback() session.rollback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec erreur, rollback fait!") finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def getC2CSTKAWeek(self, weekString): """ Cette fonction prend en paramètre une semaine et calcule pour chaque stka en BD son C2C pour cette semaine """ weekDays = Utils.getAllWeekDays(weekString, self._DATE_FORMAT) resultat = dict() sessionFactory = SessionFactory() session = sessionFactory.Session() print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>>>> Début du parcours des jours pour la semaine ", weekString) for day in weekDays: stkasDay = session.query(DDC2CJourSTKA).filter_by(jour = day) print(time.strftime("%d/%m/%Y %H:%M:%S"),">>>>>>>>>>>>>>>>>>> Début du parcours pour le jour ", day ) for stka in stkasDay: if(resultat.get(stka.stkaMsisdn) == None): resultat[stka.stkaMsisdn] = DDC2CSemSTKA(stka) else: resultat[stka.stkaMsisdn].c2c = resultat[stka.stkaMsisdn].c2c + stka.c2c print(time.strftime("%d/%m/%Y %H:%M:%S"),">>>>>>>>>>>>>>>>>>> Fin du parcours pour le jour ", day ) return resultat
def getC2SWeek(self, weekString): """ Cette fonction prend en paramètres une semaine au format aaaass et retourne la liste des c2s_stkb_week pour cette semaine """ print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début chargement de la semaine précédente (", weekString, ")") sessionFactory = SessionFactory() session = sessionFactory.Session() stkbsWeek = session.query(DDC2SWeekSTKB).filter_by(sem=weekString) result = dict() for stkb in stkbsWeek: result[stkb.stkbMsisdn] = stkb print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin chargement de la semaine précédente (", weekString, ")") return result
def saveObjectifMensuelSTKB(self, objectifsMensuelsSTKB): """ - fileData, les informations telles que chargées du fichier - Le mois pour lequel on calcul les objectifs - dbSTKBS les stkbs récupérées en BD, plus précisément celles du dernier jour en BD """ sessionFactory = SessionFactory() session = sessionFactory.Session() try: session.add_all(objectifsMensuelsSTKB) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec succès") except Exception as ex: self.view_traceback() session.rollback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec erreur, rollback fait!") finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertNewMonth(self, monthString): #on détermine le mois précédent sessionFactory = SessionFactory() session = sessionFactory.Session() #on récupère tous les jours du mois en paramètre year = int(monthString[:4]) month = int(monthString[-2:]) if ( month == 1 ): # si nous sommes au premier mois il y a aucune initialisation à faire toutes les valeurs sont à 0 monthC2S = self.getC2SMoisValues(monthString) c2sToAdd = [] for key, val in monthC2S.items(): c2sToAdd.apppend(val) else: previousMonth = month - 1 if (previousMonth <= 9): previousMonthString = str(year) + "0" + str(previousMonth) else: previousMonthString = str(year) + str(previousMonth) print( time.strftime("%d/%m/%Y %H:%M:%S"), " >>> début de la récupération des données du mois précédent ", previousMonthString) previousMonthC2SList = session.query(DDC2SMoisSTKB).filter_by( mois=previousMonthString) print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>> Fin de la récupération des données du mois précédent ") previousMonthC2S = dict() for prevStkb in previousMonthC2SList: previousMonthC2S[prevStkb.stkbMsisdn] = prevStkb print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>> Récupération des données du mois en cours ", monthString) monthC2S = self.getC2SMoisValues(monthString) print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>> Fin de la récupération des données du mois en cours ") newMonthC2S = [] print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>> Début de la complétion des informations ") for key in monthC2S: print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>> Début de la complétion des informations pour ", key) if (previousMonthC2S.get(key) != None): monthC2S[key].c2sMoins1 = previousMonthC2S[key].c2s monthC2S[key].evolutionM1 = monthC2S[ key].c2s - previousMonthC2S[key].c2s #calculer les points de présence #calculer les points d'évolution if (previousMonthC2S[key].c2s != 0 and previousMonthC2S[key] != None): evolution = (monthC2S[key].c2s / previousMonthC2S[key].c2s) if (evolution < 1): pointsEvolution = -20 if (evolution == 1): pointsEvolution = 5 if (evolution > 1 and evolution < 1.1): pointsEvolution = 10 if (evolution >= 1.1 and evolution < 1.2): pointsEvolution = 20 if (evolution >= 1.2): pointsEvolution = 25 monthC2S[key].pointsEvol = pointsEvolution else: monthC2S[key].pointsEvol = 0 print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>> Fin de la complétion des informations pour ", key) newMonthC2S.append(monthC2S[key]) # a la fin de la boucle on a les C2S mensuels avec les valeurs # il ne reste plus qu'à calculer les points d'assiduité et les points de production c2sToAdd = [] for c2s in newMonthC2S: presence = c2s.presence if presence < 20: pointsPresence = 0 elif presence >= 20 and presence < 25: pointsPresence = 10 elif presence >= 25: pointsPresence = 25 c2s.pointsAssiduite = pointsPresence # calcul des points de production c2s.pointsProd = (c2s.c2s / 10000) * 0.5 c2sToAdd.append(c2s) #calculer les points de présence #calculer les points d'évolution sessionFactory = SessionFactory() session = sessionFactory.Session() try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(c2sToAdd) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertNewWeek(self, weekString): print( time.strftime("%d/%m/%Y %H:%M:%S"), "Début calculs préalables à l'insertion d'une nouvelle semaine c2s_week_stkb", weekString) annee = int(weekString[:4]) # on récupère le numéro de la semaine sem = int(weekString[-2:]) # Etant donné un numéro de semaine il faut retourner le numéro de semaine qui # le précède # prevWeek = # week = Week(annee, sem) lundi = week.monday() #on récupère le dimanche # dimanchePrecedent = lundi + timedelta(days=-1) previousYear = dimanchePrecedent.strftime("%Y") if (int(previousYear) == annee): if (sem - 1) <= 9: prevWeekString = previousYear + "0" + str(sem - 1) else: prevWeekString = previousYear + str(sem - 1) else: prevWeekNum = dimanchePrecedent.isocalendar()[1] if prevWeekNum <= 9: prevWeekString = previousYear + "0" + str(prevWeekNum) else: prevWeekString = previousYear + str(prevWeekNum) print( time.strftime("%d/%m/%Y %H:%M:%S"), "Fin des calculs préalable à l'insertion d'une nouvelle semaine c2s_week_stkb", weekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Chargement des données pour la semaine précédente ", prevWeekString) stkpsPreviousWeek = self.getC2CWeek(prevWeekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Chargement des données pour la semaine en cours ", weekString) stkpsWeek = self.getAllStkpForWeek(weekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début de la complétion des lignes") for tmp, val in stkpsWeek.items(): print(val) toAdd = [] for stkp in stkpsWeek: if len(stkpsPreviousWeek) > 0: if (stkpsPreviousWeek.get(stkp) != None): stkpsWeek[stkp].c2cMoins1 = stkpsPreviousWeek[stkp].c2c stkpsWeek[stkp].evolutionS1 = stkpsWeek[ stkp].c2c - stkpsPreviousWeek[stkp].c2c toAdd.append(stkpsWeek[stkp]) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin de la complétion des lignes") # à ce niveau ont a toutes les données sur l'évolution et on peut donce enregistrer la nouvelle semaine sessionFactory = SessionFactory() session = sessionFactory.Session() try: session.add_all(toAdd) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertNewMonth(self, monthString): #on détermine le mois précédent #on récupère tous les jours du mois en paramètre year = int(monthString[:4]) month = int(monthString[-2:]) sessionFactory = SessionFactory() session = sessionFactory.Session() if ( month == 1 ): # si nous sommes au premier mois il y a aucune initialisation à faire toutes les valeurs sont à 0 monthC2C = self.getC2CMoisValues(monthString) c2cToAdd = [] for key, val in monthC2C.items(): c2cToAdd.append(val) else: previousMonth = month - 1 if (previousMonth <= 9): previousMonthString = str(year) + "0" + str(previousMonth) else: previousMonthString = str(year) + str(previousMonth) previousMonthC2CList = session.query(DDC2CMoisSTKP).filter_by( mois=previousMonthString) previousMonthC2C = dict() for prevStkp in previousMonthC2CList: previousMonthC2C[prevStkp.stkpMsisdn] = prevStkp monthC2C = self.getC2CMoisValues(monthString) newMonthC2C = [] for key in monthC2C: if (previousMonthC2C.get(key) != None): monthC2C[key].c2cMoins1 = previousMonthC2C[key].c2c monthC2C[key].evolutionM1 = monthC2C[ key].c2c - previousMonthC2C[key].c2c #calculer les points de présence #calculer les points d'évolution newMonthC2C.append(monthC2C[key]) # a la fin de la boucle on a les C2S mensuels avec les valeurs # il ne reste plus qu'à calculer les points d'assiduité et les points de production #calculer les points de présence #calculer les points d'évolution try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(newMonthC2C) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertC2CSTKAWeek(self, weekString): print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début calculs préalables à l'insertion d'une nouvelle semaine dans c2CSTKA", weekString) annee = int(weekString[:4]) # on récupère le numéro de la semaine sem = int(weekString[-2:]) week = Week(annee, sem) lundi = week.monday() dimanchePrecedent = lundi + timedelta(days=-1) previousYear = dimanchePrecedent.strftime("%Y") if(int(previousYear) == annee): if(sem - 1) <= 9: prevWeekString = previousYear+"0"+str(sem - 1) else: prevWeekString = previousYear+str(sem-1) else: prevWeekNum = dimanchePrecedent.isocalendar()[1] if prevWeekNum <= 9: prevWeekString = previousYear + "0"+ str(prevWeekNum) else: prevWeekString = previousYear+str(prevWeekNum) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Récupération de la semaine précédente", prevWeekString) sessionFactory = SessionFactory() session = sessionFactory.Session() print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Récupération des informations de la semaine précédente ", prevWeekString) stkasPreviousWeekList = session.query(DDC2CSemSTKA).filter_by(sem = prevWeekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Fin Récupération des informations de la semaine précédente ", prevWeekString) stkasPreviousWeek = dict() for stkaPrev in stkasPreviousWeekList: stkasPreviousWeek[stkaPrev.stkaMsisdn] = stkaPrev print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Récupération des informations de la semaine en cours ", weekString) stkasWeek = self.getC2CSTKAWeek(weekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>>>>>> Fin de la récupération des informations de la semaine en cours ", weekString) toAdd = [] if len(stkasPreviousWeek) > 0: #si le tableau de la semaine précédente n'est pas vide #on met à jour les informations relatives au mois précédent for stka, val in stkasWeek.items(): if stkasPreviousWeek.get(stka) != None: val.c2cS1 = stkasPreviousWeek.get(stka).c2c val.evolS1 = float(val.c2c) - float(stkasPreviousWeek.get(stka).c2c) toAdd.append(val) else: for stka, val in stkasWeek.items(): toAdd.append(val) try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add(toAdd) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")
def insertNewWeek(self, weekString): print( time.strftime("%d/%m/%Y %H:%M:%S"), "Début calculs préalables à l'insertion d'une nouvelle semaine c2s_week_stkb", weekString) prevWeekString = Utils.getPrevWeekString(weekString) print( time.strftime("%d/%m/%Y %H:%M:%S"), "Fin des calculs préalables à l'insertion d'une nouvelle semaine c2s_week_stkb", weekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Chargement des données pour la semaine précédente") stkbsPreviousWeek = self.getC2SWeek(prevWeekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Chargement des données pour la semaine en cours") stkbsWeek = self.getAllStkbForWeek(weekString) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début de la complétion des lignes") stkbsToAdd = [] for stkb in stkbsWeek: print(time.strftime("%d/%m/%Y %H:%M:%S"), ">>>> Début de la complétion pour", stkb) stkbPrev = stkbsPreviousWeek.get(stkb) if stkbPrev != None: stkbsWeek[stkb].c2sMoins1 = stkbPrev.c2s stkbsWeek[ stkb].evolutionS1 = stkbsWeek[stkb].c2s - stkbPrev.c2s stkbsToAdd.append(stkbsWeek[stkb]) print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin de la complétion des lignes") # à ce niveau ont a toutes les données sur l'évolution et on peut donce enregistrer la nouvelle semaine sessionFactory = SessionFactory() session = sessionFactory.Session() try: print(time.strftime("%d/%m/%Y %H:%M:%S"), "Début insertion ") session.add_all(stkbsToAdd) session.commit() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertion ") print(time.strftime("%d/%m/%Y %H:%M:%S"), "Fin insertions avec succès") except Exception as ex: self.view_traceback() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Echec de l'insertion, annulation des modifications") session.rollback() finally: session.close() print(time.strftime("%d/%m/%Y %H:%M:%S"), "Session close")