def valider_ligne(ligne): log.debug("valider ligne avec {}".format(ligne)) #item 56 import re #item 57 pat = re.compile( r""" (?P<jours>^(\d+,*)+)\s (?P<mois>\d{1,2})\s (?P<annee>\d{4,4})\s (?P<poste>\w{2,2}) """, re.VERBOSE) #item 58 match = re.search(pat, ligne) #item 60 if match: #item 63 jours = match.group('jours') mois = match.group('mois') annee = match.group('annee') poste = match.group('poste') #item 71 return xpld.validate_month(mois) and xpld.validate_poste( poste) and xpld.validate_year(annee) and xpld.validate_days( jours) else: #item 64 return False
def seuil(base, mn, mx): log.debug("lancement de seuil avec base = {}, mn = {}, mx= {}".format( base, mn, mx)) if mx < mn: raise ("max > min") else: return max(0, min(base - mn, mx - mn))
def validate_day(day): log.debug("lancement de validate day avec chaine = {}".format(day)) if int(day) > 0 and int(day) < 32: return True else: log.debug( "jour ne peut prendre comme valeur que de 1 à 31 dans {}". format(day)) return False
def validate_year(arg_chaine): #item 50 #return xpld._validate_int_between(chaine=arg_chaine,mini=2002,maxi=2017) #item 49 log.debug( "lancement de validate year avec chaine = {}".format(arg_chaine)) if int(arg_chaine) > 2002 and int(arg_chaine) < 2018: return True else: log.debug( "year ne peut prendre comme valeur que de 2002 à 2017 dans {}". format(arg_chaine)) return False
def validate_month(chaine): #item 43 #return xpld._validate_int_between(chaine=arg_chaine,mini=1,maxi=12) #item 35 log.debug( "lancement de validate month avec chaine = {}".format(chaine)) if int(chaine) > 0 and int(chaine) < 13: return True else: log.debug( "mois ne peut prendre comme valeur que de 1 à 12 dans {}". format(chaine)) return False
def gen_heures_sup_semaines(aaaa, num_sem, hsup25payees=0, hsup50payees=0): c = getCumulHeuresTravailleesSemaine(aaaa, num_sem) hs = [ c, max(0, seuil(c, 35, 43) - hsup25payees), max(0, seuil(c, 43, 48) - hsup50payees), max(0, seuil(c, 48, 1000) - 0) ] log.debug("hsem {} de l annee {} vaut {}".format(num_sem, aaaa, hs)) return hs
def gen_heures_sup_semaines2(aaaa, num_sem): c = getCumulHeuresTravailleesSemaine(aaaa, num_sem) hs = [ c, max(0, seuil(c, 35, 43) - 0), max(0, seuil(c, 43, 48) - 0), max(0, seuil(c, 48, 1000) - 0) ] log.debug("hsem {} de l annee {} vaut {}".format(num_sem, aaaa, hs)) return ['w' + str(num_sem)] + hs
def eqv_trv_de_sup_paye(mois, annee): eqv = 0 import utilitaireDates semainesmois = list(utilitaireDates.iterSemaine(annee, mois)) for semaine in semainesmois: eqv = eqv + eqv_trv_de_sup_sem_paye(semaine, annee) phrase_debug = "eqv trv de paye vaut {} lors semaine {}" phrase_debug = phrase_debug.format( eqv_trv_de_sup_sem_paye(semaine, annee), semaine) log.debug(phrase_debug) return eqv
def eqv_trv_de_sup_sem_paye(semaine, annee): heures_cp = getCumulHeuresCpSemaine(annee, semaine) paye_semaine = sup25_deja_paye(heures_cp) if heures_cp: phrase_cp_non_nuls = "en semaine {}, {} heures de cp ramenent les hsup payéees de 4 à {}" phrase_cp_non_nuls = phrase_cp_non_nuls.format( semaine, annee, paye_semaine) log.critical(phrase_cp_non_nuls) else: phrase_cp_nuls = "{} heures ont été payées à 25% au titre de la mens des heures de 35 à 39h" phrase_cp_nuls = phrase_cp_nuls.format(paye_semaine) log.debug(phrase_cp_nuls) return bonification25(paye_semaine)
def gen_heures_sup_annee2(a): TI = [''.join(['ANNEE ', str(a)])] E = ['m', 'tot', '>35', '>43', '>48'] L = list(iter_heures_sup_mois2(a)) A = functools.reduce(somme_terme_a_terme, iter_heures_sup_mois(a), [0, 0, 0, 0]) log.debug("A {}vaut {}".format(a, A)) log.info(TI) log.info(E) for ligne in L: log.info(ligne) log.info(["CUMUL MOIS"] + A) return A
def gen_heures_sup_mois2(m, a): TI = ["mois de {} {}".format(m, a)] E = ['s', 'tot', 'h>39', 'h>43', 'h>48'] S = list(iter_heures_sup_semaines_mois2(a, m)) M = functools.reduce(somme_terme_a_terme, iter_heures_sup_semaines_mois(a, m), [0, 0, 0, 0]) #M = ["CUMUL SEM"] + M log.info(TI) log.info(E) for ligne in S: log.info(ligne) log.info(["CUMUL SEM"] + M) log.debug("M {} de l annee {} vaut {} ".format(m, a, M)) return [str(m), M]
async def process_xml(xml): log.debug(f'Processing xml') distances = {} try: nh_settings = Settings.objects.get(active=True) except (Settings.DoesNotExist, Settings.MultipleObjectsReturned): log.error('Unable to load NH settings') return {} try: root = ET.fromstring(xml) for tag in root.findall('.//ns:ObjectData', XML_NS): try: id_tag = list(tag.findall('.//ns:Identifier', XML_NS))[0] except IndexError: continue try: call_sign = id_tag.get('Callsign').strip() except AttributeError: xmlstr = ET.tostring(id_tag, encoding='utf8', method='xml') log.error(f'No call sign for a vessel in this xml: {xmlstr!r}') continue try: pos_tag = list(tag.findall('.//ns:Pos', XML_NS))[0] except IndexError: continue try: lat = float(pos_tag.get('Lat')) long = float(pos_tag.get('Long')) except (TypeError, ValueError): continue distances[call_sign] = round(haversine( (nh_settings.red_dot_lat, nh_settings.red_dot_long), (lat, long) ), 2) try: log.info('Checking xml sanity. Last call sign:') log.info(call_sign) except NameError: log.error(f'No call signs found in xml: {xml!r}') log.info(f'New distances to red dot: {distances!r}') return distances except Exception as e: log.exception(f"Unable to read xml stream: {xml!r}")
def contrainte(e,mn, mx): """vérifie que e est bien dans dans l'intervalle mn mx """ log.debug("lancement de contrainte avec e = {} de type{}, mn = {} de type{}, mx= {} de type {}".format(e, type(e), mn, type(mn), mx, type(mx))) if e < mn or e > mx: raise ValueError('valeur hors de l intervalle ', e, mn, mx)
def gen_heures_sup_annee_a(a): A = functools.reduce(somme_terme_a_terme, iter_heures_sup_mois(a), [0, 0, 0, 0]) log.debug("A {}vaut {}".format(a, A)) return [a] + A
def gen_heures_sup_mois(m, a): M = functools.reduce(somme_terme_a_terme, iter_heures_sup_semaines_mois(a, m), [0, 0, 0, 0]) log.debug("M {} de l annee {} vaut {} ".format(m, a, M)) return M
def eqv_trv_de_sup_sem_du_25(semaine, annee): heures_effectuees_semaine = getCumulHeuresTravailleesSemaine( annee, semaine) log.debug( "heures_effectuees_semaine : {}".format(heures_effectuees_semaine)) return bonification25(heures_sup_25_effectuees(heures_effectuees_semaine))