Implement Add Stock modal
This commit is contained in:
@@ -71,4 +71,37 @@ class EditStockAmountForm(forms.Form):
|
||||
if not increase:
|
||||
amount = -amount
|
||||
|
||||
return stock.atomic_increment(amount)
|
||||
return stock.atomic_increment(amount)
|
||||
|
||||
class AddStockForm(forms.Form):
|
||||
watermark_active = forms.BooleanField(required=False)
|
||||
watermark = forms.IntegerField(min_value=0, required=True, initial=0)
|
||||
amount = forms.IntegerField(min_value=0, required=True, initial=1)
|
||||
component_uuid = forms.UUIDField(required=True)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
|
||||
id = cleaned_data.get('component_uuid')
|
||||
if not id:
|
||||
raise ValidationError('No valid component selected!')
|
||||
component = None
|
||||
try:
|
||||
component = parts_models.Component.objects.get(id=id)
|
||||
except:
|
||||
raise ValidationError("Invalid component selected!")
|
||||
cleaned_data['component'] = component
|
||||
|
||||
return cleaned_data
|
||||
|
||||
def save(self, storage):
|
||||
component = self.cleaned_data.get('component')
|
||||
amount = self.cleaned_data.get('amount')
|
||||
watermark = -1
|
||||
|
||||
if self.cleaned_data.get('watermark-active'):
|
||||
watermark = self.cleaned_data.get('watermark')
|
||||
|
||||
new_stock = parts_models.Stock.objects.create(storage=storage, component=component, watermark=watermark, amount=amount)
|
||||
new_stock.save()
|
||||
|
@@ -13,7 +13,7 @@ from .models import Storage, Stock
|
||||
from .qr_parser import QrCodeValidator
|
||||
from django.core.paginator import Paginator
|
||||
from django.core.exceptions import ValidationError
|
||||
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm
|
||||
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm, AddStockForm
|
||||
from django.db.models import Q
|
||||
from django.db.models.functions import Lower
|
||||
import uuid
|
||||
@@ -223,6 +223,7 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
add_storage_form.fields['responsible'].initial = self.request.user.username
|
||||
context['add_storage_form'] = add_storage_form
|
||||
context['delete_storage_error'] = None
|
||||
context['add_stock_form'] = AddStockForm()
|
||||
|
||||
return context
|
||||
|
||||
@@ -293,6 +294,24 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
context = self.get_context_data(**kwargs)
|
||||
return self.render_to_response(context)
|
||||
|
||||
def handle_add_stock_post(self, request, **kwargs):
|
||||
f = AddStockForm(data=request.POST)
|
||||
error_occured = False
|
||||
|
||||
if f.is_valid():
|
||||
try:
|
||||
f.save(self.object)
|
||||
except Exception as ex:
|
||||
f.add_error('', str(ex))
|
||||
error_occured = True
|
||||
else:
|
||||
error_occured = True
|
||||
|
||||
context = self.get_context_data(**kwargs)
|
||||
if error_occured:
|
||||
context['add_stock_form'] = f
|
||||
return self.render_to_response(context)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
|
||||
@@ -308,4 +327,7 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
return self.handle_amount_change_post(request, False, **kwargs)
|
||||
elif 'submit-amount-increase' in request.POST:
|
||||
return self.handle_amount_change_post(request, True, **kwargs)
|
||||
elif 'submit-add-stock' in request.POST:
|
||||
return self.handle_add_stock_post(request, **kwargs)
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
Reference in New Issue
Block a user