Ejemplo n.º 1
0
def parse_from_json(amend: dict, position: int, session: str, num_texte: int,
                    organe: str, subdiv: dict) -> Amendement:
    num, rectif = Amendement.parse_num(amend["num"])
    subdiv_type, subdiv_num, subdiv_mult, subdiv_pos = _parse_subdiv(
        subdiv["libelle_subdivision"])
    return Amendement(  # type: ignore
        chambre="senat",
        session=session,
        num_texte=num_texte,
        organe=organe,
        subdiv_type=subdiv_type,
        subdiv_num=subdiv_num,
        subdiv_mult=subdiv_mult,
        subdiv_pos=subdiv_pos,
        num=num,
        rectif=rectif,
        alinea=amend["libelleAlinea"],
        auteur=amend["auteur"],
        matricule=(extract_matricule(amend["urlAuteur"])
                   if amend["auteur"] != "LE GOUVERNEMENT" else None),
        sort=amend.get("sort"),
        position=position,
        identique=parse_bool(amend["isIdentique"]),
        discussion_commune=(int(amend["idDiscussionCommune"]) if parse_bool(
            amend["isDiscussionCommune"]) else None),
    )
Ejemplo n.º 2
0
def _enrich_one(amend: Amendement,
                amend_discussion: Optional[Amendement]) -> Amendement:
    if amend_discussion is None:
        return amend
    return amend.replace({
        "position": amend_discussion.position,
        "discussion_commune": amend_discussion.discussion_commune,
        "identique": amend_discussion.identique,
    })
Ejemplo n.º 3
0
def test_fetch_amendement(app):
    from zam_repondeur.fetch.an.amendements import fetch_amendement
    from zam_repondeur.fetch.models import Amendement

    responses.add(
        responses.GET,
        build_url(14, 4072, 177),
        body=read_sample_data("an_177.xml"),
        status=200,
    )

    amendement = fetch_amendement(
        legislature=14,
        texte=4072,
        numero=177,
        organe="PO717460",
        groups_folder=SAMPLE_DATA_DIR,
        position=1,
    )

    assert amendement == Amendement(
        chambre="an",
        session="14",
        num_texte=4072,
        organe="PO717460",
        subdiv_type="article",
        subdiv_num="3",
        subdiv_mult="",
        subdiv_pos="",
        alinea="",
        num=177,
        rectif=0,
        auteur="Door Jean-Pierre",
        matricule="267289",
        groupe="Les Républicains",
        date_depot=None,
        sort="rejeté",
        position=1,
        discussion_commune=None,
        identique=None,
        parent_num=0,
        parent_rectif=0,
        dispositif="<p>Supprimer cet article.</p>",
        objet=
        "<p>Amendement d&#8217;appel.</p>\n<p>Pour couvrir les d&#233;passements attendus de l&#8217;ONDAM pour 2016, cet article pr&#233;voit un pr&#233;l&#232;vement de 200 millions d&#8217;&#8364; sur les fonds de roulement de l&#8217;association nationale pour la formation permanente du personnel hospitalier (ANFH) et du fonds pour l&#8217;emploi hospitalier (FEH) pour financer le <span>fonds pour la modernisation des &#233;tablissements de sant&#233; publics et priv&#233;s</span>(FMESPP) en remplacement de cr&#233;dit de l&#8217;ONDAM. Il participe donc &#224; la pr&#233;sentation insinc&#232;re de la construction de l&#8217;ONDAM, d&#233;nonc&#233;e par le Comit&#233; d&#8217;alerte le 12 octobre dernier.</p>",  # noqa
        resume=None,
        avis=None,
        observations=None,
        reponse=None,
    )
    assert amendement.parent is None
Ejemplo n.º 4
0
def test_subdiv_disp(type_, pos, num, mult, output):
    from zam_repondeur.fetch.models import Amendement

    amendement = Amendement(
        chambre="senat",
        session="2017-2018",
        num_texte=63,
        organe="PO717460",
        subdiv_type=type_,
        subdiv_num=num,
        subdiv_mult=mult,
        subdiv_pos=pos,
        num=num,
    )
    assert amendement.subdiv_disp == output
Ejemplo n.º 5
0
def parse_from_csv(row: dict, session: str, num_texte: int,
                   organe: str) -> Amendement:
    num, rectif = Amendement.parse_num(row["Numéro "])
    subdiv_type, subdiv_num, subdiv_mult, subdiv_pos = _parse_subdiv(
        row["Subdivision "])
    return Amendement(  # type: ignore
        chambre="senat",
        session=session,
        num_texte=num_texte,
        organe=organe,
        num=num,
        rectif=rectif,
        subdiv_type=subdiv_type,
        subdiv_num=subdiv_num,
        subdiv_mult=subdiv_mult,
        subdiv_pos=subdiv_pos,
        alinea=row["Alinéa"].strip(),
        auteur=row["Auteur "],
        matricule=extract_matricule(row["Fiche Sénateur"]),
        date_depot=parse_date(row["Date de dépôt "]),
        sort=row["Sort "],
        dispositif=clean_html(row["Dispositif "]),
        objet=clean_html(row["Objet "]),
    )
