Skip to content

Commit 5bb62e1

Browse files
committed
add is_product_owner, product_owner, input_scale, input_ref_geo fields (refs PnX-SI#52)
1 parent 8d7e9ad commit 5bb62e1

21 files changed

+829
-5
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ venv.bak/
106106

107107
# vscode
108108
.vscode/
109+
110+
.idea
111+
cache
109112
# config module
110113
frontend/app/module.config.ts
111114

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
(à déterminer)
66

7+
**🚀 Nouveautés**
8+
9+
- Ajout de 3 nouveau champs "product_owner", "input_scale", "input_ref_geo"(#52, by @juggler31)
10+
711
**🐛 Corrections**
812

913
- Ajout du boutton "quitter" sur l'onglet 9 (#114, by @juggler31)

backend/gn_module_zh/blueprint.py

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from ref_geo.models import BibAreasTypes, LAreas, LiMunicipalities
2020
from geonature.utils.config import config
2121
from geonature.utils.env import DB, ROOT_DIR, BACKEND_DIR
22-
from pypnnomenclature.models import TNomenclatures
22+
from pypnnomenclature.models import TNomenclatures, BibNomenclaturesTypes
2323
from pypnusershub.db.models import Organisme, User
2424
from sqlalchemy import desc, func, text, select, update, delete
2525
from sqlalchemy.orm import aliased
@@ -360,6 +360,8 @@ def get_pbf_complete():
360360
tz.menaces,
361361
tz.diagnostic_bio,
362362
tz.diagnostic_hydro,
363+
tz.product_owner,
364+
tz.input_scale,
363365
Json_build_object('criteres_delim', tz.criteres_delim,
364366
'communes',
365367
tz.communes,
@@ -452,6 +454,119 @@ def get_ref_autocomplete():
452454
DB.session.close()
453455

454456

457+
@blueprint.route("/product_owner/autocomplete", methods=["GET"])
458+
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
459+
@json_resp
460+
def get_product_owner_autocomplete():
461+
try:
462+
params = request.args
463+
search_product_owner = params.get("search_product_owner")
464+
# search_title = 'MCD'
465+
q = select(
466+
BibOrganismes,
467+
func.similarity(BibOrganismes.name, search_product_owner).label("idx_trgm"),
468+
)
469+
470+
search_product_owner = search_product_owner.replace(" ", "%")
471+
q = (
472+
q.where(BibOrganismes.name.ilike("%" + search_product_owner + "%"))
473+
.where(BibOrganismes.is_product_owner == True)
474+
.order_by(desc("idx_trgm"))
475+
)
476+
477+
limit = request.args.get("limit", 20)
478+
data = DB.session.execute(q.limit(limit)).all()
479+
if data:
480+
return [d[0].as_dict() for d in data]
481+
else:
482+
return "No Result", 404
483+
except Exception as e:
484+
if e.__class__.__name__ == "ZHApiError":
485+
raise ZHApiError(message=str(e.message), details=str(e.details))
486+
exc_type, value, tb = sys.exc_info()
487+
raise ZHApiError(
488+
message="get_product_owner_autocomplete_error",
489+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
490+
)
491+
finally:
492+
DB.session.close()
493+
494+
495+
@blueprint.route("/input_scale/autocomplete", methods=["GET"])
496+
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
497+
@json_resp
498+
def get_input_scale_autocomplete():
499+
try:
500+
params = request.args
501+
search_input_scale = params.get("search_input_scale")
502+
id_nommenclature_type = DB.session.execute(
503+
select(BibNomenclaturesTypes.id_type).where(
504+
BibNomenclaturesTypes.mnemonique.like("INPUT_SCALE")
505+
)
506+
).scalar_one()
507+
q = (
508+
select(TNomenclatures.mnemonique)
509+
.where(TNomenclatures.id_type == id_nommenclature_type)
510+
.where(TNomenclatures.mnemonique.ilike("%" + search_input_scale + "%"))
511+
)
512+
513+
limit = request.args.get("limit", 20)
514+
data = DB.session.execute(q.limit(limit)).all()
515+
516+
if data:
517+
return [d[0] for d in data]
518+
else:
519+
return "No Result", 404
520+
except Exception as e:
521+
if e.__class__.__name__ == "ZHApiError":
522+
raise ZHApiError(message=str(e.message), details=str(e.details))
523+
exc_type, value, tb = sys.exc_info()
524+
raise ZHApiError(
525+
message="get_input_scale_autocomplete_error",
526+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
527+
)
528+
finally:
529+
DB.session.close()
530+
531+
532+
@blueprint.route("/input_ref_geo/autocomplete", methods=["GET"])
533+
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
534+
@json_resp
535+
def get_input_ref_geo_autocomplete():
536+
try:
537+
params = request.args
538+
search_input_ref_geo = params.get("search_input_ref_geo")
539+
id_nommenclature_type = DB.session.execute(
540+
select(BibNomenclaturesTypes.id_type).where(
541+
BibNomenclaturesTypes.mnemonique.like("INPUT_REF_GEO")
542+
)
543+
).scalar_one()
544+
q = (
545+
select(TNomenclatures.mnemonique)
546+
.where(TNomenclatures.id_type == id_nommenclature_type)
547+
.where(TNomenclatures.mnemonique.ilike("%" + search_input_ref_geo + "%"))
548+
)
549+
550+
limit = request.args.get("limit", 20)
551+
data = DB.session.execute(q.limit(limit)).all()
552+
553+
if data:
554+
return [d[0] for d in data]
555+
else:
556+
return "No Result", 404
557+
558+
except Exception as e:
559+
if e.__class__.__name__ == "ZHApiError":
560+
raise ZHApiError(message=str(e.message), details=str(e.details))
561+
exc_type, value, tb = sys.exc_info()
562+
raise ZHApiError(
563+
message="get_input_ref_geo_autocomplete_error",
564+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
565+
)
566+
finally:
567+
DB.session.close()
568+
569+
455570
@blueprint.route("/<int:id_zh>/files", methods=["GET"])
456571
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
457572
@json_resp_accept_empty_list
@@ -628,7 +743,6 @@ def get_tab_data(id_tab):
628743
raise BadRequest(
629744
"Géométrie manquante",
630745
)
631-
632746
# POST / PATCH
633747
if "id_zh" not in form_data.keys():
634748
# set geometry from coordinates

backend/gn_module_zh/conf_schema_toml.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class MapListConfig(Schema):
2626
{"prop": "code", "name": "Code"},
2727
{"prop": "sdage", "name": "Typologie SDAGE", "sortable": True},
2828
{"prop": "bassin_versant", "name": "Bassin versant", "sortable": True},
29+
{"prop": "input_scale", "name": "Échelle de saisie"},
2930
{"prop": "delims", "name": "Critères délimitation (de la zh)", "sortable": True},
3031
{"prop": "create_date", "name": "Date de création"},
3132
{"prop": "author", "name": "Auteur"},

backend/gn_module_zh/forms.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ def create_zh(form_data, info_role, zh_date, polygon, zh_area, ref_geo_referenti
8686
geom=polygon,
8787
area=zh_area,
8888
main_id_rb=main_id_rb,
89+
product_owner=form_data["product_owner"],
90+
input_scale=form_data["input_scale"],
91+
input_ref_geo=form_data["input_ref_geo"],
8992
)
9093
DB.session.add(new_zh)
9194
DB.session.flush()

0 commit comments

Comments
 (0)