Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions netbox_acls/migrations/0005_alter_accesslist_name.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Generated by Django 5.2.5 on 2025-08-20 11:14

import re

import django.core.validators
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("netbox_acls", "0004_netbox_acls"),
]

operations = [
migrations.AlterField(
model_name="accesslist",
name="name",
field=models.CharField(
max_length=500,
validators=[
django.core.validators.RegexValidator(
re.compile("^[-a-zA-Z0-9_]+\\Z"),
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
"invalid",
)
],
),
),
]
10 changes: 2 additions & 8 deletions netbox_acls/models/access_lists.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.core.validators import validate_slug
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
Expand All @@ -22,12 +22,6 @@
)


alphanumeric_plus = RegexValidator(
r"^[a-zA-Z0-9-_]+$",
_("Only alphanumeric, hyphens, and underscores characters are allowed."),
)


class AccessList(NetBoxModel):
"""
Model definition for Access Lists.
Expand All @@ -36,7 +30,7 @@ class AccessList(NetBoxModel):
name = models.CharField(
verbose_name=_("Name"),
max_length=500,
validators=[alphanumeric_plus],
validators=[validate_slug],
)
assigned_object_type = models.ForeignKey(
to=ContentType,
Expand Down
16 changes: 0 additions & 16 deletions netbox_acls/tests/models/test_accesslists.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,22 +153,6 @@ def test_duplicate_name_success(self):
)
vm_acl.full_clean()

def test_alphanumeric_plus_fail(self):
"""
Test that AccessList names with non-alphanumeric (excluding '_' and '-') characters fail validation.
"""
non_alphanumeric_plus_chars = " !@#$%^&*()[]{};:,./<>?\|~=+"

for i, char in enumerate(non_alphanumeric_plus_chars, start=1):
bad_acl_name = AccessList(
name=f"Test-ACL-bad_name_{i}_{char}",
assigned_object=self.device1,
comments=f'ACL with "{char}" in name',
**self.common_acl_params,
)
with self.assertRaises(ValidationError):
bad_acl_name.full_clean()

def test_duplicate_name_per_device_fail(self):
"""
Test that AccessList names must be unique per device.
Expand Down