Skip to content

Commit

Permalink
last change for sqla 1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
jacquesfize committed Jan 17, 2024
1 parent ffb1fbb commit 2304d72
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 20 deletions.
5 changes: 3 additions & 2 deletions backend/gn_modulator/blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@
def set_current_module(endpoint, values):
requested_module = values.get("module_code") or MODULE_CODE

g.current_module = TModules.query.filter_by(module_code=requested_module).first_or_404(
f"No module name {requested_module} {endpoint}"
g.current_module = db.first_or_404(
select(TModules).filter_by(module_code=requested_module),
description=f"No module name {requested_module} {endpoint}",
)


Expand Down
6 changes: 5 additions & 1 deletion backend/gn_modulator/definition/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import jsonschema

from geonature.core.gn_commons.models import TModules
from geonature.utils.env import db

from gn_modulator.utils.env import config_dir
from gn_modulator.utils.cache import set_global_cache, get_global_cache
from gn_modulator.utils.errors import add_error, get_errors
from gn_modulator.utils.commons import get_class_from_path
from gn_modulator.schematisable import schematisable
from sqlalchemy import select


class DefinitionBase:
Expand All @@ -29,7 +31,9 @@ class DefinitionBase:
@classmethod
def module_in_db(cls, module_code):
try:
TModules.query().filter_by(module_code=module_code).one()
return db.session.execute(
select(TModules).filter_by(module_code=module_code)
).scalar_one()
except Exception:
return False

Expand Down
6 changes: 3 additions & 3 deletions backend/gn_modulator/query/existing_permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ def synthese_subquery_scope(cls, id_role):
CurrentUser = sa.orm.aliased(User)

pre_scope = (
db.session.query(Synthese)
sa.select(Synthese)
.join(CurrentUser, CurrentUser.id_role == id_role)
.join(Observers, Synthese.cor_observers, isouter=True)
.join(TDatasets, Synthese.dataset, isouter=True)
.join(TDatasets.cor_dataset_actor, isouter=True)
.join(TAcquisitionFramework, TDatasets.acquisition_framework, isouter=True)
.join(TAcquisitionFramework.cor_af_actor, isouter=True)
.with_entities(
.with_only_columns(
Synthese.id_synthese,
Observers.id_role.label("id_role_obs"),
Observers.id_organisme.label("id_organisme_obs"),
Expand All @@ -55,7 +55,7 @@ def synthese_subquery_scope(cls, id_role):
)
).cte("pre_scope")

scope_expression = db.session.query(Synthese).with_entities(
scope_expression = sa.select(Synthese).with_only_columns(
Synthese.id_synthese,
sa.case(
(
Expand Down
4 changes: 2 additions & 2 deletions backend/gn_modulator/routes/imports.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging
from flask import request, jsonify

from sqlalchemy import orm
from sqlalchemy import orm, select
from gn_modulator.routes.utils.decorators import check_module_object_route
from geonature.utils.env import db
from geonature.core.gn_permissions import decorators as permissions
Expand Down Expand Up @@ -63,7 +63,7 @@ def f_api_import_async(module_code, object_code, id_import):

if id_import:
try:
impt = TImport.query.filter_by(id_import=id_import).one()
impt = db.session.execute(select(TImport).filter_by(id_import=id_import)).scalar_one()
except orm.exc.NoResultFound:
return f"Pas d'import trouvé pour id_import={id_import}", 404
else:
Expand Down
10 changes: 5 additions & 5 deletions backend/gn_modulator/schema/repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,11 +331,11 @@ def get_page_number(self, value, module_code, action, params):
self.Model(), module_code, action, params, "page_number"
).subquery()

row_number = (
db.session.query(sub_query_list.c.row_number)
.filter(getattr(sub_query_list.c, self.Model().pk_field_name()) == value)
.one()[0]
)
row_number = db.session.execute(
sa.select(sub_query_list.c.row_number).where(
getattr(sub_query_list.c, self.Model().pk_field_name()) == value
)
).scalar_one()

page_number = math.ceil(row_number / params.get("page_size"))

Expand Down
5 changes: 3 additions & 2 deletions backend/gn_modulator/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
from geonature.utils.celery import celery_app
from gn_modulator.imports.models import TImport
from geonature.utils.env import db
from sqlalchemy import select

logger = get_task_logger(__name__)


@celery_app.task(bind=True)
def process_import(self, id_import):
self.update_state(state="PROGRESS")
req = db.session.query(TImport).filter(TImport.id_import == id_import)
impt = req.one()
req = select(TImport).where(TImport.id_import == id_import)
impt = db.session.execute(req).scalar_one()
impt._logger = logger
impt.process_import_schema()
10 changes: 5 additions & 5 deletions contrib/m_sipaf/backend/m_sipaf/permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ def passage_faune_subquery_scope(cls, id_role):
CurrentUser = sa.orm.aliased(User)

pre_scope = (
db.session.query(PassageFaune)
sa.select(PassageFaune)
.join(CurrentUser, CurrentUser.id_role == id_role)
.join(PassageFaune.actors, isouter=True)
.with_entities(
.with_only_columns(
PassageFaune.id_passage_faune,
PassageFaune.id_digitiser,
PassageFaune.uuid_passage_faune,
Expand All @@ -23,7 +23,7 @@ def passage_faune_subquery_scope(cls, id_role):
)
.cte("pre_scope")
)
scope_expression = db.session.query(PassageFaune).with_entities(
scope_expression = sa.select(PassageFaune).with_only_columns(
PassageFaune.id_passage_faune,
sa.case(
(PassageFaune.id_digitiser == id_role, 1),
Expand Down Expand Up @@ -56,12 +56,12 @@ def passage_faune_permission_filter(cls, query, id_role, scope_for_action, sensi
def diagnostic_subquery_scope(cls, id_role):
scope_expression_passage_faune = PassageFaune.subquery_scope(id_role).cte("pre_scope_pf")
scope_expression = (
db.session.query(Diagnostic)
sa.select(Diagnostic)
.join(
scope_expression_passage_faune,
scope_expression_passage_faune.c.id_passage_faune == Diagnostic.id_passage_faune,
)
.with_entities(Diagnostic.id_diagnostic, scope_expression_passage_faune.c.scope)
.with_only_columns(Diagnostic.id_diagnostic, scope_expression_passage_faune.c.scope)
)

return scope_expression
Expand Down

0 comments on commit 2304d72

Please sign in to comment.