Ejemplo n.º 6
0
def test_num_disp(text, num, rectif):
    from zam_repondeur.fetch.models import Amendement

    amendement = Amendement(
        chambre="senat",
        session="2017-2018",
        num_texte=63,
        organe="PO717460",
        subdiv_type="article",
        subdiv_num="1",
        alinea="",
        num=num,
        rectif=rectif,
        auteur="M. Dupont",
    )
    assert amendement.num_disp == text
    assert amendement.subdiv_disp == "Art. 1"
Ejemplo n.º 7
0
def _make_amendement(node: etree.Element,
                     uid_map: Dict[str, Amendement]) -> Amendement:
    extract = partial(extract_from_node, node)

    subdiv = _parse_division(node)

    texte_uid = extract("identifiant", "saisine", "refTexteLegislatif")
    if texte_uid is None:
        raise ValueError("Missing refTexteLegislatif")

    auteur_uid = extract("signataires", "auteur", "acteurRef")
    if auteur_uid is None:
        raise ValueError("Missing auteur acteurRef")

    groupe_uid = extract("signataires", "auteur", "groupePolitiqueRef")
    if groupe_uid is None:
        raise ValueError("Missing auteur groupePolitiqueRef")

    parent_num, parent_rectif = get_parent(extract("amendementParent"),
                                           uid_map)

    return Amendement(  # type: ignore
        chambre=Chambre.AN.value,
        session=extract("identifiant", "legislature"),
        num_texte=get_texte_number(texte_uid),
        organe=extract("identifiant", "saisine", "organeExamen"),
        subdiv_type=subdiv.type_,
        subdiv_num=subdiv.num,
        subdiv_mult=subdiv.mult,
        subdiv_pos=subdiv.pos,
        alinea=to_int(extract("pointeurFragmentTexte", "alinea", "numero")),
        num=to_int(extract("identifiant", "numero")),
        auteur=get_auteur_name(auteur_uid),
        matricule=auteur_uid,
        groupe=get_groupe_name(groupe_uid),
        date_depot=to_date(extract("dateDepot")),
        sort=get_sort(sort=extract("sort", "sortEnSeance"),
                      etat=extract("etat")),
        parent_num=parent_num,
        parent_rectif=parent_rectif,
        dispositif=clean_html(extract("corps", "dispositif") or ""),
        objet=clean_html(extract("corps", "exposeSommaire") or ""),
    )
Ejemplo n.º 8
0
def amendements():
    from zam_repondeur.fetch.models import Amendement

    return [
        Amendement(
            chambre="senat",
            session="2017-2018",
            num_texte=63,
            organe="PO78718",
            subdiv_type="article",
            subdiv_num="1",
            alinea="",
            num=42,
            auteur="M. DUPONT",
            groupe="RDSE",
            matricule="000000",
            dispositif="<p>L'article 1 est supprimé.</p>",
            objet="<p>Cet article va à l'encontre du principe d'égalité.</p>",
            resume="Suppression de l'article",
        ),
        Amendement(
            chambre="senat",
            session="2017-2018",
            num_texte=63,
            organe="PO78718",
            subdiv_type="article",
            subdiv_num="1",
            subdiv_pos="avant",
            alinea="",
            num=57,
            auteur="M. DURAND",
            groupe="Les Républicains",
            matricule="000001",
            objet="baz",
            dispositif="qux",
        ),
        Amendement(
            chambre="senat",
            session="2017-2018",
            num_texte=63,
            organe="PO78718",
            subdiv_type="article",
            subdiv_num="7",
            subdiv_mult="bis",
            alinea="",
            num=21,
            auteur="M. MARTIN",
            groupe=None,
            matricule="000002",
            objet="quux",
            dispositif="quuz",
        ),
        Amendement(
            chambre="senat",
            session="2017-2018",
            num_texte=63,
            organe="PO78718",
            subdiv_type="article",
            subdiv_num="1",
            alinea="",
            num=43,
            auteur="M. JEAN",
            groupe="Les Indépendants",
            matricule="000003",
            objet="corge",
            dispositif="grault",
        ),
    ]
Ejemplo n.º 9
0
def test_parse_num_commissions(text, num, rectif):
    from zam_repondeur.fetch.models import Amendement

    assert Amendement.parse_num(text) == (num, rectif)