Add functionality to 'Add substorage modal' on stock pages

This commit is contained in:
2021-10-24 21:14:11 +02:00
parent e4a83f3e58
commit bd2cb79e04
3 changed files with 74 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
from django.shortcuts import render, redirect
from django.urls import resolve, reverse
from django.contrib.auth import logout, login
from django.contrib.auth.models import User
from django.http import HttpResponse
from .navbar import NavBar
from django.contrib.auth.forms import AuthenticationForm as AuthForm
@@ -11,6 +12,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMix
from .models import Storage, Stock
from .qr_parser import QrCodeValidator
from django.core.paginator import Paginator
from django.core.exceptions import ValidationError
class QrSearchForm(forms.Form):
my_qr_validator = QrCodeValidator()
@@ -123,6 +125,10 @@ class StockView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
return context
class AddSubStorageForm(forms.Form):
storage_name = forms.CharField(label="storage_name", initial='')
responsible = forms.CharField(label='responsible_user')
class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
template_name = 'parts/stocks-detail.html'
model = Storage
@@ -148,7 +154,31 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
storage_paginator = Paginator(Storage.objects.filter(parent_storage=self.object), self.default_pagination_size)
context['storages'] = storage_paginator.get_page(storage_page)
add_storage_form = AddSubStorageForm()
add_storage_form.fields['responsible'].initial = self.request.user.username
context['add_storage_form'] = add_storage_form
return context
def post(self):
pass
def handle_add_storage_post(self, request, **kwargs):
f = AddSubStorageForm(data=request.POST)
if f.is_valid():
sub_name = f.cleaned_data['storage_name']
try:
user = User.objects.get(username=f.cleaned_data['responsible'])
try:
Storage.objects.create(name=sub_name, parent_storage=self.object, responsible=user)
except ValidationError as v_err:
f.add_error('storage_name', '. '.join(v_err.messages))
except:
f.add_error('responsible', 'Invalid user')
context = self.get_context_data(**kwargs)
context['add_storage_form'] = f
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
if 'submit-add-storage' in request.POST:
return self.handle_add_storage_post(request)
return super().post(request, *args, **kwargs)