From 8ac180a9e3ac2511adfc2e785297dab26ca8ff8d Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 10 May 2019 22:52:06 +1000 Subject: [PATCH] Add validator to part name - Check for 'illegal' characters - Mostly just as a test for validators! --- InvenTree/InvenTree/validators.py | 15 +++++++++++++++ .../migrations/0021_auto_20190510_2220.py | 19 +++++++++++++++++++ InvenTree/part/models.py | 5 ++++- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 InvenTree/InvenTree/validators.py create mode 100644 InvenTree/part/migrations/0021_auto_20190510_2220.py diff --git a/InvenTree/InvenTree/validators.py b/InvenTree/InvenTree/validators.py new file mode 100644 index 0000000000..c7fcadc5e2 --- /dev/null +++ b/InvenTree/InvenTree/validators.py @@ -0,0 +1,15 @@ +""" +Custom field validators for InvenTree +""" + +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + + +def validate_part_name(value): + # Prevent some illegal characters in part names + for c in ['/', '\\', '|', '#', '$']: + if c in str(value): + raise ValidationError( + _('Invalid character in part name') + ) \ No newline at end of file diff --git a/InvenTree/part/migrations/0021_auto_20190510_2220.py b/InvenTree/part/migrations/0021_auto_20190510_2220.py new file mode 100644 index 0000000000..294bd112ae --- /dev/null +++ b/InvenTree/part/migrations/0021_auto_20190510_2220.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2 on 2019-05-10 12:20 + +import InvenTree.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0020_auto_20190510_2022'), + ] + + operations = [ + migrations.AlterField( + model_name='part', + name='name', + field=models.CharField(help_text='Part name', max_length=100, validators=[InvenTree.validators.validate_part_name]), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index a349776979..c5e7e8d9c6 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -25,6 +25,7 @@ from django.db.models.signals import pre_delete from django.dispatch import receiver from InvenTree import helpers +from InvenTree import validators from InvenTree.models import InvenTreeTree from company.models import Company @@ -172,7 +173,9 @@ class Part(models.Model): else: return static('/img/blank_image.png') - name = models.CharField(max_length=100, blank=False, help_text='Part name') + name = models.CharField(max_length=100, blank=False, help_text='Part name', + validators=[validators.validate_part_name] + ) variant = models.CharField(max_length=32, blank=True, help_text='Part variant or revision code')