From 2f11fccb73cd87e3f4485535389526a3c33f653b Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 8 Sep 2019 14:08:49 +1000 Subject: [PATCH] Migrate InvenTreeTree to using MPTT model --- InvenTree/InvenTree/models.py | 7 +++- .../migrations/0019_auto_20190908_0404.py | 37 +++++++++++++++++++ .../migrations/0020_auto_20190908_0404.py | 21 +++++++++++ .../migrations/0011_auto_20190908_0404.py | 37 +++++++++++++++++++ .../migrations/0012_auto_20190908_0405.py | 22 +++++++++++ 5 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 InvenTree/part/migrations/0019_auto_20190908_0404.py create mode 100644 InvenTree/part/migrations/0020_auto_20190908_0404.py create mode 100644 InvenTree/stock/migrations/0011_auto_20190908_0404.py create mode 100644 InvenTree/stock/migrations/0012_auto_20190908_0405.py diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index 0c05a2a44b..41ada83134 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -11,10 +11,12 @@ from rest_framework.exceptions import ValidationError from django.db.models.signals import pre_delete from django.dispatch import receiver +from mptt.models import MPTTModel, TreeForeignKey + from .validators import validate_tree_name -class InvenTreeTree(models.Model): +class InvenTreeTree(MPTTModel): """ Provides an abstracted self-referencing tree model for data categories. - Each Category has one parent Category, which can be blank (for a top-level Category). @@ -30,6 +32,9 @@ class InvenTreeTree(models.Model): abstract = True unique_together = ('name', 'parent') + class MPTTMeta: + order_insertion_by = ['name'] + name = models.CharField( blank=False, max_length=100, diff --git a/InvenTree/part/migrations/0019_auto_20190908_0404.py b/InvenTree/part/migrations/0019_auto_20190908_0404.py new file mode 100644 index 0000000000..160bb929b9 --- /dev/null +++ b/InvenTree/part/migrations/0019_auto_20190908_0404.py @@ -0,0 +1,37 @@ +# Generated by Django 2.2.5 on 2019-09-08 04:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0018_auto_20190907_0941'), + ] + + operations = [ + migrations.AddField( + model_name='partcategory', + name='level', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='partcategory', + name='lft', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='partcategory', + name='rght', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='partcategory', + name='tree_id', + field=models.PositiveIntegerField(db_index=True, default=0, editable=False), + preserve_default=False, + ), + ] diff --git a/InvenTree/part/migrations/0020_auto_20190908_0404.py b/InvenTree/part/migrations/0020_auto_20190908_0404.py new file mode 100644 index 0000000000..4f27191099 --- /dev/null +++ b/InvenTree/part/migrations/0020_auto_20190908_0404.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.5 on 2019-09-08 04:04 + +from django.db import migrations +from part import models + + +def update_tree(apps, schema_editor): + # Update the PartCategory MPTT model + + models.PartCategory.objects.rebuild() + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0019_auto_20190908_0404'), + ] + + operations = [ + migrations.RunPython(update_tree) + ] diff --git a/InvenTree/stock/migrations/0011_auto_20190908_0404.py b/InvenTree/stock/migrations/0011_auto_20190908_0404.py new file mode 100644 index 0000000000..7fc85d0556 --- /dev/null +++ b/InvenTree/stock/migrations/0011_auto_20190908_0404.py @@ -0,0 +1,37 @@ +# Generated by Django 2.2.5 on 2019-09-08 04:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0010_stockitem_build'), + ] + + operations = [ + migrations.AddField( + model_name='stocklocation', + name='level', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='stocklocation', + name='lft', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='stocklocation', + name='rght', + field=models.PositiveIntegerField(default=0, editable=False), + preserve_default=False, + ), + migrations.AddField( + model_name='stocklocation', + name='tree_id', + field=models.PositiveIntegerField(db_index=True, default=0, editable=False), + preserve_default=False, + ), + ] diff --git a/InvenTree/stock/migrations/0012_auto_20190908_0405.py b/InvenTree/stock/migrations/0012_auto_20190908_0405.py new file mode 100644 index 0000000000..52071e5cd4 --- /dev/null +++ b/InvenTree/stock/migrations/0012_auto_20190908_0405.py @@ -0,0 +1,22 @@ +# Generated by Django 2.2.5 on 2019-09-08 04:05 + +from django.db import migrations + +from stock import models + + +def update_tree(apps, schema_editor): + # Update the StockLocation MPTT model + + models.StockLocation.objects.rebuild() + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0011_auto_20190908_0404'), + ] + + operations = [ + migrations.RunPython(update_tree) + ]