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

1from __future__ import annotations 

2 

3from ...models.submission_models import SubmissionVersion 

4from ...views import model_proxy 

5from .model_proxy import RoleModelProxy 

6 

7 

8class SubmissionVersionProxy(RoleModelProxy): 

9 """ 

10 Proxy for the `SubmissionVersion` model with restricted data according to the user role. 

11 """ 

12 

13 model = SubmissionVersion 

14 _instance: SubmissionVersion 

15 

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) 

22 

23 return "**** ****" 

24 

25 def get_all_reviews(self) -> list: 

26 if not self._role_handler.check_rights("can_access_reviews", self._instance): 

27 return [] 

28 

29 reviews = self._instance.reviews.all() # type:ignore 

30 

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) 

36 

37 return allowed_reviews 

38 

39 @property 

40 def submission(self): 

41 if not self._role_handler.check_rights("can_access_submission", self._instance.submission): 

42 return None 

43 

44 return model_proxy.submission_proxy.SubmissionProxy( 

45 self._instance.submission, self._role_handler 

46 ) 

47 

48 @property 

49 def reviews(self): 

50 return self.get_all_reviews()