Skip to content

Commit 2445004

Browse files
Fix/observation details (#376)
* Ajout has_instance_permission à t_observation_details * Fix : ajout médias aux observation détails * Ajout média schéma * has_instance_permission sur nouveau object
1 parent 60e0219 commit 2445004

File tree

6 files changed

+53
-3
lines changed

6 files changed

+53
-3
lines changed

backend/gn_module_monitoring/config/generic/observation_detail.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"medias": {
2424
"type_widget": "medias",
2525
"attribut_label": "Médias",
26-
"schema_dot_table": "gn_monitoring.t_observations_details"
26+
"schema_dot_table": "gn_monitoring.t_observation_details"
2727
}
2828
}
2929
}

backend/gn_module_monitoring/config/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def get_id_table_location(object_type):
7878
"site": "t_base_sites",
7979
"visit": "t_base_visits",
8080
"observation": "t_observations",
81+
"observation_detail": "t_observation_details",
8182
}
8283

8384
schema_name = "gn_monitoring"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""Add observation details entry in bib_tables_location
2+
3+
Revision ID: 6f90dd1aaf69
4+
Revises: be30fb5c1a56
5+
Create Date: 2024-10-21 15:35:31.740577
6+
7+
"""
8+
9+
from alembic import op
10+
import sqlalchemy as sa
11+
12+
13+
# revision identifiers, used by Alembic.
14+
revision = "6f90dd1aaf69"
15+
down_revision = "be30fb5c1a56"
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
op.execute(
22+
"""
23+
INSERT INTO gn_commons.bib_tables_location(table_desc, schema_name, table_name, pk_field, uuid_field_name)
24+
VALUES
25+
('Table centralisant les détails des observations réalisées lors d''une visite sur un site',
26+
'gn_monitoring', 't_observation_details', 'id_observation_detail', 'uuid_observation_detail')
27+
ON CONFLICT(schema_name, table_name) DO NOTHING;
28+
"""
29+
)
30+
31+
32+
def downgrade():
33+
op.execute(
34+
"""
35+
DELETE FROM gn_commons.bib_tables_location
36+
WHERE schema_name = 'gn_monitoring' AND table_name = 't_observation_details';
37+
"""
38+
)

backend/gn_module_monitoring/monitoring/models.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def get_permission_by_action(self, module_code=None, object_code=None):
7979

8080

8181
@serializable
82-
class TMonitoringObservationDetails(DB.Model):
82+
class TMonitoringObservationDetails(DB.Model, MonitoringQuery, PermissionModel):
8383
__tablename__ = "t_observation_details"
8484
__table_args__ = {"schema": "gn_monitoring"}
8585

@@ -96,6 +96,15 @@ class TMonitoringObservationDetails(DB.Model):
9696
overlaps="medias,medias",
9797
)
9898

99+
def has_instance_permission(self, scope):
100+
# Récupération de la permission des observations
101+
if self.id_observation:
102+
return DB.session.get(
103+
TMonitoringObservations, self.id_observation
104+
).has_instance_permission(scope)
105+
else:
106+
return True
107+
99108

100109
@serializable
101110
class TMonitoringObservations(TObservations, PermissionModel, ObservationsQuery):

backend/gn_module_monitoring/monitoring/schemas.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,5 @@ class Meta:
191191
model = TMonitoringObservationDetails
192192
include_fk = True
193193
load_relationships = True
194+
195+
medias = MA.Nested(MediaSchema, many=True)

backend/gn_module_monitoring/monitoring/serializer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def unflatten_specific_properties(self, properties):
114114
def get_readable_list_object(self, relation_name, children_type):
115115
childs_model = monitoring_definitions.MonitoringModel(object_type=children_type)
116116

117-
if getattr(childs_model, "has_instance_permission"):
117+
if getattr(childs_model, "has_instance_permission", None):
118118
scope = get_scopes_by_action(
119119
id_role=g.current_user.id_role,
120120
module_code=self._module_code,

0 commit comments

Comments
 (0)