Skip to content

Commit

Permalink
Udvid fire info sag med mere fleksibel søgefunktionalitet
Browse files Browse the repository at this point in the history
  • Loading branch information
krebslw committed Oct 28, 2024
1 parent 860c71a commit 033262d
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 10 deletions.
49 changes: 48 additions & 1 deletion fire/api/firedb/hent.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@

from sqlalchemy import func, or_, and_
from sqlalchemy.orm import aliased, joinedload
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound

from fire.api.firedb.base import FireDbBase
from fire.api.model import (
Sag,
Sagsinfo,
Punkt,
PunktSamling,
PunktInformation,
Expand Down Expand Up @@ -213,6 +214,52 @@ def hent_sag(self, sagsid: str) -> Sag:
"""
return self.session.query(Sag).filter(Sag.id.ilike(f"{sagsid}%")).one()

def hent_sager(
self,
søgetekst: str,
aktiv: bool = False,
tid_fra: datetime = None,
tid_til: datetime = None,
) -> list[Sag]:
"""
Hent sager ud fra søgekriterier
"""

try:
sag = self.hent_sag(søgetekst)
except (NoResultFound, MultipleResultsFound):
pass
else:
return [sag]

q = self.session.query(Sagsinfo).join(Sag) #.filter(Sag.aktiv == aktiv)

if søgetekst is not None:
q = q.filter(Sagsinfo.beskrivelse.ilike(f"%{søgetekst or ''}%"))

fra_fejltekst = ""
if tid_fra:
fra_fejltekst = f"fra {tid_fra}"
q = q.filter(Sag.registreringfra >= tid_fra)

til_fejltekst = ""
if tid_til:
til_fejltekst = f"til {tid_til}"
q = q.filter(Sag.registreringfra < tid_til)

sagsinfos = q.all()
# print(sagsinfos)

# raise SystemExit
sager = list(set([si.sag for si in sagsinfos]))

if not sager:
raise NoResultFound(
f"Ingen sager med '{søgetekst}' fundet {fra_fejltekst} {til_fejltekst}"
)

return sager

def hent_alle_sager(self, aktive=True) -> List[Sag]:
"""
Henter alle sager fra databasen.
Expand Down
52 changes: 43 additions & 9 deletions fire/cli/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from typing import List

import click
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
from sqlalchemy import not_, or_
from pyproj import CRS
from pyproj.exceptions import CRSError
Expand All @@ -22,6 +22,10 @@
Srid,
Tidsserie,
)
from fire.cli.click_types import Datetime

DATE_FORMAT = "%d-%m-%Y"
"Dato-format til kommandolinie-argument."


@click.group()
Expand Down Expand Up @@ -698,19 +702,43 @@ def obstype(obstype: str, **kwargs):
@info.command()
@fire.cli.default_options()
@click.argument("sagsid", required=False)
def sag(sagsid: str, **kwargs):
@click.option(
"-df",
"--fra",
help=f"Hent sager fra og med denne dato. Angives på formen {DATE_FORMAT}.",
required=False,
type=Datetime(format=DATE_FORMAT),
)
@click.option(
"-dt",
"--til",
help=f"Hent sager til, men ikke med, denne dato. Angives på formen {DATE_FORMAT}.",
required=False,
type=Datetime(format=DATE_FORMAT),
)
def sag(
sagsid: str,
fra: datetime.datetime,
til: datetime.datetime,
**kwargs):
"""
Information om en sag.
Anføres **SAG** ikke sagsid listes alle aktive sager.
"""
if sagsid:
try:
sag = fire.cli.firedb.hent_sag(sagsid)
except NoResultFound:
fire.cli.print(f"Fejl! {sagsid} ikke fundet!", fg="red", err=True)
raise SystemExit(1)
sager = []

try:
sag = fire.cli.firedb.hent_sag(sagsid)
except (NoResultFound, MultipleResultsFound):

if sagsid or fra or til:
sager = fire.cli.firedb.hent_sager(søgetekst=sagsid, tid_fra=fra, tid_til=til)

if len(sager)==1:
sag = sager[0]

if sag:
fire.cli.print(
"------------------------- SAG -------------------------", bold=True
)
Expand Down Expand Up @@ -743,10 +771,16 @@ def sag(sagsid: str, **kwargs):

return

sager = fire.cli.firedb.hent_alle_sager()
if not sager:
sager = fire.cli.firedb.hent_alle_sager()

fire.cli.print("Sagsid Behandler Beskrivelse", bold=True)
fire.cli.print("--------- ------------------ -----------")
for sag in sager:
if not sag.aktiv:
# Spring inaktive sager over
continue

beskrivelse = sag.beskrivelse[0:70].strip().replace("\n", " ").replace("\r", "")
fire.cli.print(f"{sag.id[0:8]}: {sag.behandler:20}{beskrivelse}...")

Expand Down

0 comments on commit 033262d

Please sign in to comment.