76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
from django.shortcuts import render
|
|
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
|
from django.urls import reverse_lazy
|
|
from .models import Event, Training, Game
|
|
from .forms import EventForm, TrainingForm, GameForm
|
|
|
|
def select_event_type(request):
|
|
return render(request, 'calendars/select_event_type.html')
|
|
|
|
class CoachCheckMixin(UserPassesTestMixin):
|
|
def test_func(self):
|
|
user = self.request.user
|
|
if user.is_superuser:
|
|
return True
|
|
team = self.get_object().team
|
|
return user == team.head_coach or user in team.assistant_coaches.all()
|
|
|
|
class EventCreateView(LoginRequiredMixin, CreateView):
|
|
model = Event
|
|
form_class = EventForm
|
|
template_name = 'calendars/event_form.html'
|
|
success_url = reverse_lazy('dashboard')
|
|
|
|
def get_form(self, form_class=None):
|
|
form = super().get_form(form_class)
|
|
user = self.request.user
|
|
if not user.is_superuser:
|
|
coached_teams = user.coached_teams.all()
|
|
assisted_teams = user.assisted_teams.all()
|
|
teams = coached_teams | assisted_teams
|
|
form.fields['team'].queryset = teams
|
|
return form
|
|
|
|
class TrainingCreateView(LoginRequiredMixin, CreateView):
|
|
model = Training
|
|
form_class = TrainingForm
|
|
template_name = 'calendars/event_form.html'
|
|
success_url = reverse_lazy('dashboard')
|
|
|
|
def get_form(self, form_class=None):
|
|
form = super().get_form(form_class)
|
|
user = self.request.user
|
|
if not user.is_superuser:
|
|
coached_teams = user.coached_teams.all()
|
|
assisted_teams = user.assisted_teams.all()
|
|
teams = coached_teams | assisted_teams
|
|
form.fields['team'].queryset = teams
|
|
return form
|
|
|
|
class GameCreateView(LoginRequiredMixin, CreateView):
|
|
model = Game
|
|
form_class = GameForm
|
|
template_name = 'calendars/event_form.html'
|
|
success_url = reverse_lazy('dashboard')
|
|
|
|
def get_form(self, form_class=None):
|
|
form = super().get_form(form_class)
|
|
user = self.request.user
|
|
if not user.is_superuser:
|
|
coached_teams = user.coached_teams.all()
|
|
assisted_teams = user.assisted_teams.all()
|
|
teams = coached_teams | assisted_teams
|
|
form.fields['team'].queryset = teams
|
|
return form
|
|
|
|
class EventUpdateView(LoginRequiredMixin, CoachCheckMixin, UpdateView):
|
|
model = Event
|
|
form_class = EventForm
|
|
template_name = 'calendars/event_form.html'
|
|
success_url = reverse_lazy('dashboard')
|
|
|
|
class EventDeleteView(LoginRequiredMixin, CoachCheckMixin, DeleteView):
|
|
model = Event
|
|
template_name = 'calendars/event_confirm_delete.html'
|
|
success_url = reverse_lazy('dashboard') |