From b85a4d089587a398b95d61457ee733af8265f13f Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 5 May 2019 22:34:00 +1000 Subject: [PATCH] Limit choices for BomItem Part foreignkey fields - Only allow 'active' Parts --- .../migrations/0018_auto_20190505_2231.py | 24 +++++++++++++++++++ InvenTree/part/models.py | 10 ++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 InvenTree/part/migrations/0018_auto_20190505_2231.py diff --git a/InvenTree/part/migrations/0018_auto_20190505_2231.py b/InvenTree/part/migrations/0018_auto_20190505_2231.py new file mode 100644 index 0000000000..32aa1e3a1b --- /dev/null +++ b/InvenTree/part/migrations/0018_auto_20190505_2231.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2 on 2019-05-05 12:31 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0017_auto_20190505_0848'), + ] + + operations = [ + migrations.AlterField( + model_name='bomitem', + name='part', + field=models.ForeignKey(limit_choices_to={'active': True, 'buildable': True}, on_delete=django.db.models.deletion.CASCADE, related_name='bom_items', to='part.Part'), + ), + migrations.AlterField( + model_name='bomitem', + name='sub_part', + field=models.ForeignKey(limit_choices_to={'active': True, 'consumable': True}, on_delete=django.db.models.deletion.CASCADE, related_name='used_in', to='part.Part'), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index e5497faa4c..f9a91fd345 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -464,12 +464,18 @@ class BomItem(models.Model): # A link to the parent part # Each part will get a reverse lookup field 'bom_items' part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='bom_items', - limit_choices_to={'buildable': True}) + limit_choices_to={ + 'buildable': True, + 'active': True, + }) # A link to the child item (sub-part) # Each part will get a reverse lookup field 'used_in' sub_part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='used_in', - limit_choices_to={'consumable': True}) + limit_choices_to={ + 'consumable': True, + 'active': True + }) # Quantity required quantity = models.PositiveIntegerField(default=1, validators=[MinValueValidator(0)])