Implement component deletion
This commit is contained in:
@@ -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'
|
||||
|
Reference in New Issue
Block a user