Coverage for src / mesh / model / roles / journal_manager.py: 97%
37 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-10 09:11 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-10 09:11 +0000
1from typing import ClassVar
3from django.db.models import QuerySet
4from django.utils.functional import cached_property
5from django.utils.translation import gettext as _
7from mesh.models.submission_models import Submission
8from mesh.models.user_models import User
10from .base_role import Role
11from .editor import EditorRights
14class JournalManagerRights(EditorRights):
15 """
16 Rights implementation for Journal manager role.
17 """
19 @cached_property
20 def managed_submissions(self) -> QuerySet[Submission]:
21 """
22 Block access to non-submitted submissions.
23 """
24 return Submission.objects.get_submissions() # .exclude(state=SubmissionState.OPENED.value)
26 @cached_property
27 def submissions(self) -> QuerySet[Submission]:
28 """
29 Block access to non-submitted submissions.
30 """
31 return self.managed_submissions
33 @property
34 def managed_users(self) -> QuerySet[User]:
35 """
36 Can impersonate anyone except admin users.
37 """
38 return (
39 User.objects.exclude(pk=self.user.pk)
40 .exclude(is_superuser=True)
41 .exclude(journal_manager=True)
42 )
44 def can_edit_journal_sections(self) -> bool:
45 return True
47 def can_access_shortcut_actions(self) -> bool:
48 return True
50 def can_manage_submission(self, submission: Submission) -> bool:
51 return True
54class JournalManager(Role):
55 """
56 Journal manager role.
57 """
59 _CODE: ClassVar[str] = "journal_manager"
60 _NAME: ClassVar[str] = _("Journal manager")
61 _ICON_CLASS: ClassVar[str] = "fa-newspaper"
62 _SUBMISSION_LIST_TITLE: ClassVar[str] = _("All submissions")
63 rights: JournalManagerRights
65 def __init__(self, user: User) -> None:
66 super().__init__(user)
68 @property
69 def active(self) -> bool:
70 return self.user.journal_manager
72 def get_rights(self) -> JournalManagerRights:
73 return JournalManagerRights(self.user)