devicehub-django/lot/views.py

237 lines
7.3 KiB
Python
Raw Normal View History

2024-07-09 11:35:35 +00:00
from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext_lazy as _
2024-07-10 11:55:57 +00:00
from django.views.generic.base import TemplateView
2024-07-09 11:35:35 +00:00
from django.views.generic.edit import (
CreateView,
2024-07-10 11:55:57 +00:00
DeleteView,
2024-07-09 11:35:35 +00:00
UpdateView,
2024-07-19 15:40:01 +00:00
FormView,
2024-07-09 11:35:35 +00:00
)
2024-07-09 15:31:24 +00:00
from dashboard.mixins import DashboardView
2024-11-16 15:31:02 +00:00
from lot.models import Lot, LotTag, LotProperty
2024-07-09 15:31:24 +00:00
from lot.forms import LotsForm
2024-11-16 15:31:02 +00:00
from device.models import Property
2024-07-09 11:35:35 +00:00
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):
2024-10-09 16:00:56 +00:00
form.instance.owner = self.request.user.institution
form.instance.user = self.request.user
2024-07-09 11:35:35 +00:00
response = super().form_valid(form)
return response
2024-07-10 11:55:57 +00:00
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
2024-07-09 11:35:35 +00:00
class EditLotView(DashboardView, UpdateView):
template_name = "new_lot.html"
2024-07-10 11:55:57 +00:00
title = _("Edit lot")
breadcrumb = "Lot / Edit lot"
2024-07-09 11:35:35 +00:00
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')
2024-10-09 16:00:56 +00:00
self.object = get_object_or_404(
self.model,
owner=self.request.user.institution,
pk=pk,
)
2024-07-09 11:35:35 +00:00
# self.success_url = reverse_lazy('dashbiard:lot', args=[pk])
kwargs = super().get_form_kwargs()
return kwargs
2024-07-09 15:31:24 +00:00
2024-07-10 11:55:57 +00:00
2024-07-09 15:31:24 +00:00
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)
2024-10-09 16:00:56 +00:00
lots = Lot.objects.filter(owner=self.request.user.institution)
lot_tags = LotTag.objects.filter(owner=self.request.user.institution)
2024-07-09 15:31:24 +00:00
context.update({
'lots': lots,
2024-07-18 15:21:22 +00:00
'lot_tags':lot_tags,
2024-07-09 15:31:24 +00:00
})
return context
def get_form(self):
form = super().get_form()
2024-10-09 16:00:56 +00:00
form.fields["lots"].queryset = Lot.objects.filter(owner=self.request.user.institution)
2024-07-09 15:31:24 +00:00
return form
def form_valid(self, form):
form.devices = self.get_session_devices()
form.save()
response = super().form_valid(form)
return response
2024-07-10 08:24:40 +00:00
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
2024-07-18 15:21:22 +00:00
class LotsTagsView(DashboardView, TemplateView):
2024-07-10 11:55:57 +00:00
template_name = "lots.html"
2024-07-18 15:21:22 +00:00
title = _("lots")
breadcrumb = _("lots") + " /"
2024-07-10 11:55:57 +00:00
success_url = reverse_lazy('dashboard:unassigned_devices')
def get_context_data(self, **kwargs):
2024-07-18 15:21:22 +00:00
self.pk = kwargs.get('pk')
2024-07-10 11:55:57 +00:00
context = super().get_context_data(**kwargs)
2024-10-09 16:00:56 +00:00
tag = get_object_or_404(LotTag, owner=self.request.user.institution, id=self.pk)
2024-07-18 15:21:22 +00:00
self.title += " {}".format(tag.name)
self.breadcrumb += " {}".format(tag.name)
show_closed = self.request.GET.get('show_closed', 'false') == 'true'
lots = Lot.objects.filter(owner=self.request.user.institution).filter(type=tag, closed=show_closed)
2024-07-10 11:55:57 +00:00
context.update({
2024-07-18 15:21:22 +00:00
'lots': lots,
'title': self.title,
'breadcrumb': self.breadcrumb,
'show_closed': show_closed
2024-07-10 11:55:57 +00:00
})
return context
2024-07-30 11:37:08 +00:00
class LotAddDocumentView(DashboardView, CreateView):
2024-11-16 15:31:02 +00:00
template_name = "new_property.html"
2024-07-30 11:37:08 +00:00
title = _("New Document")
breadcrumb = "Device / New document"
success_url = reverse_lazy('dashboard:unassigned_devices')
2024-11-16 15:31:02 +00:00
model = LotProperty
2024-07-30 11:37:08 +00:00
fields = ("key", "value")
def form_valid(self, form):
2024-10-09 16:00:56 +00:00
form.instance.owner = self.request.user.institution
form.instance.user = self.request.user
2024-07-30 11:37:08 +00:00
form.instance.lot = self.lot
2024-11-16 15:31:02 +00:00
form.instance.type = Property.Type.DOCUMENT
2024-07-30 11:37:08 +00:00
response = super().form_valid(form)
return response
def get_form_kwargs(self):
pk = self.kwargs.get('pk')
2024-10-09 16:00:56 +00:00
self.lot = get_object_or_404(Lot, pk=pk, owner=self.request.user.institution)
2024-07-30 11:37:08 +00:00
self.success_url = reverse_lazy('lot:documents', args=[pk])
kwargs = super().get_form_kwargs()
return kwargs
class LotDocumentsView(DashboardView, TemplateView):
template_name = "documents.html"
title = _("New Document")
2024-11-16 15:31:02 +00:00
breadcrumb = "Devicce / New document"
2024-07-30 11:37:08 +00:00
def get_context_data(self, **kwargs):
self.pk = kwargs.get('pk')
context = super().get_context_data(**kwargs)
2024-10-09 16:00:56 +00:00
lot = get_object_or_404(Lot, owner=self.request.user.institution, id=self.pk)
2024-11-16 15:31:02 +00:00
documents = LotProperty.objects.filter(
2024-07-30 11:37:08 +00:00
lot=lot,
2024-10-09 16:00:56 +00:00
owner=self.request.user.institution,
2024-11-16 15:31:02 +00:00
type=Property.Type.DOCUMENT,
2024-07-30 11:37:08 +00:00
)
context.update({
'lot': lot,
'documents': documents,
'title': self.title,
'breadcrumb': self.breadcrumb
})
return context
2024-11-16 15:31:02 +00:00
class LotPropertiesView(DashboardView, TemplateView):
template_name = "properties.html"
title = _("New Lot Property")
breadcrumb = "Lot / New property"
2024-07-30 11:37:08 +00:00
def get_context_data(self, **kwargs):
self.pk = kwargs.get('pk')
context = super().get_context_data(**kwargs)
2024-10-09 16:00:56 +00:00
lot = get_object_or_404(Lot, owner=self.request.user.institution, id=self.pk)
2024-11-16 15:31:02 +00:00
properties = LotProperty.objects.filter(
2024-07-30 11:37:08 +00:00
lot=lot,
2024-10-09 16:00:56 +00:00
owner=self.request.user.institution,
2024-11-16 15:31:02 +00:00
type=Property.Type.USER,
2024-07-30 11:37:08 +00:00
)
context.update({
'lot': lot,
2024-11-16 15:31:02 +00:00
'properties': properties,
2024-07-30 11:37:08 +00:00
'title': self.title,
'breadcrumb': self.breadcrumb
})
return context
2024-11-16 15:31:02 +00:00
class LotAddPropertyView(DashboardView, CreateView):
template_name = "new_property.html"
title = _("New Lot Property")
breadcrumb = "Device / New property"
2024-07-30 11:37:08 +00:00
success_url = reverse_lazy('dashboard:unassigned_devices')
2024-11-16 15:31:02 +00:00
model = LotProperty
2024-07-30 11:37:08 +00:00
fields = ("key", "value")
def form_valid(self, form):
2024-10-09 16:00:56 +00:00
form.instance.owner = self.request.user.institution
form.instance.user = self.request.user
2024-07-30 11:37:08 +00:00
form.instance.lot = self.lot
2024-11-16 15:31:02 +00:00
form.instance.type = Property.Type.USER
2024-07-30 11:37:08 +00:00
response = super().form_valid(form)
return response
def get_form_kwargs(self):
pk = self.kwargs.get('pk')
2024-10-09 16:00:56 +00:00
self.lot = get_object_or_404(Lot, pk=pk, owner=self.request.user.institution)
2024-11-16 15:31:02 +00:00
self.success_url = reverse_lazy('lot:properties', args=[pk])
2024-07-30 11:37:08 +00:00
kwargs = super().get_form_kwargs()
return kwargs