Skip to content

Commit bcc6df3

Browse files
committed
add is_product_owner, maitre_ouvrage, echelle_saisie, ref_geo_saisie fields (refs PnX-SI#52)
1 parent f6a9186 commit bcc6df3

21 files changed

+1039
-256
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 "maitre_ouvrage", "echelle_saisie", "ref_geo_saisie"(#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: 91 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.maitre_ouvrage,
364+
tz.echelle_saisie,
363365
Json_build_object('criteres_delim', tz.criteres_delim,
364366
'communes',
365367
tz.communes,
@@ -452,6 +454,94 @@ 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(BibOrganismes, func.similarity(BibOrganismes.name, search_product_owner).label("idx_trgm"))
466+
467+
search_product_owner = search_product_owner.replace(" ", "%")
468+
q = q.where(BibOrganismes.name.ilike("%" + search_product_owner + "%")).where(BibOrganismes.is_product_owner == True).order_by(desc("idx_trgm"))
469+
470+
limit = request.args.get("limit", 20)
471+
data = DB.session.execute(q.limit(limit)).all()
472+
if data:
473+
return [d[0].as_dict() for d in data]
474+
else:
475+
return "No Result", 404
476+
except Exception as e:
477+
if e.__class__.__name__ == "ZHApiError":
478+
raise ZHApiError(message=str(e.message), details=str(e.details))
479+
exc_type, value, tb = sys.exc_info()
480+
raise ZHApiError(
481+
message="get_product_owner_autocomplete_error",
482+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
483+
)
484+
finally:
485+
DB.session.close()
486+
487+
@blueprint.route("/echelle_saisie/autocomplete", methods=["GET"])
488+
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
489+
@json_resp
490+
def get_echelle_saisie_autocomplete():
491+
try:
492+
params = request.args
493+
search_echelle_saisie = params.get("search_echelle_saisie")
494+
id_nommenclature_type = DB.session.execute(select(BibNomenclaturesTypes.id_type).where(BibNomenclaturesTypes.mnemonique.like('ECHELLE_SAISIE'))).scalar_one()
495+
q = select(TNomenclatures.mnemonique).where(TNomenclatures.id_type == id_nommenclature_type).where(TNomenclatures.mnemonique.ilike("%" + search_echelle_saisie + "%"))
496+
497+
limit = request.args.get("limit", 20)
498+
data = DB.session.execute(q.limit(limit)).all()
499+
500+
if data:
501+
return [d[0] for d in data]
502+
else:
503+
return "No Result", 404
504+
except Exception as e:
505+
if e.__class__.__name__ == "ZHApiError":
506+
raise ZHApiError(message=str(e.message), details=str(e.details))
507+
exc_type, value, tb = sys.exc_info()
508+
raise ZHApiError(
509+
message="get_echelle_saisie_autocomplete_error",
510+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
511+
)
512+
finally:
513+
DB.session.close()
514+
515+
@blueprint.route("/ref_geo_saisie/autocomplete", methods=["GET"])
516+
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
517+
@json_resp
518+
def get_ref_geo_saisie_autocomplete():
519+
try:
520+
params = request.args
521+
search_ref_geo_saisie = params.get("search_ref_geo_saisie")
522+
id_nommenclature_type = DB.session.execute(select(BibNomenclaturesTypes.id_type).where(BibNomenclaturesTypes.mnemonique.like('REF_GEO_SAISIE'))).scalar_one()
523+
q = select(TNomenclatures.mnemonique).where(TNomenclatures.id_type == id_nommenclature_type).where(TNomenclatures.mnemonique.ilike("%" + search_ref_geo_saisie + "%"))
524+
525+
limit = request.args.get("limit", 20)
526+
data = DB.session.execute(q.limit(limit)).all()
527+
528+
if data:
529+
return [d[0] for d in data]
530+
else:
531+
return "No Result", 404
532+
533+
except Exception as e:
534+
if e.__class__.__name__ == "ZHApiError":
535+
raise ZHApiError(message=str(e.message), details=str(e.details))
536+
exc_type, value, tb = sys.exc_info()
537+
raise ZHApiError(
538+
message="get_ref_geo_saisie_autocomplete_error",
539+
details=str(exc_type) + ": " + str(e.with_traceback(tb)),
540+
)
541+
finally:
542+
DB.session.close()
543+
544+
455545
@blueprint.route("/<int:id_zh>/files", methods=["GET"])
456546
@permissions.check_cruved_scope("R", module_code="ZONES_HUMIDES")
457547
@json_resp_accept_empty_list
@@ -628,7 +718,6 @@ def get_tab_data(id_tab):
628718
raise BadRequest(
629719
"Géométrie manquante",
630720
)
631-
632721
# POST / PATCH
633722
if "id_zh" not in form_data.keys():
634723
# 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": "echelle_saisie", "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+
maitre_ouvrage = form_data["maitre_ouvrage"],
90+
echelle_saisie = form_data["echelle_saisie"],
91+
ref_geo_saisie = form_data["ref_geo_saisie"]
8992
)
9093
DB.session.add(new_zh)
9194
DB.session.flush()

0 commit comments

Comments
 (0)