Example #1
0
 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
Example #2
0
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))
Example #3
0
 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
Example #4
0
 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
Example #5
0
 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
Example #6
0
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
Example #7
0
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
Example #8
0
    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
Example #9
0
 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)
Example #10
0
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
Example #11
0
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]
Example #12
0
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}")
Example #13
0
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)
Example #14
0
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
Example #15
0
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
Example #16
0
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))