mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-01 03:00:54 +00:00
Url field fix (#3488)
* Updates for automated metadata extraction * Update link field for StockItem model - Increase max_length to 200 characters - Custom migration - Updates for InvenTreeUrlField model * Adding unit tests * Bug fix for metadata.py
This commit is contained in:
19
InvenTree/stock/migrations/0082_alter_stockitem_link.py
Normal file
19
InvenTree/stock/migrations/0082_alter_stockitem_link.py
Normal file
@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.15 on 2022-08-07 02:38
|
||||
|
||||
import InvenTree.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stock', '0081_auto_20220801_0044'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='stockitem',
|
||||
name='link',
|
||||
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external URL', max_length=200, verbose_name='External Link'),
|
||||
),
|
||||
]
|
@ -647,7 +647,7 @@ class StockItem(MetadataMixin, MPTTModel):
|
||||
|
||||
link = InvenTreeURLField(
|
||||
verbose_name=_('External Link'),
|
||||
max_length=125, blank=True,
|
||||
blank=True, max_length=200,
|
||||
help_text=_("Link to external URL")
|
||||
)
|
||||
|
||||
|
@ -44,6 +44,45 @@ class StockTest(InvenTreeTestCase):
|
||||
Part.objects.rebuild()
|
||||
StockItem.objects.rebuild()
|
||||
|
||||
def test_link(self):
|
||||
"""Test the link URL field validation"""
|
||||
|
||||
item = StockItem.objects.get(pk=1)
|
||||
|
||||
# Check that invalid URLs fail
|
||||
for bad_url in [
|
||||
'test.com',
|
||||
'httpx://abc.xyz',
|
||||
'https:google.com',
|
||||
]:
|
||||
with self.assertRaises(ValidationError):
|
||||
item.link = bad_url
|
||||
item.save()
|
||||
item.full_clean()
|
||||
|
||||
# Check that valid URLs pass
|
||||
for good_url in [
|
||||
'https://test.com',
|
||||
'https://digikey.com/datasheets?file=1010101010101.bin',
|
||||
'ftp://download.com:8080/file.aspx',
|
||||
]:
|
||||
item.link = good_url
|
||||
item.save()
|
||||
item.full_clean()
|
||||
|
||||
# A long URL should fail
|
||||
long_url = 'https://website.co.uk?query=' + 'a' * 173
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
item.link = long_url
|
||||
item.full_clean()
|
||||
|
||||
# Shorten by a single character, will pass
|
||||
long_url = long_url[:-1]
|
||||
|
||||
item.link = long_url
|
||||
item.save()
|
||||
|
||||
def test_expiry(self):
|
||||
"""Test expiry date functionality for StockItem model."""
|
||||
today = datetime.datetime.now().date()
|
||||
|
Reference in New Issue
Block a user