51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
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')
|