示例#1
0
def test_export_csv_columns(lecture_an, amendements_an, tmpdir):
    from zam_repondeur.services.import_export.csv import export_csv

    filename = str(tmpdir.join("test.csv"))
    counter = export_csv(lecture_an, filename, request={})
    assert counter["amendements"] == 2

    with Path(filename).open(encoding="utf-8-sig") as csv_file:
        reader = csv.reader(csv_file, delimiter=";")
        headers = next(reader)
        assert headers == [
            "Num article",
            "Titre article",
            "Num amdt",
            "Rectif",
            "Parent (sous-amdt)",
            "Auteur",
            "Groupe",
            "Gouvernemental",
            "Corps amdt",
            "Exposé amdt",
            "Identique",
            "Avis du Gouvernement",
            "Objet amdt",
            "Réponse",
            "Commentaires",
            "Affectation (email)",
            "Affectation (nom)",
            "Affectation (boite)",
            "Sort",
        ]
示例#2
0
def test_export_csv_with_parent(lecture_an, article1_an, tmpdir):
    from zam_repondeur.models import Amendement, DBSession
    from zam_repondeur.services.import_export.csv import export_csv

    filename = str(tmpdir.join("test.csv"))

    amendements = [
        Amendement.create(
            lecture=lecture_an,
            article=article1_an,
            num=num,
            position=position,
            avis="Favorable",
            objet="Un objet très pertinent",
            reponse="Une réponse très appropriée",
            comments="Avec des commentaires",
        )
        for position, num in enumerate((333, 777), 1)
    ]
    amendements[1].parent = amendements[0]
    DBSession.add_all(amendements)
    DBSession.add(lecture_an)

    counter = export_csv(lecture_an, filename, request={})

    assert counter["amendements"] == 2

    with Path(filename).open(encoding="utf-8-sig") as csv_file:
        reader = csv.DictReader(csv_file, delimiter=";")
        amendement1 = next(reader)
        assert amendement1["Parent (sous-amdt)"] == ""
        amendement2 = next(reader)
        assert amendement2["Parent (sous-amdt)"] == "333"
示例#3
0
def test_post_form_from_export(app, lecture_an, lecture_an_url, article1_an,
                               tmpdir, user_david):
    from zam_repondeur.models import Amendement, DBSession
    from zam_repondeur.services.import_export.csv import export_csv

    filename = str(tmpdir.join("test.csv"))

    with transaction.manager:
        amendements = [
            Amendement.create(
                lecture=lecture_an,
                article=article1_an,
                num=num,
                position=position,
                avis="Favorable",
                objet="Un objet très pertinent",
                reponse="Une réponse très appropriée",
                comments="Avec des commentaires",
            ) for position, num in enumerate((333, 777), 1)
        ]
        counter = export_csv(lecture_an, filename, request={})

    assert counter["amendements"] == 2

    with transaction.manager:
        amendements[0].user_content.avis = None
        amendements[1].user_content.avis = None

    form = app.get("/dossiers/plfss-2018/lectures/an.15.269.PO717460/options/",
                   user=user_david).forms["import-form"]
    form["reponses"] = Upload("file.csv", Path(filename).read_bytes())

    resp = form.submit()

    assert resp.status_code == 302
    assert resp.location == f"https://zam.test{lecture_an_url}/amendements/"

    resp = resp.follow()

    assert resp.status_code == 200
    assert "2 réponse(s) chargée(s) avec succès" in resp.text

    amendement = DBSession.query(Amendement).filter(
        Amendement.num == 333).first()
    assert amendement.user_content.avis == "Favorable"
    amendement = DBSession.query(Amendement).filter(
        Amendement.num == 777).first()
    assert amendement.user_content.avis == "Favorable"