2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-16 01:36:29 +00:00

Fix parent error when deleting category

- Any child categories have their parent set to the parent of the deleted category
This commit is contained in:
Oliver
2018-04-15 11:25:57 +10:00
parent 2c2db4fffb
commit 5b5b8f4d12
4 changed files with 65 additions and 1 deletions

View File

@@ -4,6 +4,8 @@ from django.db import models
from django.contrib.contenttypes.models import ContentType
from rest_framework.exceptions import ValidationError
from django.db.models.signals import pre_delete
from django.dispatch import receiver
class Company(models.Model):
""" Abstract model representing an external company
@@ -40,9 +42,12 @@ class InvenTreeTree(models.Model):
unique_together = ('name', 'parent')
name = models.CharField(max_length=100, unique=True)
description = models.CharField(max_length=250, blank=True)
# When a category is deleted, graft the children onto its parent
parent = models.ForeignKey('self',
on_delete=models.CASCADE,
on_delete=models.DO_NOTHING,
blank=True,
null=True,
related_name='children')
@@ -179,6 +184,15 @@ class InvenTreeTree(models.Model):
return self.pathstring
@receiver(pre_delete, sender=InvenTreeTree, dispatch_uid='tree_pre_delete_log')
def before_delete_tree_item(sender, intance, using, **kwargs):
# Update each tree item below this one
for child in instance.children.all():
child.parent = instance.parent
child.save()
def FilterChildren(queryset, parent):
""" Filter a queryset, limit to only objects that are a child of the given parent
Filter is passed in the URL string, e.g. '/?parent=123'