Fix deletion of part category and stock location

- Category up part updated to parent
- Location of item updated to parent
This commit is contained in:
Oliver 2018-04-14 20:33:53 +10:00
parent 0550dad2d4
commit 830d33763e
5 changed files with 69 additions and 5 deletions

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-14 10:32
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('part', '0011_partattachment'),
]
operations = [
migrations.AlterField(
model_name='part',
name='category',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='parts', to='part.PartCategory'),
),
]

View File

@ -8,8 +8,9 @@ from InvenTree.models import InvenTreeTree
import os
#from django.db.models.signals.pre_delete
#from django.dispatch import receiver
from django.db.models.signals import pre_delete
from django.dispatch import receiver
class PartCategory(InvenTreeTree):
""" PartCategory provides hierarchical organization of Part objects.
@ -19,9 +20,19 @@ class PartCategory(InvenTreeTree):
verbose_name = "Part Category"
verbose_name_plural = "Part Categories"
"""
@property
def parts(self):
return self.part_set.all()
"""
@receiver(pre_delete, sender=PartCategory, dispatch_uid='partcategory_delete_log')
def before_delete_part_category(sender, instance, using, **kwargs):
# Update each part in this category to point to the parent category
for part in instance.parts.all():
part.category = instance.parent
part.save()
# Function to automatically rename a part image on upload
@ -63,7 +74,7 @@ class Part(models.Model):
# Part category - all parts must be assigned to a category
category = models.ForeignKey(PartCategory, related_name='parts',
null=True, blank=True,
on_delete=models.SET_NULL)
on_delete=models.DO_NOTHING)
image = models.ImageField(upload_to=rename_part_image, max_length=255, null=True, blank=True)

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-14 10:32
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('stock', '0003_auto_20180413_1230'),
]
operations = [
migrations.AlterField(
model_name='stockitem',
name='location',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='items', to='stock.StockLocation'),
),
]

View File

@ -11,6 +11,8 @@ from InvenTree.models import InvenTreeTree
from datetime import datetime
from django.db.models.signals import pre_delete
from django.dispatch import receiver
class StockLocation(InvenTreeTree):
""" Organization tree for StockItem objects
@ -24,12 +26,21 @@ class StockLocation(InvenTreeTree):
return stock_list
@receiver(pre_delete, sender=StockLocation, dispatch_uid='stocklocation_delete_log')
def before_delete_stock_location(sender, instance, using, **kwargs):
# Update each part in the stock location
for item in instance.items.all():
item.location = instance.parent
item.save()
class StockItem(models.Model):
part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='locations')
supplier_part = models.ForeignKey(SupplierPart, blank=True, null=True, on_delete=models.SET_NULL)
location = models.ForeignKey(StockLocation, on_delete=models.CASCADE)
location = models.ForeignKey(StockLocation, on_delete=models.DO_NOTHING,
related_name='items', blank=True, null=True)
quantity = models.PositiveIntegerField(validators=[MinValueValidator(0)])

View File

@ -1,4 +1,4 @@
<div class="container">
<div class="navigation">
<a href="/stock/list/">Stock</a> >
{% if location %}
{% for path_item in location.parentpath %}