mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge remote-tracking branch 'inventree/master'
This commit is contained in:
commit
e5adf4a89f
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,6 +48,7 @@ docs/_build
|
||||
inventree_media
|
||||
inventree_static
|
||||
static_i18n
|
||||
inventree-data
|
||||
|
||||
# Local config file
|
||||
config.yaml
|
||||
|
16
.gitpod.yml
16
.gitpod.yml
@ -10,29 +10,21 @@ tasks:
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install invoke
|
||||
inv install
|
||||
mkdir dev
|
||||
inv update
|
||||
gp sync-done setup_server
|
||||
inv test-setup
|
||||
gp sync-done start_server
|
||||
|
||||
- name: Start server
|
||||
init: gp sync-await setup_server
|
||||
init: gp sync-await start_server
|
||||
command: |
|
||||
gp sync-await setup_server
|
||||
gp sync-await start_server
|
||||
export INVENTREE_DB_ENGINE='sqlite3'
|
||||
export INVENTREE_DB_NAME='/workspace/InvenTree/dev/database.sqlite3'
|
||||
export INVENTREE_MEDIA_ROOT='/workspace/InvenTree/inventree-data/media'
|
||||
export INVENTREE_STATIC_ROOT='/workspace/InvenTree/dev/static'
|
||||
|
||||
source venv/bin/activate
|
||||
rm /workspace/InvenTree/inventree-data -r
|
||||
git clone https://github.com/inventree/demo-dataset /workspace/InvenTree/inventree-data
|
||||
invoke delete-data -f
|
||||
invoke import-records -f /workspace/InvenTree/inventree-data/inventree_data.json
|
||||
|
||||
inv server
|
||||
|
||||
# List the ports to expose. Learn more https://www.gitpod.io/docs/config-ports/
|
||||
ports:
|
||||
- port: 8000
|
||||
onOpen: open-preview
|
||||
|
@ -24,7 +24,6 @@ import InvenTree.format
|
||||
import InvenTree.helpers
|
||||
from common.models import InvenTreeSetting
|
||||
from InvenTree.fields import InvenTreeURLField
|
||||
from InvenTree.validators import validate_tree_name
|
||||
|
||||
logger = logging.getLogger('inventree')
|
||||
|
||||
@ -538,7 +537,6 @@ class InvenTreeTree(MPTTModel):
|
||||
name = models.CharField(
|
||||
blank=False,
|
||||
max_length=100,
|
||||
validators=[validate_tree_name],
|
||||
verbose_name=_("Name"),
|
||||
help_text=_("Name"),
|
||||
)
|
||||
|
@ -80,10 +80,7 @@ def validate_sales_order_reference(value):
|
||||
|
||||
|
||||
def validate_tree_name(value):
|
||||
"""Prevent illegal characters in tree item names."""
|
||||
for c in "!@#$%^&*'\"\\/[]{}<>,|+=~`\"": # noqa: P103
|
||||
if c in str(value):
|
||||
raise ValidationError(_('Illegal character in name ({x})'.format(x=c)))
|
||||
"""Placeholder for legacy function used in migrations."""
|
||||
|
||||
|
||||
def validate_overage(value):
|
||||
|
18
InvenTree/part/migrations/0081_alter_partcategory_name.py
Normal file
18
InvenTree/part/migrations/0081_alter_partcategory_name.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-20 16:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('part', '0080_alter_part_image'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='partcategory',
|
||||
name='name',
|
||||
field=models.CharField(help_text='Name', max_length=100, verbose_name='Name'),
|
||||
),
|
||||
]
|
@ -1,6 +1,5 @@
|
||||
"""Unit tests for the PartCategory model"""
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.test import TestCase
|
||||
|
||||
from .models import Part, PartCategory, PartParameter, PartParameterTemplate
|
||||
@ -109,19 +108,6 @@ class CategoryTest(TestCase):
|
||||
part_parameter.pop(item)
|
||||
self.assertEqual(len(part_parameter), 1)
|
||||
|
||||
def test_invalid_name(self):
|
||||
"""Test that an illegal character is prohibited in a category name"""
|
||||
cat = PartCategory(name='test/with/illegal/chars', description='Test category', parent=None)
|
||||
|
||||
with self.assertRaises(ValidationError) as err:
|
||||
cat.full_clean()
|
||||
cat.save() # pragma: no cover
|
||||
|
||||
self.assertIn('Illegal character in name', str(err.exception.error_dict.get('name')))
|
||||
|
||||
cat.name = 'good name'
|
||||
cat.save()
|
||||
|
||||
def test_delete(self):
|
||||
"""Test that category deletion moves the children properly."""
|
||||
# Delete the 'IC' category and 'Transceiver' should move to be under 'Electronics'
|
||||
|
18
InvenTree/stock/migrations/0079_alter_stocklocation_name.py
Normal file
18
InvenTree/stock/migrations/0079_alter_stocklocation_name.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-20 16:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stock', '0078_alter_stockitem_supplier_part'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='stocklocation',
|
||||
name='name',
|
||||
field=models.CharField(help_text='Name', max_length=100, verbose_name='Name'),
|
||||
),
|
||||
]
|
13
tasks.py
13
tasks.py
@ -511,6 +511,19 @@ def test(c, database=None):
|
||||
manage(c, 'test', pty=True)
|
||||
|
||||
|
||||
@task(pre=[update])
|
||||
def setup_test(c):
|
||||
"""Setup a testing enviroment."""
|
||||
# Remove old data directory
|
||||
c.run('rm inventree-data -r')
|
||||
|
||||
# Get test data
|
||||
c.run('git clone https://github.com/inventree/demo-dataset inventree-data')
|
||||
|
||||
# Load data
|
||||
import_records(c, filename='inventree-data/inventree_data.json', clear=True)
|
||||
|
||||
|
||||
@task
|
||||
def coverage(c):
|
||||
"""Run code-coverage of the InvenTree codebase, using the 'coverage' code-analysis tools.
|
||||
|
Loading…
Reference in New Issue
Block a user