Exemplo n.º 1
0
def test_revision(mocker):
    """Test fire niv kommandoer relateret til punktrevision"""
    runner = CliRunner()

    with runner.isolated_filesystem():
        # fire niv opret-sag test
        mocker.patch("fire.cli.niv._opret_sag.bekræft", return_value=True)
        result = runner.invoke(niv,
                               ["opret-sag", "testsag", "This is only a test"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv udtræk-revision test
        result = runner.invoke(niv,
                               ["udtræk-revision", "testsag", "k-63", "SKEJ"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv ilæg-revision test
        mocker.patch("fire.cli.niv._ilæg_revision.bekræft", return_value=True)
        result = runner.invoke(niv, ["ilæg-revision", "testsag"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv ilæg-nye-punkter test
        nyetablerede = find_faneblad("testsag", "Nyetablerede punkter",
                                     ARKDEF_NYETABLEREDE_PUNKTER)

        nyt_punkt = {
            "Foreløbigt navn": "Dokk1",
            "Nord": 56.176809,
            "Øst": 10.22475,
            "Fikspunktstype": "Højde",
            "Beskrivelse": "Testpunkt",
            "Afmærkning": "Bolt",
            "Højde_over_terræn": 1.32,
        }
        nyetablerede = nyetablerede.append(nyt_punkt, ignore_index=True)
        skriv_ark("testsag", {"Nyetablerede punkter": nyetablerede})

        mocker.patch("fire.cli.niv._ilæg_nye_punkter.bekræft",
                     return_value=True)
        result = runner.invoke(niv, ["ilæg-nye-punkter", "testsag"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv luk-sag test
        mocker.patch("fire.cli.niv._luk_sag.bekræft", return_value=True)
        result = runner.invoke(niv, ["luk-sag", "testsag"])
        print(result.output)
        assert result.exit_code == 0
Exemplo n.º 2
0
def test_observationer(mocker):
    """Test fire niv kommandoer relateret til punktrevision"""
    runner = CliRunner()

    used_files = ["obs_mgl"]
    files = []
    for filename in used_files:
        with open(Path(__file__).resolve().parent / filename) as f:
            files.append((filename, f.readlines()))

    with runner.isolated_filesystem():
        # kopier filer til isoleret filsystem
        for (filename, data) in files:
            with open(filename, "w") as f:
                f.writelines(data)

        # fire niv opret-sag test
        mocker.patch("fire.cli.niv._opret_sag.bekræft", return_value=True)
        result = runner.invoke(niv,
                               ["opret-sag", "testsag", "This is only a test"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv læs-observationer test
        inputfiler = find_faneblad("testsag", "Filoversigt",
                                   ARKDEF_FILOVERSIGT)
        fil = {
            "Filnavn": "obs_mgl",
            "Type": "MGL",
            "σ": 0.7,
            "δ": 0.02,
        }
        inputfiler = inputfiler.append(fil, ignore_index=True)
        skriv_ark("testsag", {"Filoversigt": inputfiler})

        result = runner.invoke(niv, ["læs-observationer", "testsag"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv ilæg-observationer test
        mocker.patch("fire.cli.niv._ilæg_observationer.bekræft",
                     return_value=True)
        result = runner.invoke(niv, ["ilæg-observationer", "testsag"])
        print(result.output)
        assert result.exit_code == 0

        # fire niv luk-sag test
        mocker.patch("fire.cli.niv._luk_sag.bekræft", return_value=True)
        result = runner.invoke(niv, ["luk-sag", "testsag"])
        print(result.output)
        assert result.exit_code == 0
Exemplo n.º 3
0
def opret_sag(projektnavn: str, beskrivelse: str, sagsbehandler: str,
              **kwargs) -> None:
    """Registrer ny sag i databasen"""

    if os.path.isfile(f"{projektnavn}.xlsx"):
        fire.cli.print(
            f"Filen '{projektnavn}.xlsx' eksisterer - sagen er allerede oprettet"
        )
        sys.exit(1)

    beskrivelse = " ".join(beskrivelse)

    sag = {
        "Dato": pd.Timestamp.now(),
        "Hvem": sagsbehandler,
        "Hændelse": "sagsoprettelse",
        "Tekst": f"{projektnavn}: {beskrivelse}",
        "uuid": uuid(),
    }
    sagsgang = pd.DataFrame([sag], columns=tuple(arkdef.SAG))

    fire.cli.print(f"Sags/projekt-navn: {projektnavn}  ({sag['uuid']})")
    fire.cli.print(f"Sagsbehandler:     {sagsbehandler}")
    fire.cli.print(f"Beskrivelse:       {beskrivelse}")
    sagsinfo = Sagsinfo(
        aktiv="true",
        behandler=sagsbehandler,
        beskrivelse=f"{projektnavn}: {beskrivelse}",
    )
    fire.cli.firedb.indset_sag(Sag(id=sag["uuid"], sagsinfos=[sagsinfo]),
                               commit=False)
    try:
        fire.cli.firedb.session.flush()
    except Exception as ex:
        fire.cli.firedb.session.rollback()
        fire.cli.print(
            f"Der opstod en fejl - sag {sag.id} for '{projektnavn}' IKKE oprettet"
        )
        return
    else:
        spørgsmål = click.style(
            f"Opretter ny sag i {fire.cli.firedb.db}-databasen - er du sikker? ",
            bg="red",
            fg="white",
        )
        if bekræft(spørgsmål):
            fire.cli.firedb.session.commit()
            fire.cli.print(f"Sag '{projektnavn}' oprettet")
        else:
            fire.cli.firedb.session.rollback()
            fire.cli.print("Opretter IKKE sag")
            # Ved demonstration af systemet er det nyttigt at kunne oprette
            # et sagsregneark, uden at oprette en tilhørende sag
            if not bekræft("Opret sagsregneark alligevel?", gentag=False):
                return

    fire.cli.print(f"Skriver sagsregneark '{projektnavn}.xlsx'")

    # Dummyopsætninger til sagsregnearkets sider
    forside = pd.DataFrame()
    nyetablerede = pd.DataFrame(
        columns=tuple(arkdef.NYETABLEREDE_PUNKTER)).astype(
            arkdef.NYETABLEREDE_PUNKTER)
    notater = pd.DataFrame([{
        "Dato": pd.Timestamp.now(),
        "Hvem": "",
        "Tekst": ""
    }])
    filoversigt = pd.DataFrame(columns=tuple(arkdef.FILOVERSIGT))
    param = pd.DataFrame(
        columns=["Navn", "Værdi"],
        data=[("Version", fire.__version__), ("Database", fire.cli.firedb.db)],
    )

    resultater = {
        "Projektforside": forside,
        "Sagsgang": sagsgang,
        "Nyetablerede punkter": nyetablerede,
        "Notater": notater,
        "Filoversigt": filoversigt,
        "Parametre": param,
    }

    if skriv_ark(projektnavn, resultater):
        # os.startfile() er kun tilgængelig på Windows
        if "startfile" in dir(os):
            fire.cli.print("Færdig! - åbner regneark for check.")
            os.startfile(f"{projektnavn}.xlsx")