Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
amandine-sahl committed Mar 29, 2023
2 parents 7f3c928 + df89dee commit aeee20c
Show file tree
Hide file tree
Showing 28 changed files with 375 additions and 519 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.4.1.dev0
0.5.0
1 change: 1 addition & 0 deletions backend/gn_module_monitoring/config/repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ def get_config(module_code=None, force=False):

module_confg_dir_path = MONITORING_CONFIG_PATH + '/' + module_code
# test si le repertoire existe

if not os.path.exists(module_confg_dir_path):
return None

Expand Down
5 changes: 0 additions & 5 deletions backend/gn_module_monitoring/monitoring/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
from geonature.utils.errors import GeoNatureError

from ..routes.decorators import cruved_scope_for_user_in_monitoring_module

from ..config.repositories import (
config_param as repositories_config_param,
config_schema as repositories_config_schema,
Expand Down Expand Up @@ -189,9 +187,6 @@ def id_parent(self):

return getattr(self._model, self.id_parent_fied_name())

def get_cruved(self, object_type=None):
return cruved_scope_for_user_in_monitoring_module(self._module_code, object_type)

def cond_filters(self):
filters = self.config_param('filters')

Expand Down
7 changes: 7 additions & 0 deletions backend/gn_module_monitoring/monitoring/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,11 @@
'sites_group': MonitoringObjectGeom,
}

MonitoringPermissions_dict = {
'site': "GNM_SITES",
'sites_group': "GNM_GRP_SITES",
'visite': "GNM_VISITES",
'observation': "GNM_OBSERVATIONS"
}

monitoring_definitions.set(MonitoringObjects_dict, MonitoringModels_dict)
11 changes: 6 additions & 5 deletions backend/gn_module_monitoring/monitoring/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from ..utils.utils import to_int
from ..routes.data_utils import id_field_name_dict
from geonature.utils.env import DB
from geonature.core.gn_permissions.tools import get_scopes_by_action


class MonitoringObjectSerializer(MonitoringObjectBase):
Expand Down Expand Up @@ -156,12 +157,12 @@ def serialize(self, depth=1):
}

if self._object_type == 'module':
monitoring_object_dict['cruved'] = self.get_cruved()
monitoring_object_dict['cruved'] = get_scopes_by_action(module_code=self._module_code)
monitoring_object_dict['cruved_objects'] = {}
monitoring_object_dict['cruved_objects']['site'] = self.get_cruved("GNM_SITES")
monitoring_object_dict['cruved_objects']['sites_group'] = self.get_cruved("GNM_GRP_SITES")
monitoring_object_dict['cruved_objects']['visite'] = self.get_cruved("GNM_VISITES")
monitoring_object_dict['cruved_objects']['observation'] = self.get_cruved("GNM_OBSERVATIONS")
monitoring_object_dict['cruved_objects']['site'] = get_scopes_by_action(module_code=self._module_code, object_code="GNM_SITES")
monitoring_object_dict['cruved_objects']['sites_group'] = get_scopes_by_action(module_code=self._module_code, object_code="GNM_GRP_SITES")
monitoring_object_dict['cruved_objects']['visite'] = get_scopes_by_action(module_code=self._module_code, object_code="GNM_VISITES")
monitoring_object_dict['cruved_objects']['observation'] = get_scopes_by_action(module_code=self._module_code, object_code="GNM_OBSERVATIONS")


properties['id_parent'] = to_int(self.id_parent())
Expand Down
2 changes: 0 additions & 2 deletions backend/gn_module_monitoring/routes/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@
get_config,
get_config_frontend
)
# from ..decorators import check_cruved_scope_monitoring


