Coverage for src/mesh/views/model_proxy/submission_version_proxy.py: 35%
30 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 ...models.submission_models import SubmissionVersion
4from ...views import model_proxy
5from .model_proxy import RoleModelProxy
8class SubmissionVersionProxy(RoleModelProxy):
9 """
10 Proxy for the `SubmissionVersion` model with restricted data according to the user role.
11 """
13 model = SubmissionVersion
14 _instance: SubmissionVersion
16 @property
17 def created_by(self):
18 if self._role_handler.check_rights(
19 "can_access_submission_author", self._instance.submission
20 ):
21 return str(self._instance.created_by)
23 return "**** ****"
25 def get_all_reviews(self) -> list:
26 if not self._role_handler.check_rights("can_access_reviews", self._instance):
27 return []
29 reviews = self._instance.reviews.all() # type:ignore
31 allowed_reviews = []
32 for review in reviews:
33 if self._role_handler.check_rights("can_access_review", review):
34 review_proxy = model_proxy.review_proxy.ReviewProxy(review, self._role_handler)
35 allowed_reviews.append(review_proxy)
37 return allowed_reviews
39 @property
40 def submission(self):
41 if not self._role_handler.check_rights("can_access_submission", self._instance.submission):
42 return None
44 return model_proxy.submission_proxy.SubmissionProxy(
45 self._instance.submission, self._role_handler
46 )
48 @property
49 def reviews(self):
50 return self.get_all_reviews()