Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Udvid fire info sag med mere fleksibel søgefunktionalitet #791

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 = []
sag = None
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

Comment on lines +780 to +783
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Her kunne man måske give mulighed for også at vise inaktive sager ved at angive et kommandolinjeflag

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

Expand Down
Loading