devicehub-django/lot/views.py

147 lines
4.1 KiB
Python

from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext_lazy as _
from django.views.generic.base import TemplateView
from django.views.generic.edit import (
CreateView,
DeleteView,
UpdateView,
FormView
)
from dashboard.mixins import DashboardView
from lot.models import Lot
from lot.forms import LotsForm
class NewLotView(DashboardView, CreateView):
template_name = "new_lot.html"
title = _("New lot")
breadcrumb = "lot / New lot"
success_url = reverse_lazy('dashboard:unassigned_devices')
model = Lot
fields = (
"type",
"name",
"code",
"description",
"closed",
)
def form_valid(self, form):
form.instance.owner = self.request.user
response = super().form_valid(form)
return response
class DeleteLotView(DashboardView, DeleteView):
template_name = "delete_lot.html"
title = _("Delete lot")
breadcrumb = "lot / Delete lot"
success_url = reverse_lazy('dashboard:unassigned_devices')
model = Lot
fields = (
"type",
"name",
"code",
"description",
"closed",
)
def form_valid(self, form):
response = super().form_valid(form)
return response
class EditLotView(DashboardView, UpdateView):
template_name = "new_lot.html"
title = _("Edit lot")
breadcrumb = "Lot / Edit lot"
success_url = reverse_lazy('dashboard:unassigned_devices')
model = Lot
fields = (
"type",
"name",
"code",
"description",
"closed",
)
def get_form_kwargs(self):
pk = self.kwargs.get('pk')
self.object = get_object_or_404(self.model, pk=pk)
# self.success_url = reverse_lazy('dashbiard:lot', args=[pk])
kwargs = super().get_form_kwargs()
return kwargs
class AddToLotView(DashboardView, FormView):
template_name = "list_lots.html"
title = _("Add to lots")
breadcrumb = "lot / add to lots"
success_url = reverse_lazy('dashboard:unassigned_devices')
form_class = LotsForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
lots = Lot.objects.filter(owner=self.request.user)
lots_incoming = lots.filter(type=Lot.Types.INCOMING).exists()
lots_outgoing = lots.filter(type=Lot.Types.OUTGOING).exists()
lots_temporal = lots.filter(type=Lot.Types.TEMPORAL).exists()
context.update({
'lots': lots,
'incoming': lots_incoming,
'outgoing': lots_outgoing,
'temporal': lots_temporal
})
return context
def get_form(self):
form = super().get_form()
# import pdb; pdb.set_trace()
form.fields["lots"].queryset = Lot.objects.filter(owner=self.request.user)
return form
def form_valid(self, form):
form.devices = self.get_session_devices()
form.save()
response = super().form_valid(form)
return response
class DelToLotView(AddToLotView):
title = _("Remove from lots")
breadcrumb = "lot / remove from lots"
def form_valid(self, form):
form.devices = self.get_session_devices()
form.remove()
response = super().form_valid(form)
return response
class LotsTemporalView(DashboardView, TemplateView):
template_name = "lots.html"
title = _("Temporal lots")
breadcrumb = "lot / temporal lots"
success_url = reverse_lazy('dashboard:unassigned_devices')
lot_type = Lot.Types.TEMPORAL
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
lots = Lot.objects.filter(owner=self.request.user)
context.update({
'lots': lots.filter(type=self.lot_type),
})
return context
class LotsOutgoingView(LotsTemporalView):
title = _("Outgoing lots")
breadcrumb = "lot / outging lots"
lot_type = Lot.Types.OUTGOING
class LotsIncomingView(LotsTemporalView):
title = _("Incoming lots")
breadcrumb = "lot / Incoming lots"
lot_type = Lot.Types.INCOMING