Implement component deletion

This commit is contained in:
2022-01-01 17:53:10 +01:00
parent 8ef217f224
commit dbbd8b4a99
4 changed files with 109 additions and 149 deletions

View File

@@ -147,7 +147,25 @@ class ComponentView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
comp_paginator = Paginator(Component.objects.all(), self.default_page_size)
context['components'] = comp_paginator.get_page(comp_page_num)
context['comp_form'] = ComponentForm()
return context
def handle_new_component_post(self, request, **kwargs):
cform = ComponentForm(data=request.POST, files=request.FILES)
if cform.is_valid():
cform.save()
context = self.get_context_data(**kwargs)
if not cform.is_valid():
context['comp_form'] = cform
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
if 'submit-edit-component' in request.POST:
return self.handle_new_component_post(request, **kwargs)
else:
return super().post(request, *args, **kwargs)
class PackageView(LoginRequiredMixin, BaseTemplateMixin, TemplateView):
template_name = 'parts/packages.html'
@@ -518,55 +536,50 @@ class ComponentDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
self.base_title = 'Component / '+self.object.name
context = super().get_context_data(**kwargs)
context['component'] = self.object
context['edit_form'] = EditComponentForm(instance=self.object)
context['stocks'] = Stock.objects.filter(component=self.object)
context['comp_form'] = ComponentForm(instance=self.object)
return context
def handle_submit_edit_post(self, request, **kwargs):
form_error = False
form = EditComponentForm(instance=self.object, data=request.POST, files=request.FILES)
if form.is_valid():
try:
form.save()
except IntegrityError as ie:
form.add_error('name', 'Component name, package, and manufacturer are not unique!')
form.add_error('package', 'Component name, package, and manufacturer are not unique!')
form.add_error('manufacturer', 'Component name, package, and manufacturer are not unique!')
form_error = True
self.object = self.get_object()
else:
form_error = True
context = self.get_context_data(**kwargs)
if form_error:
context['edit_form'] = form
return self.render_to_response(context)
def handle_submit_edit_component_post(self, request, **kwargs):
context = self.get_context_data(**kwargs)
cform = ComponentForm(instance=self.object, data=request.POST, files=request.FILES)
if cform.is_valid():
print('valid')
cform.save()
else:
print('invalid')
context['comp_form'] = cform
context = self.get_context_data(**kwargs)
if not cform.is_valid():
context['comp_form'] = cform
return self.render_to_response(context)
def handle_submit_delete_post(self, request, **kwargs):
delete_error = None
protected_stuff = None
try:
self.object.delete()
except ProtectedError as pe:
delete_error = 'Component is protected'
protected_stuff = pe.protected_objects
except:
delete_error = 'Cannot delete component. Unknown error'
if delete_error is None:
return redirect('parts-components')
else:
context = self.get_context_data(**kwargs)
context['delete_error'] = delete_error
context['protected_stuff'] = protected_stuff
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)
if 'submit-edit-component' in request.POST:
return self.handle_submit_edit_component_post(request, **kwargs)
return super().post(request, *args, **kwargs)
elif 'submit-component-delete' in request.POST:
return self.handle_submit_delete_post(request, **kwargs)
else:
return super().post(request, *args, **kwargs)
class PackageDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
template_name = 'parts/packages-detail.html'