From 9919bebaa2f7154cd670eaf60562cdd5b8841788 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 5 May 2019 08:46:23 +1000 Subject: [PATCH] Add PartStart model - Links parts to users --- InvenTree/part/migrations/0016_partstar.py | 24 ++++++++++++++++++++++ InvenTree/part/models.py | 13 ++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 InvenTree/part/migrations/0016_partstar.py diff --git a/InvenTree/part/migrations/0016_partstar.py b/InvenTree/part/migrations/0016_partstar.py new file mode 100644 index 0000000000..baa5c83d5b --- /dev/null +++ b/InvenTree/part/migrations/0016_partstar.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2 on 2019-05-04 22:45 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('part', '0015_partcategory_default_location'), + ] + + operations = [ + migrations.CreateModel( + name='PartStar', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('part', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='starred_users', to='part.Part')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='starred_parts', to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index d406382856..f20e1decf4 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -18,6 +18,7 @@ from django.urls import reverse from django.db import models from django.core.validators import MinValueValidator +from django.contrib.auth.models import User from django.db.models.signals import pre_delete from django.dispatch import receiver @@ -427,6 +428,18 @@ class PartAttachment(models.Model): return os.path.basename(self.attachment.name) +class PartStar(models.Model): + """ A PartStar object creates a relationship between a User and a Part. + + It is used to designate a Part as 'starred' (or favourited) for a given User, + so that the user can track a list of their favourite parts. + """ + + part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='starred_users') + + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='starred_parts') + + class BomItem(models.Model): """ A BomItem links a part to its component items. A part can have a BOM (bill of materials) which defines