diff --git a/InvenTree/common/migrations/0011_inventreeusersetting.py b/InvenTree/common/migrations/0011_inventreeusersetting.py new file mode 100644 index 0000000000..0bec691041 --- /dev/null +++ b/InvenTree/common/migrations/0011_inventreeusersetting.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.4 on 2021-07-19 22:57 + +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), + ('common', '0010_migrate_currency_setting'), + ] + + operations = [ + migrations.CreateModel( + name='InvenTreeUserSetting', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(help_text='Settings key (must be unique - case insensitive', max_length=50, unique=True)), + ('value', models.CharField(blank=True, help_text='Settings value', max_length=200)), + ('user', models.ForeignKey(blank=True, help_text='User', null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + options={ + 'verbose_name': 'InvenTree User Setting', + 'verbose_name_plural': 'InvenTree User Settings', + }, + ), + ] diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 02d752aa8c..8907299a44 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -746,6 +746,33 @@ class InvenTreeSetting(BaseInvenTreeSetting): verbose_name_plural = "InvenTree Settings" +class InvenTreeUserSetting(BaseInvenTreeSetting): + """ + An InvenTreeSetting object with a usercontext + """ + + GLOBAL_SETTINGS = { + 'PART_ASSEMBLY': { + 'name': _('Assembly'), + 'description': _('Parts can be assembled from other components by default'), + 'default': False, + 'validator': bool, + }, + } + + class Meta: + verbose_name = "InvenTree User Setting" + verbose_name_plural = "InvenTree User Settings" + + user = models.ForeignKey( + User, + on_delete=models.CASCADE, + blank=True, null=True, + verbose_name=_('User'), + help_text=_('User'), + ) + + class PriceBreak(models.Model): """ Represents a PriceBreak model