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

1from __future__ import annotations 

2 

3from functools import cached_property 

4 

5from ...models.review_models import Review 

6from ...views import model_proxy 

7from .model_proxy import RoleModelProxy 

8 

9 

10class ReviewProxy(RoleModelProxy): 

11 """ 

12 Proxy for the `Review` model with restricted data according to the user role. 

13 """ 

14 

15 model = Review 

16 _instance: Review 

17 

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) 

22 

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

24 

25 @property 

26 def version(self): 

27 if not self._role_handler.check_rights("can_access_version", self._instance.version): 

28 return None 

29 

30 return model_proxy.submission_version_proxy.SubmissionVersionProxy( 

31 self._instance.version, self._role_handler 

32 ) 

33 

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)]