206 lines
6.2 KiB
Python
206 lines
6.2 KiB
Python
from django.shortcuts import render
|
|
from django.urls import reverse_lazy, reverse
|
|
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.mixins import LoginRequiredMixin
|
|
from django.db.models import Q
|
|
|
|
from .models import Employee, LogEntry, Todo, Event
|
|
from .forms import (
|
|
EmployeeForm,
|
|
EmployeePreCreateForm,
|
|
EmployeeArchiveForm,
|
|
LogEntryForm,
|
|
TodoForm,
|
|
TodoCreateForm,
|
|
EventForm,
|
|
)
|
|
|
|
class SearchResultsView(ListView):
|
|
model = Employee
|
|
template_name_suffix = '_search_results'
|
|
|
|
def get_queryset(self):
|
|
query = self.request.GET.get('q')
|
|
object_list = Employee.objects.filter(
|
|
Q(first_name__icontains=query) | Q(last_name__icontains=query)
|
|
)
|
|
return object_list
|
|
|
|
# Employees
|
|
class EmployeeListView(LoginRequiredMixin, ListView):
|
|
model = Employee
|
|
queryset = Employee.objects.filter(archived=False).order_by('hire_date')
|
|
|
|
class EmployeeArchivedView(LoginRequiredMixin, ListView):
|
|
model = Employee
|
|
paginate_by = 100
|
|
template_name_suffix = '_archived'
|
|
queryset = Employee.objects.filter(archived=True)
|
|
|
|
class EmployeePreCreateView(LoginRequiredMixin, FormView):
|
|
template_name = 'board/employee_pre_form.html'
|
|
form_class = EmployeePreCreateForm
|
|
|
|
def form_valid(self, form):
|
|
form.filter_onboarding_email()
|
|
return super().form_valid(form)
|
|
|
|
def get_success_url(self):
|
|
return reverse('employee-list')
|
|
|
|
class EmployeeCreateView(LoginRequiredMixin, CreateView):
|
|
model = Employee
|
|
template_name_suffix = '_create_form'
|
|
form_class = EmployeeForm
|
|
|
|
class EmployeeDetailView(LoginRequiredMixin, DetailView):
|
|
model = Employee
|
|
|
|
class EmployeeUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = Employee
|
|
form_class = EmployeeForm
|
|
success_url = reverse_lazy('employee-list')
|
|
|
|
class EmployeeArchiveView(LoginRequiredMixin, UpdateView):
|
|
model = Employee
|
|
form_class = EmployeeArchiveForm
|
|
template_name_suffix = '_archive_form'
|
|
success_url = reverse_lazy('employee-list')
|
|
|
|
class EmployeeDeleteView(LoginRequiredMixin, DeleteView):
|
|
model = Employee
|
|
success_url = reverse_lazy('employee-list')
|
|
|
|
|
|
# LogEntries
|
|
class LogEntryListView(LoginRequiredMixin, ListView):
|
|
model = LogEntry
|
|
pk_url_kwarg = 'entry_pk'
|
|
|
|
class LogEntryCreateView(LoginRequiredMixin, CreateView):
|
|
model = LogEntry
|
|
pk_url_kwarg = 'entry_pk'
|
|
template_name_suffix = '_create_form'
|
|
form_class = LogEntryForm
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
form.instance.employee = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return super().form_valid(form)
|
|
|
|
def get_success_url(self):
|
|
return reverse('employee-detail', kwargs={'pk': self.kwargs['pk']})
|
|
|
|
class LogEntryDetailView(LoginRequiredMixin, DetailView):
|
|
model = LogEntry
|
|
pk_url_kwarg = 'entry_pk'
|
|
|
|
class LogEntryUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = LogEntry
|
|
pk_url_kwarg = 'entry_pk'
|
|
form_class = LogEntryForm
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
def get_success_url(self):
|
|
return reverse('employee-detail', kwargs={'pk': self.kwargs['pk']})
|
|
|
|
class LogEntryDeleteView(LoginRequiredMixin, DeleteView):
|
|
model = LogEntry
|
|
pk_url_kwarg = 'entry_pk'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
def get_success_url(self):
|
|
return reverse('employee-detail', kwargs={'pk': self.kwargs['pk']})
|
|
|
|
|
|
# Todos
|
|
class TodoListView(LoginRequiredMixin, ListView):
|
|
model = Todo
|
|
pk_url_kwarg = 'todo_pk'
|
|
|
|
class TodoCreateView(LoginRequiredMixin, CreateView):
|
|
model = Todo
|
|
pk_url_kwarg = 'todo_pk'
|
|
template_name_suffix = '_create_form'
|
|
form_class = TodoCreateForm
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
form.instance.employee = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return super().form_valid(form)
|
|
|
|
def get_success_url(self):
|
|
return reverse('employee-detail', kwargs={'pk': self.kwargs['pk']})
|
|
|
|
class TodoDetailView(LoginRequiredMixin, DetailView):
|
|
model = Todo
|
|
pk_url_kwarg = 'todo_pk'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
class TodoUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = Todo
|
|
pk_url_kwarg = 'todo_pk'
|
|
form_class = TodoForm
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['employee'] = Employee.objects.get(pk=self.kwargs['pk'])
|
|
return context
|
|
|
|
class TodoDeleteView(LoginRequiredMixin, DeleteView):
|
|
model = Todo
|
|
pk_url_kwarg = 'todo_pk'
|
|
|
|
def get_success_url(self):
|
|
return reverse('todo-deleted', kwargs={'pk': self.kwargs['pk']})
|
|
|
|
class TodoDeleteDoneView(LoginRequiredMixin, TemplateView):
|
|
template_name = 'board/item_deleted.html'
|
|
|
|
|
|
# Events
|
|
class EventListView(LoginRequiredMixin, ListView):
|
|
model = Event
|
|
paginate_by = 100
|
|
ordering = ('-date', '-time')
|
|
|
|
class EventCreateView(LoginRequiredMixin, CreateView):
|
|
model = Event
|
|
template_name_suffix = '_create_form'
|
|
form_class = EventForm
|
|
success_url = reverse_lazy('profile-detail')
|
|
|
|
class EventDetailView(LoginRequiredMixin, DetailView):
|
|
model = Event
|
|
|
|
class EventUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = Event
|
|
form_class = EventForm
|
|
|
|
class EventDeleteView(LoginRequiredMixin, DeleteView):
|
|
model = Event
|
|
success_url = reverse_lazy('profile-detail')
|