Implement Storage navigation and other helpful stuff

This commit is contained in:
2021-08-14 00:25:19 +02:00
parent c065720ded
commit e8538cd534
7 changed files with 145 additions and 18 deletions

View File

@@ -10,6 +10,7 @@ from django.views.generic import TemplateView, DetailView
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from .models import Storage, Stock
from .qr_parser import QrCodeValidator
from django.core.paginator import Paginator
class QrSearchForm(forms.Form):
my_qr_validator = QrCodeValidator()
@@ -101,11 +102,25 @@ class StockView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
template_name = 'parts/stocks.html'
base_title = 'Stocks'
navbar_selected = 'Stocks'
default_pagination_size = 25
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['low_stocks'] = Stock.get_under_watermark()
context['storages'] = Storage.objects.filter(parent_storage=None)
storage_page = self.request.GET.get('storage_page')
if storage_page is None:
storage_page = 1
low_stock_page = self.request.GET.get('low_stock_page')
if low_stock_page is None:
low_stock_page = 1
storage_paginator = Paginator(Storage.objects.filter(parent_storage=None), self.default_pagination_size)
low_stock_paginator = Paginator(Stock.get_under_watermark(),
self.default_pagination_size)
context['low_stocks'] = low_stock_paginator.get_page(low_stock_page)
context['storages'] = storage_paginator.get_page(storage_page)
return context
class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
@@ -114,6 +129,7 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
pk_url_kwarg = 'uuid'
base_title = ''
navbar_selected = 'Stocks'
default_pagination_size = 8
def get_breadcrumbs(self):
crumbs = self.object.get_path_components()
@@ -125,4 +141,11 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
self.base_title = 'Stocks / ' + self.object.name
context = super().get_context_data(**kwargs)
context['breadcrumbs'] = self.get_breadcrumbs()
storage_page = self.request.GET.get('storage_page')
if storage_page is None:
storage_page = 1
storage_paginator = Paginator(Storage.objects.filter(parent_storage=self.object), self.default_pagination_size)
context['storages'] = storage_paginator.get_page(storage_page)
return context