2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-28 11:36:44 +00:00

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 <code@mjmair.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
This commit is contained in:
simonkuehling 2025-03-05 00:44:04 +01:00 committed by GitHub
parent d822b9b574
commit d96f0d78e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 501 additions and 9 deletions

View File

@ -50,8 +50,8 @@ class InvenTreeURLField(models.URLField):
def __init__(self, **kwargs): def __init__(self, **kwargs):
"""Initialization method for InvenTreeURLField.""" """Initialization method for InvenTreeURLField."""
# Max length for InvenTreeURLField is set to 200 # Max length for InvenTreeURLField is set to 2000
kwargs['max_length'] = 200 kwargs['max_length'] = 2000
super().__init__(**kwargs) super().__init__(**kwargs)

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -400,7 +400,10 @@ class Build(
) )
link = InvenTree.fields.InvenTreeURLField( 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( priority = models.PositiveIntegerField(

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -1876,6 +1876,7 @@ class Attachment(InvenTree.models.MetadataMixin, InvenTree.models.InvenTreeModel
null=True, null=True,
verbose_name=_('Link'), verbose_name=_('Link'),
help_text=_('Link to external URL'), help_text=_('Link to external URL'),
max_length=2000,
) )
comment = models.CharField( comment = models.CharField(

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -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",
),
),
]

View File

@ -117,7 +117,10 @@ class Company(
) )
website = InvenTreeURLField( 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( phone = models.CharField(
@ -145,6 +148,7 @@ class Company(
blank=True, blank=True,
verbose_name=_('Link'), verbose_name=_('Link'),
help_text=_('Link to external company information'), help_text=_('Link to external company information'),
max_length=2000,
) )
image = StdImageField( image = StdImageField(
@ -440,6 +444,7 @@ class Address(InvenTree.models.InvenTreeModel):
blank=True, blank=True,
verbose_name=_('Link'), verbose_name=_('Link'),
help_text=_('Link to address information (external)'), help_text=_('Link to address information (external)'),
max_length=2000,
) )

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -354,7 +354,10 @@ class Order(
) )
link = InvenTreeURLField( 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( start_date = models.DateField(
@ -1540,7 +1543,10 @@ class OrderLineItem(InvenTree.models.InvenTreeMetadataModel):
) )
link = InvenTreeURLField( 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( target_date = models.DateField(
@ -1988,7 +1994,10 @@ class SalesOrderShipment(
) )
link = InvenTreeURLField( 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): def is_complete(self):

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -1071,6 +1071,7 @@ class Part(
null=True, null=True,
verbose_name=_('Link'), verbose_name=_('Link'),
help_text=_('Link to external URL'), help_text=_('Link to external URL'),
max_length=2000,
) )
image = StdImageField( image = StdImageField(

View File

@ -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
),
]

View File

@ -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",
),
),
]

View File

@ -935,7 +935,10 @@ class StockItem(
serial_int = models.IntegerField(default=0) serial_int = models.IntegerField(default=0)
link = InvenTreeURLField( 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( batch = models.CharField(

View File

@ -155,7 +155,7 @@ class StockTest(StockTestBase):
item.full_clean() item.full_clean()
# A long URL should fail # 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): with self.assertRaises(ValidationError):
item.link = long_url item.link = long_url