From d96f0d78e992a7dc70d32eaea78973a25bc7eb8f Mon Sep 17 00:00:00 2001 From: simonkuehling Date: Wed, 5 Mar 2025 00:44:04 +0100 Subject: [PATCH] increase character limits on all link fields to 2000 (#9131) * increase character limits on all link fields to 2000 * update test to still trigger * Don't fail when diff is too big for echo (#9205) * Reduce severity of error message (#9209) - Currently flooding sentry.io with reports * Disable pagination for ConfigList class (#9210) * [API] Auth login error (#9212) Fixes #9211 * [UI] Table Update (#9220) - Retain user selection for pageSize * renumber migrations after merge from master * Remove quick actions (#9222) * Remove placeholder components - No function - Cleanup for 1.0.0 * Remove Placeholder.tsx * feat(backend): Add user profile (#9116) * Add user profile * fix choice set * ensure primary_group is valid * add missing migrations * fix tests * merge migrations * add migration test * add new model to ruleset * ensure changed to the m2m conenction also validate primary grups * move signals * fix import? * patch user language through * use set methods correctly * bump api * refactoring to make debugging and extending easier * fix dum recurrsion problem * fix user pk lookup * rename migration * add user and group page * cleanup * add hoverCard for user / owner / group render * include owner_model in owner responses * move user serializers to users * add profile to list * add brief serializer for profiles * ensure profile is present in most apis * extend rendered data * store and observe langauge in profile * reduce unneeded complexity * enable access to full profle (including internal fields) in me serializer * move theme to a single object * persist theme settings * fix radius lookup * remove debug message * fix filter * remove unused field * remove image fields * add setting to control showing profiles * fix settings * update test * fix theme reload * Add contact UI * Add profile edit screen * fix test * Add testing for user theme panel * fix var name * complete coverage of theme * Add test for new pages * make test more reliable in strict mode * remove step * fix ref * add verbose names * fix used setting * extend tests * fix permissions * fix lookup * use lookup to enuse ursls stay valid * update migrations * Add position field * fix permissions * Fix font size in location column (#9230) * [WIP] Background reports (#9199) * Update report generation progress * Add shim task for offloading report printing * Cleanup * Add detail endpoints for label and report outputs * Display report printing progress in UI * Implement similar for label printing * Reduce output for CI * Add plugin slug * Bump API version * Ensure it works with machine printing * Fix null comparison * Fix SKU link * Update playwright tests * Massively reduce log output when printing * handle null values in existing db data * fix test to pass at max character limit again --------- Co-authored-by: Matthias Mair Co-authored-by: Oliver Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com> --- src/backend/InvenTree/InvenTree/fields.py | 4 +- .../migrations/0055_auto_20250221_1230.py | 19 +++ .../build/migrations/0056_alter_build_link.py | 24 ++++ src/backend/InvenTree/build/models.py | 5 +- .../migrations/0035_auto_20250221_1513.py | 18 +++ .../migrations/0036_alter_attachment_link.py | 25 ++++ src/backend/InvenTree/common/models.py | 1 + .../migrations/0072_auto_20250221_1236.py | 39 ++++++ ...ddress_link_alter_company_link_and_more.py | 55 +++++++++ .../0074_alter_manufacturerpart_link.py | 25 ++++ src/backend/InvenTree/company/models.py | 7 +- .../migrations/0107_auto_20250221_1241.py | 64 ++++++++++ ...er_purchaseorderextraline_link_and_more.py | 114 ++++++++++++++++++ src/backend/InvenTree/order/models.py | 15 ++- .../migrations/0134_auto_20250221_1309.py | 19 +++ .../part/migrations/0135_alter_part_link.py | 25 ++++ src/backend/InvenTree/part/models.py | 1 + .../migrations/0115_auto_20250221_1323.py | 19 +++ .../migrations/0116_alter_stockitem_link.py | 24 ++++ src/backend/InvenTree/stock/models.py | 5 +- src/backend/InvenTree/stock/tests.py | 2 +- 21 files changed, 501 insertions(+), 9 deletions(-) create mode 100644 src/backend/InvenTree/build/migrations/0055_auto_20250221_1230.py create mode 100644 src/backend/InvenTree/build/migrations/0056_alter_build_link.py create mode 100644 src/backend/InvenTree/common/migrations/0035_auto_20250221_1513.py create mode 100644 src/backend/InvenTree/common/migrations/0036_alter_attachment_link.py create mode 100644 src/backend/InvenTree/company/migrations/0072_auto_20250221_1236.py create mode 100644 src/backend/InvenTree/company/migrations/0073_alter_address_link_alter_company_link_and_more.py create mode 100644 src/backend/InvenTree/company/migrations/0074_alter_manufacturerpart_link.py create mode 100644 src/backend/InvenTree/order/migrations/0107_auto_20250221_1241.py create mode 100644 src/backend/InvenTree/order/migrations/0108_alter_purchaseorder_link_and_more_squashed_0109_alter_purchaseorderextraline_link_and_more.py create mode 100644 src/backend/InvenTree/part/migrations/0134_auto_20250221_1309.py create mode 100644 src/backend/InvenTree/part/migrations/0135_alter_part_link.py create mode 100644 src/backend/InvenTree/stock/migrations/0115_auto_20250221_1323.py create mode 100644 src/backend/InvenTree/stock/migrations/0116_alter_stockitem_link.py diff --git a/src/backend/InvenTree/InvenTree/fields.py b/src/backend/InvenTree/InvenTree/fields.py index 09ac722551..7657a1a5c0 100644 --- a/src/backend/InvenTree/InvenTree/fields.py +++ b/src/backend/InvenTree/InvenTree/fields.py @@ -50,8 +50,8 @@ class InvenTreeURLField(models.URLField): def __init__(self, **kwargs): """Initialization method for InvenTreeURLField.""" - # Max length for InvenTreeURLField is set to 200 - kwargs['max_length'] = 200 + # Max length for InvenTreeURLField is set to 2000 + kwargs['max_length'] = 2000 super().__init__(**kwargs) diff --git a/src/backend/InvenTree/build/migrations/0055_auto_20250221_1230.py b/src/backend/InvenTree/build/migrations/0055_auto_20250221_1230.py new file mode 100644 index 0000000000..db6289829b --- /dev/null +++ b/src/backend/InvenTree/build/migrations/0055_auto_20250221_1230.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.19 on 2025-02-21 12:30 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("build", "0054_build_start_date"), + ] + + operations = [ + migrations.AlterField( + model_name='build', + name='link', + field=models.TextField() # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/build/migrations/0056_alter_build_link.py b/src/backend/InvenTree/build/migrations/0056_alter_build_link.py new file mode 100644 index 0000000000..3d328d160f --- /dev/null +++ b/src/backend/InvenTree/build/migrations/0056_alter_build_link.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:46 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("build", "0055_auto_20250221_1230"), + ] + + operations = [ + migrations.AlterField( + model_name="build", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external URL", + max_length=2000, + verbose_name="External Link", + ), + ), + ] diff --git a/src/backend/InvenTree/build/models.py b/src/backend/InvenTree/build/models.py index c3343db198..0002620112 100644 --- a/src/backend/InvenTree/build/models.py +++ b/src/backend/InvenTree/build/models.py @@ -400,7 +400,10 @@ class Build( ) link = InvenTree.fields.InvenTreeURLField( - verbose_name=_('External Link'), blank=True, help_text=_('Link to external URL') + verbose_name=_('External Link'), + blank=True, + help_text=_('Link to external URL'), + max_length=2000, ) priority = models.PositiveIntegerField( diff --git a/src/backend/InvenTree/common/migrations/0035_auto_20250221_1513.py b/src/backend/InvenTree/common/migrations/0035_auto_20250221_1513.py new file mode 100644 index 0000000000..0eb6592fb6 --- /dev/null +++ b/src/backend/InvenTree/common/migrations/0035_auto_20250221_1513.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.19 on 2025-02-21 15:13 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("common", "0034_alter_inventreecustomuserstatemodel_unique_together_and_more"), + ] + + operations = [migrations.AlterField( + model_name='attachment', + name='link', + field=models.TextField() # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/common/migrations/0036_alter_attachment_link.py b/src/backend/InvenTree/common/migrations/0036_alter_attachment_link.py new file mode 100644 index 0000000000..688b6b89e5 --- /dev/null +++ b/src/backend/InvenTree/common/migrations/0036_alter_attachment_link.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.19 on 2025-02-21 15:15 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("common", "0035_auto_20250221_1513"), + ] + + operations = [ + migrations.AlterField( + model_name="attachment", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external URL", + max_length=2000, + null=True, + verbose_name="Link", + ), + ), + ] diff --git a/src/backend/InvenTree/common/models.py b/src/backend/InvenTree/common/models.py index 8e6890441a..61213b5d17 100644 --- a/src/backend/InvenTree/common/models.py +++ b/src/backend/InvenTree/common/models.py @@ -1876,6 +1876,7 @@ class Attachment(InvenTree.models.MetadataMixin, InvenTree.models.InvenTreeModel null=True, verbose_name=_('Link'), help_text=_('Link to external URL'), + max_length=2000, ) comment = models.CharField( diff --git a/src/backend/InvenTree/company/migrations/0072_auto_20250221_1236.py b/src/backend/InvenTree/company/migrations/0072_auto_20250221_1236.py new file mode 100644 index 0000000000..4e111dd434 --- /dev/null +++ b/src/backend/InvenTree/company/migrations/0072_auto_20250221_1236.py @@ -0,0 +1,39 @@ +# Generated by Django 4.2.19 on 2025-02-21 12:36 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("company", "0071_manufacturerpart_notes_supplierpart_notes"), + ] + + operations = [ + migrations.AlterField( + model_name='company', + name='website', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='company', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='address', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='supplierpart', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='manufacturerpart', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/company/migrations/0073_alter_address_link_alter_company_link_and_more.py b/src/backend/InvenTree/company/migrations/0073_alter_address_link_alter_company_link_and_more.py new file mode 100644 index 0000000000..06657c796c --- /dev/null +++ b/src/backend/InvenTree/company/migrations/0073_alter_address_link_alter_company_link_and_more.py @@ -0,0 +1,55 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:46 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("company", "0072_auto_20250221_1236"), + ] + + operations = [ + migrations.AlterField( + model_name="address", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to address information (external)", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="company", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external company information", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="company", + name="website", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Company website URL", + max_length=2000, + verbose_name="Website", + ), + ), + migrations.AlterField( + model_name="supplierpart", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="URL for external supplier part link", + max_length=2000, + null=True, + verbose_name="Link", + ), + ), + ] diff --git a/src/backend/InvenTree/company/migrations/0074_alter_manufacturerpart_link.py b/src/backend/InvenTree/company/migrations/0074_alter_manufacturerpart_link.py new file mode 100644 index 0000000000..80261f1156 --- /dev/null +++ b/src/backend/InvenTree/company/migrations/0074_alter_manufacturerpart_link.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.19 on 2025-02-21 14:51 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("company", "0073_alter_address_link_alter_company_link_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="manufacturerpart", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="URL for external manufacturer part link", + max_length=2000, + null=True, + verbose_name="Link", + ), + ), + ] diff --git a/src/backend/InvenTree/company/models.py b/src/backend/InvenTree/company/models.py index 3a0c21808a..edf94415d9 100644 --- a/src/backend/InvenTree/company/models.py +++ b/src/backend/InvenTree/company/models.py @@ -117,7 +117,10 @@ class Company( ) website = InvenTreeURLField( - blank=True, verbose_name=_('Website'), help_text=_('Company website URL') + blank=True, + verbose_name=_('Website'), + help_text=_('Company website URL'), + max_length=2000, ) phone = models.CharField( @@ -145,6 +148,7 @@ class Company( blank=True, verbose_name=_('Link'), help_text=_('Link to external company information'), + max_length=2000, ) image = StdImageField( @@ -440,6 +444,7 @@ class Address(InvenTree.models.InvenTreeModel): blank=True, verbose_name=_('Link'), help_text=_('Link to address information (external)'), + max_length=2000, ) diff --git a/src/backend/InvenTree/order/migrations/0107_auto_20250221_1241.py b/src/backend/InvenTree/order/migrations/0107_auto_20250221_1241.py new file mode 100644 index 0000000000..5a4bff1627 --- /dev/null +++ b/src/backend/InvenTree/order/migrations/0107_auto_20250221_1241.py @@ -0,0 +1,64 @@ +# Generated by Django 4.2.19 on 2025-02-21 12:41 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("order", "0106_purchaseorder_start_date_returnorder_start_date_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name='purchaseorder', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='salesorder', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='returnorder', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='purchaseorderlineitem', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='salesorderlineitem', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='returnorderlineitem', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='purchaseorderextraline', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='salesorderextraline', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='returnorderextraline', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + migrations.AlterField( + model_name='salesordershipment', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/order/migrations/0108_alter_purchaseorder_link_and_more_squashed_0109_alter_purchaseorderextraline_link_and_more.py b/src/backend/InvenTree/order/migrations/0108_alter_purchaseorder_link_and_more_squashed_0109_alter_purchaseorderextraline_link_and_more.py new file mode 100644 index 0000000000..bb7a0d36ac --- /dev/null +++ b/src/backend/InvenTree/order/migrations/0108_alter_purchaseorder_link_and_more_squashed_0109_alter_purchaseorderextraline_link_and_more.py @@ -0,0 +1,114 @@ +# Generated by Django 4.2.19 on 2025-02-21 14:57 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("order", "0107_auto_20250221_1241"), + ] + + operations = [ + migrations.AlterField( + model_name="purchaseorder", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="purchaseorderlineitem", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="returnorder", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="returnorderlineitem", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="salesorder", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="salesorderlineitem", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="salesordershipment", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="purchaseorderextraline", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="returnorderextraline", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + migrations.AlterField( + model_name="salesorderextraline", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external page", + max_length=2000, + verbose_name="Link", + ), + ), + ] diff --git a/src/backend/InvenTree/order/models.py b/src/backend/InvenTree/order/models.py index 4e928178fb..b04776a36f 100644 --- a/src/backend/InvenTree/order/models.py +++ b/src/backend/InvenTree/order/models.py @@ -354,7 +354,10 @@ class Order( ) link = InvenTreeURLField( - blank=True, verbose_name=_('Link'), help_text=_('Link to external page') + blank=True, + verbose_name=_('Link'), + help_text=_('Link to external page'), + max_length=2000, ) start_date = models.DateField( @@ -1540,7 +1543,10 @@ class OrderLineItem(InvenTree.models.InvenTreeMetadataModel): ) link = InvenTreeURLField( - blank=True, verbose_name=_('Link'), help_text=_('Link to external page') + blank=True, + verbose_name=_('Link'), + help_text=_('Link to external page'), + max_length=2000, ) target_date = models.DateField( @@ -1988,7 +1994,10 @@ class SalesOrderShipment( ) link = InvenTreeURLField( - blank=True, verbose_name=_('Link'), help_text=_('Link to external page') + blank=True, + verbose_name=_('Link'), + help_text=_('Link to external page'), + max_length=2000, ) def is_complete(self): diff --git a/src/backend/InvenTree/part/migrations/0134_auto_20250221_1309.py b/src/backend/InvenTree/part/migrations/0134_auto_20250221_1309.py new file mode 100644 index 0000000000..f46c453ffa --- /dev/null +++ b/src/backend/InvenTree/part/migrations/0134_auto_20250221_1309.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:09 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("part", "0133_alter_partcategory__icon"), + ] + + operations = [ + migrations.AlterField( + model_name='part', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/part/migrations/0135_alter_part_link.py b/src/backend/InvenTree/part/migrations/0135_alter_part_link.py new file mode 100644 index 0000000000..76a0ebb4a7 --- /dev/null +++ b/src/backend/InvenTree/part/migrations/0135_alter_part_link.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:46 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("part", "0134_auto_20250221_1309"), + ] + + operations = [ + migrations.AlterField( + model_name="part", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external URL", + max_length=2000, + null=True, + verbose_name="Link", + ), + ), + ] diff --git a/src/backend/InvenTree/part/models.py b/src/backend/InvenTree/part/models.py index ba686d53b2..ec3c9b3927 100644 --- a/src/backend/InvenTree/part/models.py +++ b/src/backend/InvenTree/part/models.py @@ -1071,6 +1071,7 @@ class Part( null=True, verbose_name=_('Link'), help_text=_('Link to external URL'), + max_length=2000, ) image = StdImageField( diff --git a/src/backend/InvenTree/stock/migrations/0115_auto_20250221_1323.py b/src/backend/InvenTree/stock/migrations/0115_auto_20250221_1323.py new file mode 100644 index 0000000000..0f232d3ec5 --- /dev/null +++ b/src/backend/InvenTree/stock/migrations/0115_auto_20250221_1323.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:23 + +import InvenTree.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("stock", "0114_alter_stocklocation_custom_icon"), + ] + + operations = [ + migrations.AlterField( + model_name='stockitem', + name='link', + field=models.TextField(null=True, blank=True) # Temporary change to force new ALTER COLUMN operation in the next migration + ), + ] diff --git a/src/backend/InvenTree/stock/migrations/0116_alter_stockitem_link.py b/src/backend/InvenTree/stock/migrations/0116_alter_stockitem_link.py new file mode 100644 index 0000000000..cd4d9038c6 --- /dev/null +++ b/src/backend/InvenTree/stock/migrations/0116_alter_stockitem_link.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.19 on 2025-02-21 13:46 + +import InvenTree.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("stock", "0115_auto_20250221_1323"), + ] + + operations = [ + migrations.AlterField( + model_name="stockitem", + name="link", + field=InvenTree.fields.InvenTreeURLField( + blank=True, + help_text="Link to external URL", + max_length=2000, + verbose_name="External Link", + ), + ), + ] diff --git a/src/backend/InvenTree/stock/models.py b/src/backend/InvenTree/stock/models.py index 99ce63b7d7..0285cf9c51 100644 --- a/src/backend/InvenTree/stock/models.py +++ b/src/backend/InvenTree/stock/models.py @@ -935,7 +935,10 @@ class StockItem( serial_int = models.IntegerField(default=0) link = InvenTreeURLField( - verbose_name=_('External Link'), blank=True, help_text=_('Link to external URL') + verbose_name=_('External Link'), + blank=True, + help_text=_('Link to external URL'), + max_length=2000, ) batch = models.CharField( diff --git a/src/backend/InvenTree/stock/tests.py b/src/backend/InvenTree/stock/tests.py index 6802561c9d..3b126176f2 100644 --- a/src/backend/InvenTree/stock/tests.py +++ b/src/backend/InvenTree/stock/tests.py @@ -155,7 +155,7 @@ class StockTest(StockTestBase): item.full_clean() # A long URL should fail - long_url = 'https://website.co.uk?query=' + 'a' * 173 + long_url = 'https://website.co.uk?query=' + 'a' * 1973 with self.assertRaises(ValidationError): item.link = long_url