start component parameter formset

This commit is contained in:
2021-11-12 20:14:02 +01:00
parent c08a442ce5
commit 4fe9bb1431
6 changed files with 212 additions and 5 deletions

View File

@@ -11,12 +11,12 @@ from django.views import View
import django.forms as forms
from django.views.generic import TemplateView, DetailView
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from .models import Storage, Stock, Component, Distributor, Manufacturer, Package
from .models import Storage, Stock, Component, Distributor, Manufacturer, Package, ComponentParameter, ComponentParameterType
from .qr_parser import QrCodeValidator
from django.core.paginator import Paginator
from django.core.exceptions import ValidationError
from django.db import IntegrityError
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm, AddStockForm, EditComponentForm
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm, AddStockForm, EditComponentForm, EditComponentParameterForm
from django.db.models import Q
from django.db.models.functions import Lower
import uuid
@@ -265,7 +265,6 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
componente_stock_page = self.request.GET.get('stock_page', default=1)
stock_paginator = Paginator(self.search_stock_queryset(stock_search_input), self.default_pagination_size)
context['storages'] = storage_paginator.get_page(storage_page)
@@ -391,12 +390,28 @@ class ComponentDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
pk_url_kwarg = 'uuid'
base_title = ''
navbar_selected = 'Components'
def preparae_initial_param_formset_data(self):
parameters = ComponentParameter.objects.filter(component=self.object)
initdata = []
for param in parameters:
param_type = param.parameter_type
if param_type.freetext_parameter:
value = param.text_value
else:
value = param.value
initdata.append({'parameter_type': param_type, 'value': value})
return initdata
def get_context_data(self, **kwargs):
self.base_title = 'Component / '+self.object.name
context = super().get_context_data(**kwargs)
context['component'] = self.object
context['edit_form'] = EditComponentForm(instance=self.object)
ParameterFormset = forms.formset_factory(EditComponentParameterForm, extra=0, max_num=100)
context['param_formset'] = ParameterFormset(
initial=self.preparae_initial_param_formset_data())
return context
def handle_submit_edit_post(self, request, **kwargs):
@@ -420,10 +435,23 @@ class ComponentDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
context['edit_form'] = form
return self.render_to_response(context)
def handle_submit_edit_params_post(self, request, **kwargs):
f = EditComponentParameterForm(data=request.POST)
if f.is_valid():
print('Valid')
else:
print('Invalid')
context = self.get_context_data()
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
if 'submit-edit-comp' in request.POST:
return self.handle_submit_edit_post(request, **kwargs)
elif 'submit-edit-params' in request.POST:
return self.handle_submit_edit_params_post(request, **kwargs)
return super().post(request, *args, **kwargs)