Code source de geonature.core.gn_synthese.blueprints.others

from flask import Blueprint, jsonify, request

from geonature.core.gn_permissions.decorators import login_required
from geonature.core.gn_synthese.models import DefaultsNomenclaturesValue, TSources
from geonature.core.gn_synthese.schemas import SourceSchema
from geonature.utils.env import db

from sqlalchemy import distinct, func, select
from utils_flask_sqla.response import json_resp
from werkzeug.exceptions import NotFound

[docs] other_routes = Blueprint("synthese_other_routes", __name__)
@other_routes.route("/sources", methods=["GET"]) @login_required @json_resp
[docs] def get_sources(): """Get all sources. .. :quickref: Synthese; """ data = db.session.scalars(select(TSources)).all() return SourceSchema(many=True).dump(data)
@other_routes.route("/defaultsNomenclatures", methods=["GET"]) @login_required
[docs] def getDefaultsNomenclatures(): """Get default nomenclatures .. :quickref: Synthese; :query str group2_inpn: :query str regne: :query int organism: """ group2_inpn = request.args.get("group2_inpn", "0") regne = request.args.get("regne", "0") organism = int(request.args.get("organism", 0)) types = request.args.getlist("mnemonique_type") query = select( func.distinct(DefaultsNomenclaturesValue.mnemonique_type), func.gn_synthese.get_default_nomenclature_value( DefaultsNomenclaturesValue.mnemonique_type, organism, regne, group2_inpn ), ) if len(types) > 0: query = query.where(DefaultsNomenclaturesValue.mnemonique_type.in_(tuple(types))) data = db.session.execute(query).all() if not data: raise NotFound return jsonify(dict(data))