Files
depot_django/common/views/employee_views.py
T
gitea f501be9794 fixed client dashboard
fixed employee sidebar nomenclatures buttons
2025-08-03 17:25:23 +03:00

136 lines
4.6 KiB
Python

from datetime import timedelta
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.urls import reverse_lazy
from django.utils import timezone
from django.views.generic import TemplateView, ListView, CreateView, UpdateView
from booking.models import Booking
from common.forms.company import CompanyCreateForm, CompanyUpdateForm
from common.forms.line import LineCreateForm, LineUpdateForm
from common.models import CompanyModel, LinesModel
from containers.models import Container
from payments.models import Payment
from preinfo.models import Preinfo
class EmployeeDashboardView(LoginRequiredMixin, UserPassesTestMixin, TemplateView):
template_name = 'employee-dashboard-content.html'
extra_context = {
'title': 'Employee Dashboard',
'description': 'This is the depot employee dashboard page.',
}
def test_func(self):
return self.request.user.user_type == 'EM' or self.request.user.is_superuser
def get_context_data(self, **kwargs):
today = timezone.now()
last_week = today - timedelta(days=7)
context = super().get_context_data(**kwargs)
containers_queryset = Container.objects.all()
containers = containers_queryset.filter(expedited=False).count()
containers_week = containers_queryset.filter(received_on__gte=last_week).count()
preinfos_queryset = Preinfo.objects.all()
preinfos = preinfos_queryset.filter(received=False).count()
preinfos_week = preinfos_queryset.filter(created_on__gte=last_week).count()
bookings_queryset = Booking.objects.filter(status='active')
bookings = bookings_queryset.filter(status='active').count()
bookings_week = bookings_queryset.filter(created_on__gte=last_week).count()
context['containers'] = containers
context['preinfos'] = preinfos
context['bookings'] = bookings
context['containers_week'] = containers_week
context['preinfos_week'] = preinfos_week
context['bookings_week'] = bookings_week
context['recent_containers'] = containers_queryset.order_by('-expedited_on', '-received_on')[:10]
context['recent_payments'] = Payment.objects.order_by('-created_on')[:10]
print('context prepared')
return context
class EmployeeCompanyListView(LoginRequiredMixin, UserPassesTestMixin, ListView):
model = CompanyModel
template_name = 'employee/company-list.html'
context_object_name = 'objects'
paginate_by = 20
def test_func(self):
return self.request.user.is_superuser
def get_queryset(self):
queryset = super().get_queryset()
data_filter = self.request.GET.get('filter')
if data_filter != 'all':
queryset = queryset.filter(active=True)
queryset = queryset.order_by('name')
return queryset
class EmployeeCompanyCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
model = CompanyModel
template_name = 'common/../../templates/employee/company-create.html'
form_class = CompanyCreateForm
success_url = reverse_lazy('employee_company')
def test_func(self):
return self.request.user.is_superuser
class EmployeeCompanyUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = CompanyModel
template_name = 'common/../../templates/employee/company-update.html'
form_class = CompanyUpdateForm
success_url = reverse_lazy('employee_company')
def test_func(self):
return self.request.user.is_superuser
class EmployeeLineListView(LoginRequiredMixin, UserPassesTestMixin, ListView):
model = LinesModel
template_name = 'employee/line-list.html'
context_object_name = 'objects'
paginate_by = 20
def test_func(self):
return self.request.user.is_superuser
def get_queryset(self):
queryset = super().get_queryset()
data_filter = self.request.GET.get('filter')
if data_filter != 'all':
queryset = queryset.filter(active=True)
queryset = queryset.order_by('name')
return queryset
class EmployeeLineCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
model = LinesModel
template_name = 'employee/company-create.html'
form_class = LineCreateForm
success_url = reverse_lazy('employee_line')
def test_func(self):
return self.request.user.is_superuser
class EmployeeLineUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = LinesModel
template_name = 'employee/company-update.html'
form_class = LineUpdateForm
success_url = reverse_lazy('employee_line')
def test_func(self):
return self.request.user.is_superuser