Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop > Master / 1.3.4 #98

Merged
merged 6 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.3
1.3.4
4 changes: 1 addition & 3 deletions backend/gn_modulator/imports/mixins/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ def pretty_errors_txt(self):
key_txt = (
f"'{relation_key}.{key}' : "
if key and relation_key
else f"'{key}' : "
if key
else ""
else f"'{key}' : " if key else ""
)
txt = f"- {key_txt}{error['error_msg']}\n"
for info in error.get("error_infos", []):
Expand Down
44 changes: 23 additions & 21 deletions backend/gn_modulator/imports/mixins/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,25 +64,27 @@ def sql_process_import_view(self, from_table, dest_table, relation_key=None):
columns = (
[relation_key]
if relation_key and self.Model().is_relation_n_n(relation_key)
else list(
filter(
lambda x: (
self.Model().is_column(x)
and x.startswith(f"{relation_key}.")
and not x == self.Model().pk_field_name()
),
from_table_columns,
else (
list(
filter(
lambda x: (
self.Model().is_column(x)
and x.startswith(f"{relation_key}.")
and not x == self.Model().pk_field_name()
),
from_table_columns,
)
)
)
if relation_key and self.Model().is_relation_1_n(relation_key)
else list(
filter(
lambda x: (
self.Model().is_column(x)
and "." not in x
and not x == self.Model().pk_field_name()
),
from_table_columns,
if relation_key and self.Model().is_relation_1_n(relation_key)
else list(
filter(
lambda x: (
self.Model().is_column(x)
and "." not in x
and not x == self.Model().pk_field_name()
),
from_table_columns,
)
)
)
)
Expand Down Expand Up @@ -271,9 +273,9 @@ def resolve_key(
v_join += v_join_inter

# clarifier link oin
link_joins[
k_unique
] = f"{alias_join}_{index_unique}.{SchemaMethods(rel_schema_code).Model().pk_field_name()}"
link_joins[k_unique] = (
f"{alias_join}_{index_unique}.{SchemaMethods(rel_schema_code).Model().pk_field_name()}"
)

# conditions de jointures
v_join_on = []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
Create Date: 2023-03-03 14:31:35.339631

"""

from alembic import op
import sqlalchemy as sa

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
Create Date: 2023-12-15 14:20:55.639520

"""

from alembic import op
import sqlalchemy as sa

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
Create Date: 2023-10-09 15:55:41.769219

"""

from alembic import op
import sqlalchemy as sa

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
Create Date: 2023-06-20 15:19:21.097194

"""

from alembic import op
import sqlalchemy as sa
from gn_modulator import MODULE_CODE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
Revises:
Create Date: 2021-09-15 11:49:24.512562
"""

from alembic import op
from sqlalchemy.sql import text
import pkg_resources
Expand Down
9 changes: 7 additions & 2 deletions backend/gn_modulator/module/breadcrumbs.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from geonature.utils.env import db
from sqlalchemy.orm.exc import NoResultFound
from gn_modulator.schema import SchemaMethods
from gn_modulator.utils.commons import getAttr
from gn_modulator import MODULE_CODE
Expand Down Expand Up @@ -39,7 +39,12 @@
q = sm.get_row(
data[sm.Model().pk_field_name()], module_code=module_code, params={}
)
m = q.one()
# patch apres delete...
try:
m = q.one()
except NoResultFound:
return parent_breadcrumbs

Check warning on line 46 in backend/gn_modulator/module/breadcrumbs.py

View check run for this annotation

Codecov / codecov/patch

backend/gn_modulator/module/breadcrumbs.py#L45-L46

Added lines #L45 - L46 were not covered by tests

data_label = sm.serialize(m, fields=[sm.label_field_name()])
# label_page = f"{sm.label()} {data_label[sm.label_field_name()]}"
label_page = f"{sm.label()} {getAttr(data_label, sm.label_field_name())}"
Expand Down
1 change: 1 addition & 0 deletions backend/gn_modulator/query/filters.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
repositories - filters
"""

import unidecode
import sqlalchemy as sa
from geonature.utils.env import db
Expand Down
8 changes: 5 additions & 3 deletions backend/gn_modulator/query/getattr.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,11 @@ def getModelAttr(Model, query, field_name, only_fields="", index=0, condition=No
current_Model = (
get_query_cache(query, current_relation_cache_key)["relation_alias"]
if query is not None and current_relation_cache_key
else Model.relation_Model(current_relation_cache_key)
if current_relation_cache_key
else Model
else (
Model.relation_Model(current_relation_cache_key)
if current_relation_cache_key
else Model
)
)

res = {"val": getattr(current_Model, current_field)}
Expand Down
34 changes: 26 additions & 8 deletions backend/gn_modulator/routes/utils/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
schema_code = ModuleMethods.schema_code(module_code, object_code)
sm = SchemaMethods(schema_code)

id_role = g.current_user.id_role

# on peut redéfinir le module_code pour le choix des droits
permission_module_code = object_definition.get("module_code", module_code)
params = {**parse_request_args(object_definition), **additional_params}
Expand All @@ -22,7 +24,11 @@
{}
if params.get("no_info")
else sm.get_query_infos(
module_code=permission_module_code, action=action, params=params, url=request.url
module_code=permission_module_code,
action=action,
params=params,
url=request.url,
id_role=id_role,
)
)

Expand All @@ -32,11 +38,12 @@
action=action,
params=params,
query_type="select",
id_role=id_role,
)

if params.get("sql"):
# test si droit admin
if not has_any_permissions("R", g.current_user.id_role, "MODULATOR", "ADMIN"):
if not has_any_permissions("R", id_role, "MODULATOR", "ADMIN"):

Check warning on line 46 in backend/gn_modulator/routes/utils/repository.py

View check run for this annotation

Codecov / codecov/patch

backend/gn_modulator/routes/utils/repository.py#L46

Added line #L46 was not covered by tests
return (
"Vous n'avez pas les droit pour effectuer des actions d'admin pour le module MODULATOR",
403,
Expand Down Expand Up @@ -70,7 +77,7 @@
object_definition = ModuleMethods.object_config(module_code, object_code)
schema_code = ModuleMethods.schema_code(module_code, object_code)
sm = SchemaMethods(schema_code)

id_role = g.current_user.id_role
params = parse_request_args(object_definition)

permission_module_code = object_definition.get("module_code", module_code)
Expand All @@ -82,6 +89,7 @@
module_code=permission_module_code,
action="R",
params=params,
id_role=id_role,
)

m = q.one()
Expand Down Expand Up @@ -119,6 +127,7 @@
object_definition = ModuleMethods.object_config(module_code, object_code)
schema_code = ModuleMethods.schema_code(module_code, object_code)
sm = SchemaMethods(schema_code)
id_role = g.current_user.id_role

permission_module_code = object_definition.get("module_code", module_code)

Expand All @@ -136,6 +145,7 @@
params=params,
authorized_write_fields=authorized_write_fields,
commit=True,
id_role=id_role,
)

except sm.errors.SchemaUnsufficientCruvedRigth as e:
Expand All @@ -150,6 +160,8 @@
object_definition = ModuleMethods.object_config(module_code, object_code)
schema_code = ModuleMethods.schema_code(module_code, object_code)
sm = SchemaMethods(schema_code)
id_role = g.current_user.id_role

permission_module_code = object_definition.get("module_code", module_code)

params = parse_request_args(object_definition)
Expand All @@ -164,27 +176,33 @@

try:
sm.delete_row(
value, module_code=module_code, field_name=params.get("field_name"), commit=True
value,
module_code=module_code,
field_name=params.get("field_name"),
commit=True,
id_role=id_role,
)

except sm.errors.SchemaUnsufficientCruvedRigth as e:
return f"Erreur Cruved : {str(e)}", 403

return dict_out

pass


def get_page_number_and_list(module_code, object_code, value):
object_definition = ModuleMethods.object_config(module_code, object_code)
schema_code = ModuleMethods.schema_code(module_code, object_code)
sm = SchemaMethods(schema_code)

id_role = g.current_user.id_role
permission_module_code = object_definition.get("module_code", module_code)

params = parse_request_args(object_definition)
page_number = sm.get_page_number(
value, permission_module_code, params.get("action") or "R", params
value,
permission_module_code,
params.get("action") or "R",
params,
id_role=id_role,
)

return get_list_rest(module_code, object_code, additional_params={"page": page_number})
5 changes: 2 additions & 3 deletions backend/gn_modulator/schema/auto.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
AutoSchemas
"""

from sqlalchemy.inspection import inspect
from sqlalchemy.orm.properties import ColumnProperty
from geonature.utils.env import db
Expand Down Expand Up @@ -148,9 +149,7 @@ def process_relation_auto(self, relation_key, relation, Model, properties):
"relation_type": (
"n-1"
if relation.direction.name == "MANYTOONE"
else "1-n"
if relation.direction.name == "ONETOMANY"
else "n-n"
else "1-n" if relation.direction.name == "ONETOMANY" else "n-n"
),
"schema_code": schema_code,
# "title": relation_key,
Expand Down
22 changes: 14 additions & 8 deletions backend/gn_modulator/schema/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,15 @@ def relation_type(self, relation_def):
relation_type = (
"n-1"
if relation_def.get("local_key") and not relation_def.get("foreign_key")
else "1-n"
if relation_def.get("foreign_key") and not relation_def.get("local_key")
else "n-n"
if relation_def.get("foreign_key") and relation_def.get("local_key")
else None
else (
"1-n"
if relation_def.get("foreign_key") and not relation_def.get("local_key")
else (
"n-n"
if relation_def.get("foreign_key") and relation_def.get("local_key")
else None
)
)
)

if relation_type is None:
Expand Down Expand Up @@ -290,9 +294,11 @@ def remove_field(self, field_name, schema):

def process_csv_keys(self, keys):
return [
self.property(key.split(".")[0]).get("title", key)
if self.has_property(key.split(".")[0])
else key
(
self.property(key.split(".")[0]).get("title", key)
if self.has_property(key.split(".")[0])
else key
)
for key in keys
]

Expand Down
16 changes: 7 additions & 9 deletions backend/gn_modulator/schema/config/grammar.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,11 @@ def new(self, object_definition={}):
return (
"nouvelle"
if self.genre(object_definition) == "F"
else "nouvel"
if self.is_first_letter_vowel(self.label(object_definition))
else "nouveau"
else (
"nouvel"
if self.is_first_letter_vowel(self.label(object_definition))
else "nouveau"
)
)

def news(self, object_definition={}):
Expand Down Expand Up @@ -90,9 +92,7 @@ def article_def(self, object_definition={}):
return (
"l'"
if self.is_first_letter_vowel(self.label(object_definition))
else "la "
if self.genre(object_definition) == "F"
else "le "
else "la " if self.genre(object_definition) == "F" else "le "
)

def article_undef(self, object_definition={}):
Expand All @@ -111,9 +111,7 @@ def preposition(self, object_definition={}, check_voyel=True):
return (
"de l'"
if self.is_first_letter_vowel(self.label(object_definition)) and check_voyel
else "de la "
if self.genre(object_definition) == "F"
else "du "
else "de la " if self.genre(object_definition) == "F" else "du "
)

def le_label(self, object_definition={}):
Expand Down
8 changes: 5 additions & 3 deletions backend/gn_modulator/schema/doc.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@ def doc_import_key(self, key, unique=False, relation_key=None):
type = (
"clé simple"
if property_def.get("schema_code")
else "liste de clés séparées par une virgule"
if property_def.get("relation_type") == "n-n"
else property_def["type"]
else (
"liste de clés séparées par une virgule"
if property_def.get("relation_type") == "n-n"
else property_def["type"]
)
)

column_default = self.property(key).get("default") or (
Expand Down
8 changes: 5 additions & 3 deletions backend/gn_modulator/schema/features/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,11 @@ def get_data_item(cls, data_item, file_path=None):
items = (
data_item["items"]
if "items" in data_item
else cls.get_data_items_from_file(Path(file_path).parent / data_item["file"])
if "file" in data_item
else []
else (
cls.get_data_items_from_file(Path(file_path).parent / data_item["file"])
if "file" in data_item
else []
)
)

if data_item.get("keys"):
Expand Down
Loading
Loading