geonature.core.gn_synthese.utils.blurring

Functions

split_blurring_precise_permissions(...)

Split permissions into two lists based on sensitivity filters.

build_sensitive_unsensitive_filters(→ Tuple)

Return where clauses for sensitive and non-sensitive observations.

build_blurred_precise_geom_queries(...)

Builds two SQLAlchemy queries that will be UNIONed. These queries are used for

build_allowed_geom_cte(→ sqlalchemy.sql.expression.Select)

Apply permissions filters and sensitivity filters to separate blurring and precise permissions.

build_synthese_obs_query(...)

$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