2020-08-11 00:22:36 +00:00
|
|
|
from camps.mixins import CampViewMixin
|
|
|
|
from django.core.exceptions import PermissionDenied
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
from economy.models import Pos
|
2018-08-29 22:52:32 +00:00
|
|
|
from utils.mixins import RaisePermissionRequiredMixin
|
|
|
|
|
|
|
|
|
|
|
|
class OrgaTeamPermissionMixin(RaisePermissionRequiredMixin):
|
|
|
|
"""
|
|
|
|
Permission mixin for views used by Orga Team
|
|
|
|
"""
|
2019-06-16 12:32:24 +00:00
|
|
|
|
2018-08-29 22:52:32 +00:00
|
|
|
permission_required = ("camps.backoffice_permission", "camps.orgateam_permission")
|
|
|
|
|
|
|
|
|
|
|
|
class EconomyTeamPermissionMixin(RaisePermissionRequiredMixin):
|
|
|
|
"""
|
|
|
|
Permission mixin for views used by Economy Team
|
|
|
|
"""
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
permission_required = (
|
|
|
|
"camps.backoffice_permission",
|
|
|
|
"camps.economyteam_permission",
|
|
|
|
)
|
2018-08-29 22:52:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
class InfoTeamPermissionMixin(RaisePermissionRequiredMixin):
|
|
|
|
"""
|
|
|
|
Permission mixin for views used by Info Team/InfoDesk
|
|
|
|
"""
|
2019-06-16 12:32:24 +00:00
|
|
|
|
2018-08-29 22:52:32 +00:00
|
|
|
permission_required = ("camps.backoffice_permission", "camps.infoteam_permission")
|
|
|
|
|
|
|
|
|
|
|
|
class ContentTeamPermissionMixin(RaisePermissionRequiredMixin):
|
|
|
|
"""
|
|
|
|
Permission mixin for views used by Content Team
|
|
|
|
"""
|
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
permission_required = (
|
|
|
|
"camps.backoffice_permission",
|
2020-03-05 11:31:11 +00:00
|
|
|
"camps.contentteam_permission",
|
2019-06-16 12:32:24 +00:00
|
|
|
)
|
2020-08-11 00:22:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
class PosViewMixin(CampViewMixin):
|
|
|
|
"""A mixin to set self.pos based on pos_slug in url kwargs."""
|
|
|
|
|
|
|
|
def setup(self, *args, **kwargs):
|
|
|
|
super().setup(*args, **kwargs)
|
|
|
|
self.pos = get_object_or_404(
|
|
|
|
Pos, team__camp=self.camp, slug=self.kwargs["pos_slug"]
|
|
|
|
)
|
|
|
|
|
|
|
|
def get_permission_required(self):
|
|
|
|
"""
|
|
|
|
This view requires two permissions, camps.backoffice_permission and the permission_set for the team in question.
|
|
|
|
"""
|
|
|
|
if not self.pos.team.permission_set:
|
|
|
|
raise PermissionDenied("No permissions set defined for this team")
|
|
|
|
perms = ["camps.backoffice_permission"]
|
|
|
|
return perms
|
|
|
|
|
|
|
|
def get_context_data(self, *args, **kwargs):
|
|
|
|
context = super().get_context_data(*args, **kwargs)
|
|
|
|
context["pos"] = self.pos
|
|
|
|
return context
|