geonature.core.gn_synthese.utils.blurring ========================================= .. py:module:: geonature.core.gn_synthese.utils.blurring Functions --------- .. autoapisummary:: geonature.core.gn_synthese.utils.blurring.split_blurring_precise_permissions geonature.core.gn_synthese.utils.blurring.build_sensitive_unsensitive_filters geonature.core.gn_synthese.utils.blurring.build_blurred_precise_geom_queries geonature.core.gn_synthese.utils.blurring.build_allowed_geom_cte geonature.core.gn_synthese.utils.blurring.build_synthese_obs_query Module Contents --------------- .. py:function:: split_blurring_precise_permissions(permissions: List[geonature.core.gn_permissions.models.Permission]) -> Tuple[List[geonature.core.gn_permissions.models.Permission], List[geonature.core.gn_permissions.models.Permission]] Split permissions into two lists based on sensitivity filters. Parameters ---------- permissions : List[Permission] List of permissions to be split. Returns ------- Tuple[List[Permission], List[Permission]] A tuple containing two lists: - The first list contains permissions with sensitivity filters. - The second list contains permissions without sensitivity filters. .. py:function:: build_sensitive_unsensitive_filters() -> Tuple Return where clauses for sensitive and non-sensitive observations. Returns ------- Tuple[sa.Column, sa.Column] A tuple containing two SQLAlchemy where clauses: - The first clause is for sensitive observations. - The second clause is for non-sensitive observations. .. py:function:: build_blurred_precise_geom_queries(filters: Dict[str, any], where_clauses: list = [], select_size_hierarchy: bool = False) -> Tuple[geonature.core.gn_synthese.utils.query_select_sqla.SyntheseQuery, geonature.core.gn_synthese.utils.query_select_sqla.SyntheseQuery] Builds two SQLAlchemy queries that will be UNIONed. These queries are used for the export of geometries in a sensitive or non-sensitive context. The provided `where_clauses` list enables adding additional conditions to the base query. Parameters ---------- filters: (Dict[str, any]) A dictionary containing filteringriteria retrieved from the HTTP query. where_clauses: (list, optional) Additional WHERE clause conditions for the base query. Defaults to []. select_size_hierarchy: (bool, optional) Include the size hierarchy column in the generated queries (used in the grid mode). Defaults to False. Returns ------- Tuple[SyntheseQuery, SyntheseQuery] A tuple containing two `SyntheseQuery` objects representing the blurred and precise geometries queries. .. py:function:: build_allowed_geom_cte(blurring_permissions: List[geonature.core.gn_permissions.models.Permission], precise_permissions: List[geonature.core.gn_permissions.models.Permission], blurred_geom_query: geonature.core.gn_synthese.utils.query_select_sqla.SyntheseQuery, precise_geom_query: geonature.core.gn_synthese.utils.query_select_sqla.SyntheseQuery, limit: int) -> sqlalchemy.sql.expression.Select Apply permissions filters and sensitivity filters to separate blurring and precise permissions. This method ensures that sensitive and non-sensitive observations are correctly filtered based on the provided permissions. The goal is to separate the blurring and precise permissions. But in sensitive permissions there can be unsensitive observations so we need to split them. sensitive_where_clause and unsensitive_where_clause represents this split Parameters ---------- blurring_permissions : List[Permission] list contains permissions with a sensitivity scope filter precise_permissions : List[Permission] list that contains permissions without sensitivity scope blurred_geom_query : SyntheseQuery SyntheseQuery object used to fetch sensitive observations precise_geom_query : SyntheseQuery SyntheseQuery object used to fetch unsensitive observations limit : int limit of observations returned Returns ------- Select Union between blurred obs and non-blurred obs Notes ----- See https://github.com/PnX-SI/GeoNature/issues/2558 for more informations .. py:function:: build_synthese_obs_query(observations_columns: List[sqlalchemy.Column], allowed_geom_cte: sqlalchemy.sql.expression.CTE, limit: int) -> sqlalchemy.sql.expression.Select $Generate the final query used to fetch observations when a user has a sensitivity filter in one of their permissions. Parameters ---------- observations : List[sa.Column] list of fields of the Synthese returned by the query allowed_geom_cte : CTE CTE that contains all available observations limit : int number of observations limit Returns ------- Select Final query