2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00

Remove client-side length validation in form inputs (#3911)

* Remove client-side length validation in form inputs

- Let the server throw an error (so the user sees it)

* Update instances of models.URLField to InvenTreeURLField
This commit is contained in:
Oliver 2022-11-10 12:51:15 +11:00 committed by GitHub
parent fb77158496
commit 57a20be5c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 57 additions and 20 deletions

View File

@ -38,10 +38,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 defaults to 200 # Max length for InvenTreeURLField is set to 200
if 'max_length' not in kwargs:
kwargs['max_length'] = 200 kwargs['max_length'] = 200
super().__init__(**kwargs) super().__init__(**kwargs)

View File

@ -21,7 +21,7 @@ from rest_framework.serializers import DecimalField
from rest_framework.utils import model_meta from rest_framework.utils import model_meta
from common.models import InvenTreeSetting from common.models import InvenTreeSetting
from InvenTree.fields import InvenTreeRestURLField from InvenTree.fields import InvenTreeRestURLField, InvenTreeURLField
from InvenTree.helpers import download_image_from_url from InvenTree.helpers import download_image_from_url
@ -73,6 +73,7 @@ class InvenTreeModelSerializer(serializers.ModelSerializer):
serializer_field_mapping = { serializer_field_mapping = {
**serializers.ModelSerializer.serializer_field_mapping, **serializers.ModelSerializer.serializer_field_mapping,
models.URLField: InvenTreeRestURLField, models.URLField: InvenTreeRestURLField,
InvenTreeURLField: InvenTreeRestURLField,
} }
def __init__(self, instance=None, data=empty, **kwargs): def __init__(self, instance=None, data=empty, **kwargs):

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.16 on 2022-11-10 01:08
import InvenTree.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('company', '0049_company_metadata'),
]
operations = [
migrations.AlterField(
model_name='company',
name='website',
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='Company website URL', verbose_name='Website'),
),
]

View File

@ -101,7 +101,7 @@ class Company(MetadataMixin, models.Model):
blank=True, blank=True,
) )
website = models.URLField( website = InvenTreeURLField(
blank=True, blank=True,
verbose_name=_('Website'), verbose_name=_('Website'),
help_text=_('Company website URL') help_text=_('Company website URL')

View File

@ -0,0 +1,29 @@
# Generated by Django 3.2.16 on 2022-11-10 01:08
import InvenTree.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('order', '0074_auto_20220709_0108'),
]
operations = [
migrations.AlterField(
model_name='purchaseorder',
name='link',
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external page', verbose_name='Link'),
),
migrations.AlterField(
model_name='salesorder',
name='link',
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external page', verbose_name='Link'),
),
migrations.AlterField(
model_name='salesordershipment',
name='link',
field=InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external page', verbose_name='Link'),
),
]

View File

@ -30,7 +30,7 @@ from common.settings import currency_code_default
from company.models import Company, SupplierPart from company.models import Company, SupplierPart
from InvenTree.exceptions import log_error from InvenTree.exceptions import log_error
from InvenTree.fields import (InvenTreeModelMoneyField, InvenTreeNotesField, from InvenTree.fields import (InvenTreeModelMoneyField, InvenTreeNotesField,
RoundingDecimalField) InvenTreeURLField, RoundingDecimalField)
from InvenTree.helpers import decimal2string, getSetting, notify_responsible from InvenTree.helpers import decimal2string, getSetting, notify_responsible
from InvenTree.models import InvenTreeAttachment, ReferenceIndexingMixin from InvenTree.models import InvenTreeAttachment, ReferenceIndexingMixin
from InvenTree.status_codes import (PurchaseOrderStatus, SalesOrderStatus, from InvenTree.status_codes import (PurchaseOrderStatus, SalesOrderStatus,
@ -81,7 +81,7 @@ class Order(MetadataMixin, ReferenceIndexingMixin):
description = models.CharField(max_length=250, verbose_name=_('Description'), help_text=_('Order description')) description = models.CharField(max_length=250, verbose_name=_('Description'), help_text=_('Order description'))
link = models.URLField(blank=True, verbose_name=_('Link'), help_text=_('Link to external page')) link = InvenTreeURLField(blank=True, verbose_name=_('Link'), help_text=_('Link to external page'))
creation_date = models.DateField(blank=True, null=True, verbose_name=_('Creation Date')) creation_date = models.DateField(blank=True, null=True, verbose_name=_('Creation Date'))
@ -1254,7 +1254,7 @@ class SalesOrderShipment(models.Model):
help_text=_('Reference number for associated invoice'), help_text=_('Reference number for associated invoice'),
) )
link = models.URLField( link = InvenTreeURLField(
blank=True, blank=True,
verbose_name=_('Link'), verbose_name=_('Link'),
help_text=_('Link to external page') help_text=_('Link to external page')

View File

@ -656,7 +656,7 @@ class StockItem(InvenTreeBarcodeMixin, MetadataMixin, MPTTModel):
link = InvenTreeURLField( link = InvenTreeURLField(
verbose_name=_('External Link'), verbose_name=_('External Link'),
blank=True, max_length=200, blank=True,
help_text=_("Link to external URL") help_text=_("Link to external URL")
) )

View File

@ -2330,16 +2330,6 @@ function constructInputOptions(name, classes, type, parameters, options={}) {
opts.push(`value='${parameters.default}'`); opts.push(`value='${parameters.default}'`);
} }
// Maximum input length
if (parameters.max_length != null) {
opts.push(`maxlength='${parameters.max_length}'`);
}
// Minimum input length
if (parameters.min_length != null) {
opts.push(`minlength='${parameters.min_length}'`);
}
// Maximum value // Maximum value
if (parameters.max_value != null) { if (parameters.max_value != null) {
opts.push(`max='${parameters.max_value}'`); opts.push(`max='${parameters.max_value}'`);