2020-12-27 10:49:54 +00:00
|
|
|
# Copyright (C) 2020 by Animath
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
2021-03-18 17:22:17 +00:00
|
|
|
from django.contrib.auth.models import User
|
2024-04-27 21:20:15 +00:00
|
|
|
from django.views.generic import TemplateView
|
2020-12-27 10:49:54 +00:00
|
|
|
from haystack.generic_views import SearchView
|
|
|
|
|
|
|
|
|
|
|
|
class AdminMixin(LoginRequiredMixin):
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
2020-12-29 15:14:56 +00:00
|
|
|
if request.user.is_authenticated and not request.user.registration.is_admin:
|
2021-01-17 11:40:23 +00:00
|
|
|
self.handle_no_permission()
|
|
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
class VolunteerMixin(LoginRequiredMixin):
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
|
if request.user.is_authenticated and not request.user.registration.is_volunteer:
|
|
|
|
self.handle_no_permission()
|
2020-12-29 15:14:56 +00:00
|
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
class UserMixin(LoginRequiredMixin):
|
2021-01-23 10:02:26 +00:00
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
|
user = request.user
|
|
|
|
if user.is_authenticated and not user.registration.is_admin and user.pk != kwargs["pk"]:
|
|
|
|
self.handle_no_permission()
|
|
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
class UserRegistrationMixin(LoginRequiredMixin):
|
2020-12-29 15:14:56 +00:00
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
|
user = request.user
|
2021-03-18 17:22:17 +00:00
|
|
|
user_object = User.objects.get(registration__pk=kwargs["pk"])
|
|
|
|
if user.is_authenticated and not user.registration.is_admin and user.registration.pk != kwargs["pk"] and \
|
|
|
|
not (user.registration.is_volunteer and user_object.registration.team is not None
|
|
|
|
and user_object.registration.team.participation.tournament
|
|
|
|
in user.registration.organized_tournaments.all()):
|
2021-01-17 11:40:23 +00:00
|
|
|
self.handle_no_permission()
|
2020-12-27 10:49:54 +00:00
|
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
|
|
|
2024-04-27 21:20:15 +00:00
|
|
|
class LoginRequiredTemplateView(LoginRequiredMixin, TemplateView):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2020-12-27 10:49:54 +00:00
|
|
|
class AdminSearchView(AdminMixin, SearchView):
|
|
|
|
pass
|