@blueprint.route('/config/<string:module_code>', methods=['GET'])
@blueprint.route('/config', defaults={'module_code': None}, methods=['GET'])
# @check_cruved_scop e_monitoring('R', 1)
@json_resp
def get_config_api(module_code):
"""
Expand Down
6 changes: 3 additions & 3 deletions backend/gn_module_monitoring/routes/data_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def get_util_nomenclature_api(code_nomenclature_type, cd_nomenclature):
)


@blueprint.route("util/<string:type_util>/<int:id>", methods=["GET"])
@blueprint.route("util/<string:type_util>/<string:id>", methods=["GET"])
@json_resp
def get_util_from_id_api(type_util, id):
"""
Expand All @@ -170,7 +170,7 @@ def get_util_from_id_api(type_util, id):
:param type_util: 'nomenclature' | 'taxonomy' | 'utilisateur' | etc....
:param id: id de l'object requis
:type type_util: str
:type id: int
:type id: str
:return object entier si field_name = all, la valeur du champs defini par field_name sinon
"""

Expand All @@ -194,7 +194,7 @@ def get_util_from_id_api(type_util, id):
try:
res = (
DB.session.query(scope)
.filter(cast(getattr(obj, id_field_name), DB.String) == str(id))
.filter(cast(getattr(obj, id_field_name), DB.String) == id)
.one()
)

Expand Down
110 changes: 0 additions & 110 deletions backend/gn_module_monitoring/routes/decorators.py

This file was deleted.

14 changes: 9 additions & 5 deletions backend/gn_module_monitoring/routes/modules.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,21 @@
from utils_flask_sqla.response import json_resp_accept_empty_list, json_resp

from ..blueprint import blueprint
from ..routes.decorators import check_cruved_scope_monitoring, cruved_scope_for_user_in_monitoring_module
from ..utils.utils import to_int

from geonature.core.gn_permissions.tools import get_scopes_by_action
from geonature.core.gn_permissions.decorators import check_cruved_scope

from gn_module_monitoring import MODULE_CODE

from ..modules.repositories import (
get_module,
get_modules,
)


@blueprint.route('/module/<value>', methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R', module_code=MODULE_CODE)
@json_resp
def get_module_api(value):
'''
Expand All @@ -33,13 +37,13 @@ def get_module_api(value):
module_out = []
if module:
module_out = module.as_dict(depth=depth)
module_out['cruved'] = cruved_scope_for_user_in_monitoring_module(module.module_code)
module_out['cruved'] = get_scopes_by_action(module_code=module.module_code)

return module_out


@blueprint.route('/modules', methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R', module_code=MODULE_CODE)
@json_resp_accept_empty_list
def get_modules_api():
'''
Expand All @@ -52,7 +56,7 @@ def get_modules_api():
modules = get_modules()
for module in modules:
module_out = module.as_dict(depth=depth)
module_out['cruved'] = cruved_scope_for_user_in_monitoring_module(module.module_code)
module_out['cruved'] = get_scopes_by_action(module_code=module.module_code)

modules_out.append(module_out)

Expand Down
39 changes: 28 additions & 11 deletions backend/gn_module_monitoring/routes/monitoring.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
'''


from flask import request, send_from_directory, url_for
from flask import request, send_from_directory, url_for, g
from utils_flask_sqla.response import (
json_resp, json_resp_accept_empty_list
)
Expand All @@ -13,13 +13,16 @@

from ..blueprint import blueprint

from .decorators import check_cruved_scope_monitoring
from geonature.core.gn_permissions.decorators import check_cruved_scope
from geonature.core.gn_commons.models.base import TModules
from geonature.core.gn_permissions.models import TObjects

# from geonature.utils.errors import GeoNatureError
from ..monitoring.definitions import monitoring_definitions
from ..monitoring.definitions import monitoring_definitions, MonitoringPermissions_dict
from ..modules.repositories import get_module
from ..utils.utils import to_int
from ..config.repositories import get_config
from gn_module_monitoring import MODULE_CODE
from utils_flask_sqla_geo.generic import GenericTableGeo
from geonature.utils.env import DB, ROOT_DIR
import datetime as dt
Expand All @@ -30,6 +33,20 @@



@blueprint.url_value_preprocessor
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 with code {requested_module} {endpoint}"
)

object_type = values.get("object_type")
if object_type:
request_code_object = MonitoringPermissions_dict.get(object_type, 'ALL')
g.current_object = TObjects.query.filter_by(code_object=request_code_object).first_or_404(
f"No permission object with code {request_code_object} {endpoint}"
)

@blueprint.route('/object/<string:module_code>/<string:object_type>/<int:id>', methods=['GET'])
@blueprint.route(
Expand All @@ -40,7 +57,7 @@
'/object/module',
defaults={'module_code': None, 'object_type': 'module', 'id': None},
methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R')
@json_resp
def get_monitoring_object_api(module_code, object_type, id):
'''
Expand Down Expand Up @@ -108,7 +125,7 @@ def create_or_update_object_api(module_code, object_type, id):
'/object/<string:module_code>/module',
defaults={'id': None, 'object_type': 'module'},
methods=['PATCH'])
@check_cruved_scope_monitoring('U', 1)
@check_cruved_scope('U')
@json_resp
def update_object_api(module_code, object_type, id):
get_config(module_code, force=True)
Expand All @@ -121,7 +138,7 @@ def update_object_api(module_code, object_type, id):
'/object/module',
defaults={'module_code': None, 'object_type': 'module', 'id': None},
methods=['POST'])
@check_cruved_scope_monitoring('C', 1)
@check_cruved_scope('C')
@json_resp
def create_object_api(module_code, object_type, id):
get_config(module_code, force=True)
Expand All @@ -134,7 +151,7 @@ def create_object_api(module_code, object_type, id):
'/object/<string:module_code>/module',
defaults={'id': None, 'object_type': 'module'},
methods=['DELETE'])
@check_cruved_scope_monitoring('D', 3)
@check_cruved_scope('D')
@json_resp
def delete_object_api(module_code, object_type, id):

Expand All @@ -157,7 +174,7 @@ def delete_object_api(module_code, object_type, id):
'/breadcrumbs/<string:module_code>/module',
defaults={'id': None, 'object_type': 'module'},
methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R')
@json_resp
def breadcrumbs_object_api(module_code, object_type, id):

Expand All @@ -174,7 +191,7 @@ def breadcrumbs_object_api(module_code, object_type, id):

# listes pour les formulaires par exemple
@blueprint.route('list/<string:module_code>/<object_type>', methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R')
@json_resp_accept_empty_list
def list_object_api(module_code, object_type):

Expand All @@ -189,7 +206,7 @@ def list_object_api(module_code, object_type):

# mise à jour de la synthèse
@blueprint.route('synthese/<string:module_code>', methods=['POST'])
@check_cruved_scope_monitoring('E', 3)
@check_cruved_scope('E')
@json_resp
def update_synthese_api(module_code):

Expand All @@ -206,7 +223,7 @@ def update_synthese_api(module_code):
# export add mje
# export all observations
@blueprint.route('/exports/csv/<module_code>/<method>', methods=['GET'])
@check_cruved_scope_monitoring('R', 1)
@check_cruved_scope('R')
def export_all_observations(module_code, method):
"""
Export all data in csv of a custom module view
Expand Down
Loading

0 comments on commit aeee20c

Please sign in to comment.