mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-04 07:05:41 +00:00 
			
		
		
		
	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:
		
							
								
								
									
										25
									
								
								InvenTree/company/migrations/0058_auto_20230515_0004.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								InvenTree/company/migrations/0058_auto_20230515_0004.py
									
									
									
									
									
										Normal 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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -311,7 +311,7 @@ class ManufacturerPart(MetadataMixin, models.Model):
 | 
			
		||||
        help_text=_('Manufacturer part description')
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    tags = TaggableManager()
 | 
			
		||||
    tags = TaggableManager(blank=True)
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def create(cls, part, manufacturer, mpn, description, link=None):
 | 
			
		||||
@@ -448,7 +448,8 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin
 | 
			
		||||
        db_table = 'part_supplierpart'
 | 
			
		||||
 | 
			
		||||
    objects = SupplierPartManager()
 | 
			
		||||
    tags = TaggableManager()
 | 
			
		||||
 | 
			
		||||
    tags = TaggableManager(blank=True)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_api_url():
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								InvenTree/part/migrations/0107_alter_part_tags.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								InvenTree/part/migrations/0107_alter_part_tags.py
									
									
									
									
									
										Normal 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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -380,7 +380,8 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel)
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    objects = PartManager()
 | 
			
		||||
    tags = TaggableManager()
 | 
			
		||||
 | 
			
		||||
    tags = TaggableManager(blank=True)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        """Metaclass defines extra model properties"""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								InvenTree/stock/migrations/0100_auto_20230515_0004.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								InvenTree/stock/migrations/0100_auto_20230515_0004.py
									
									
									
									
									
										Normal 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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -54,7 +54,7 @@ class StockLocation(InvenTreeBarcodeMixin, MetadataMixin, InvenTreeTree):
 | 
			
		||||
        verbose_name = _('Stock Location')
 | 
			
		||||
        verbose_name_plural = _('Stock Locations')
 | 
			
		||||
 | 
			
		||||
    tags = TaggableManager()
 | 
			
		||||
    tags = TaggableManager(blank=True)
 | 
			
		||||
 | 
			
		||||
    def delete_recursive(self, *args, **kwargs):
 | 
			
		||||
        """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"
 | 
			
		||||
    IN_STOCK_FILTER = Q(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user