geonature.core.gn_synthese.utils.query_select_sqla#

Utility function to manage permissions and all filter of Synthese Use these functions rather than query.py Filter the query of synthese using SQLA expression language and “select” object https://docs.sqlalchemy.org/en/latest/core/tutorial.html#selecting much more efficient

Classes#

SyntheseQuery

class for building synthese query and manage join

Functions#

remove_accents(input_str)

Module Contents#

class geonature.core.gn_synthese.utils.query_select_sqla.SyntheseQuery(model, query, filters, id_synthese_column='id_synthese', id_dataset_column='id_dataset', observers_column='observers', id_digitiser_column='id_digitiser', with_generic_table=False, query_joins=None, geom_column=None)[source]#

class for building synthese query and manage join

Attributes:

query: SQLA select object filters: dict of query string filters model: a SQLA model _already_joined_table: (private) a list of already joined table. Auto build with “add_join” method query_joins = SQLA Join object

query[source]#
filters[source]#
first[source]#
model[source]#
_already_joined_table = [][source]#
query_joins[source]#
geom_column[source]#
add_join(right_table, right_column, left_column, join_type='right')[source]#
add_join_multiple_cond(right_table, conditions)[source]#
build_permissions_filter(user, permissions)[source]#

Return a where clause for the given permissions set

filter_query_with_permissions(user, permissions)[source]#

Filter the query with the permissions of a user

filter_query_with_cruved(user, scope)[source]#

Filter the query with the cruved authorization of a user

filter_taxonomy()[source]#

Filters the query with taxonomic attributes Parameters:

  • q (SQLAchemyQuery): an SQLAchemy query

  • filters (dict): a dict of filter

Returns:

-Tuple: the SQLAlchemy query and the filter dictionnary

filter_other_filters(user)[source]#

Other filters

apply_all_filters(user, permissions)[source]#
build_query()[source]#
filter_query_all_filters(user, permissions)[source]#

High level function to manage query with all filters.

Apply CRUVED, taxonomy and other filters.

Parameters#

user: str

User filtered by CRUVED.

Returns#

sqlalchemy.orm.query.Query.filter

Combined filter to apply.

build_bdc_status_filters(protection_status_value, red_list_filters)[source]#

Create subquery for bdc_status filters

Objectiffiltrer les données ayant :
  • les statuts du type demandé par l’utilisateur

  • les status s’appliquent bien sur la zone géographique de la donnée (c-a-d le département)

Idée de façon à limiter le nombre de sous requêtes (le nombre de status demandé ne dégrade pas les performances),

la liste des status selectionnés par l’utilisateur s’appliquant à l’observation est aggrégée de façon à tester le nombre puis jointer sur le département de la donnée

geonature.core.gn_synthese.utils.query_select_sqla.remove_accents(input_str)[source]#