from django.contrib import messages from django.shortcuts import redirect from django.views.generic.detail import SingleObjectMixin from teams.models import Team, TeamMember class EnsureTeamResponsibleMixin(object): """ Use to make sure request.user is responsible for the team specified by kwargs['team_slug'] """ def dispatch(self, request, *args, **kwargs): self.team = Team.objects.get(slug=kwargs['team_slug'], camp=self.camp) if request.user not in self.team.responsible_members.all(): messages.error(request, 'No thanks') return redirect('teams:general', camp_slug=self.camp.slug, team_slug=self.team.slug) return super().dispatch( request, *args, **kwargs ) class EnsureTeamMemberResponsibleMixin(SingleObjectMixin): """ Use to make sure request.user is responsible for the team which TeamMember belongs to """ model = TeamMember def dispatch(self, request, *args, **kwargs): if request.user not in self.get_object().team.responsible_members.all(): messages.error(request, 'No thanks') return redirect('teams:general', camp_slug=self.get_object().team.camp.slug, team_slug=self.get_object().team.slug) return super().dispatch( request, *args, **kwargs ) class TeamViewMixin: def get_team(self): return self.get_object().team def get_context_data(self, *args, **kwargs): context = super().get_context_data(**kwargs) context['team'] = self.get_team() return context