Coverage for src/mesh/views/model_proxy/review_proxy.py: 54%
22 statements
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-28 07:45 +0000
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-28 07:45 +0000
1from __future__ import annotations
3from functools import cached_property
5from ...models.review_models import Review
6from ...views import model_proxy
7from .model_proxy import RoleModelProxy
10class ReviewProxy(RoleModelProxy):
11 """
12 Proxy for the `Review` model with restricted data according to the user role.
13 """
15 model = Review
16 _instance: Review
18 @property
19 def reviewer(self):
20 if self._role_handler.check_rights("can_access_review_author", self._instance):
21 return str(self._instance.reviewer)
23 return "**** ****"
25 @property
26 def version(self):
27 if not self._role_handler.check_rights("can_access_version", self._instance.version):
28 return None
30 return model_proxy.submission_version_proxy.SubmissionVersionProxy(
31 self._instance.version, self._role_handler
32 )
34 @cached_property
35 def additional_files(self):
36 files = self._instance.additional_files.all() # type:ignore
37 return [f for f in files if self._role_handler.check_rights("can_access_review_file", f)]