geonature.core.gn_synthese.utils.blurring¶
Functions¶
Split permissions into two lists based on sensitivity filters. |
|
|
Return where clauses for sensitive and non-sensitive observations. |
Builds two SQLAlchemy queries that will be UNIONed. These queries are used for |
|
|
Apply permissions filters and sensitivity filters to separate blurring and precise permissions. |
$Generate the final query used to fetch observations when a user has a sensitivity filter in one of their permissions. |
Module Contents¶
- geonature.core.gn_synthese.utils.blurring.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]] [source]¶
Split permissions into two lists based on sensitivity filters.
Parameters¶
- permissionsList[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.
- geonature.core.gn_synthese.utils.blurring.build_sensitive_unsensitive_filters() Tuple [source]¶
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.
- geonature.core.gn_synthese.utils.blurring.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] [source]¶
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.
- geonature.core.gn_synthese.utils.blurring.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 [source]¶
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_permissionsList[Permission]
list contains permissions with a sensitivity scope filter
- precise_permissionsList[Permission]
list that contains permissions without sensitivity scope
- blurred_geom_querySyntheseQuery
SyntheseQuery object used to fetch sensitive observations
- precise_geom_querySyntheseQuery
SyntheseQuery object used to fetch unsensitive observations
- limitint
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
- geonature.core.gn_synthese.utils.blurring.build_synthese_obs_query(observations_columns: List[sqlalchemy.Column], allowed_geom_cte: sqlalchemy.sql.expression.CTE, limit: int) sqlalchemy.sql.expression.Select [source]¶
$Generate the final query used to fetch observations when a user has a sensitivity filter in one of their permissions.
Parameters¶
- observationsList[sa.Column]
list of fields of the Synthese returned by the query
- allowed_geom_cteCTE
CTE that contains all available observations
- limitint
number of observations limit
Returns¶
- Select
Final query