from django.shortcuts import render, reverse from django.urls import reverse_lazy from django.views.generic.base import TemplateView from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView from django.views.generic.detail import DetailView from django.views.generic.list import ListView from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin from django.contrib.auth.models import User from accounts.models import Instructor, Student from .models import Period # EXAMPLE PERMISSION MIXIN # class MyView(PermissionRequiredMixin, View): # permission_required = 'polls.add_choice' # # Or multiple of permissions: # permission_required = ('polls.view_choice', 'polls.change_choice') class AttendanceOverview(LoginRequiredMixin, TemplateView): template_name = 'attendance/attendance_overview.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['user'] = User.objects.get(pk=self.request.user.id) if hasattr(self.request.user, 'instructor'): context['students'] = Student.objects.filter(department=self.request.user.instructor.department) context['period_list'] = Period.objects.all() return context class AttendanceCreateView(LoginRequiredMixin, CreateView): model = Period fields = ['email', 'password'] template_name = 'attendance/attendance_form.html' class AttendanceDetailView(LoginRequiredMixin, DetailView): model = Period template_name = 'attendance/attendance_detail.html' class AttendanceUpdateView(LoginRequiredMixin, UpdateView): model = Period fields = ['username', 'email'] template_name = 'attendance/attendance_form.html' def get_success_url(self): pk = self.kwargs["pk"] return reverse('attendance-detail', kwargs={'pk': pk}) class AttendanceDeleteView(LoginRequiredMixin, DeleteView): model = Period success_url = reverse_lazy('account-overview')