Allow tag fields to be empty (#4816)

Without this change, editing items (e.g. via the admin interface) fails if the tag field is not empty
This commit is contained in:
Oliver 2023-05-15 10:57:12 +10:00 committed by GitHub
parent e2505433a2
commit caa7b84c3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 77 additions and 5 deletions

View File

@ -0,0 +1,25 @@
# Generated by Django 3.2.19 on 2023-05-15 00:04
from django.db import migrations
import taggit.managers
class Migration(migrations.Migration):
dependencies = [
('taggit', '0005_auto_20220424_2025'),
('company', '0057_auto_20230427_2033'),
]
operations = [
migrations.AlterField(
model_name='manufacturerpart',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
migrations.AlterField(
model_name='supplierpart',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
]

View File

@ -311,7 +311,7 @@ class ManufacturerPart(MetadataMixin, models.Model):
help_text=_('Manufacturer part description') help_text=_('Manufacturer part description')
) )
tags = TaggableManager() tags = TaggableManager(blank=True)
@classmethod @classmethod
def create(cls, part, manufacturer, mpn, description, link=None): def create(cls, part, manufacturer, mpn, description, link=None):
@ -448,7 +448,8 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin
db_table = 'part_supplierpart' db_table = 'part_supplierpart'
objects = SupplierPartManager() objects = SupplierPartManager()
tags = TaggableManager()
tags = TaggableManager(blank=True)
@staticmethod @staticmethod
def get_api_url(): def get_api_url():

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.19 on 2023-05-15 00:04
from django.db import migrations
import taggit.managers
class Migration(migrations.Migration):
dependencies = [
('taggit', '0005_auto_20220424_2025'),
('part', '0106_part_tags'),
]
operations = [
migrations.AlterField(
model_name='part',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
]

View File

@ -380,7 +380,8 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel)
""" """
objects = PartManager() objects = PartManager()
tags = TaggableManager()
tags = TaggableManager(blank=True)
class Meta: class Meta:
"""Metaclass defines extra model properties""" """Metaclass defines extra model properties"""

View File

@ -0,0 +1,25 @@
# Generated by Django 3.2.19 on 2023-05-15 00:04
from django.db import migrations
import taggit.managers
class Migration(migrations.Migration):
dependencies = [
('taggit', '0005_auto_20220424_2025'),
('stock', '0099_alter_stockitem_status'),
]
operations = [
migrations.AlterField(
model_name='stockitem',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
migrations.AlterField(
model_name='stocklocation',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
]

View File

@ -54,7 +54,7 @@ class StockLocation(InvenTreeBarcodeMixin, MetadataMixin, InvenTreeTree):
verbose_name = _('Stock Location') verbose_name = _('Stock Location')
verbose_name_plural = _('Stock Locations') verbose_name_plural = _('Stock Locations')
tags = TaggableManager() tags = TaggableManager(blank=True)
def delete_recursive(self, *args, **kwargs): def delete_recursive(self, *args, **kwargs):
"""This function handles the recursive deletion of sub-locations depending on kwargs contents""" """This function handles the recursive deletion of sub-locations depending on kwargs contents"""
@ -324,7 +324,7 @@ class StockItem(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, commo
} }
} }
tags = TaggableManager() tags = TaggableManager(blank=True)
# A Query filter which will be re-used in multiple places to determine if a StockItem is actually "in stock" # A Query filter which will be re-used in multiple places to determine if a StockItem is actually "in stock"
IN_STOCK_FILTER = Q( IN_STOCK_FILTER = Q(