Skip to content

Commit a2e6bee

Browse files
committed
feat: Adding Database Constraint for ACLExtended Rule, so that at max only one Source Field can be specified
1 parent 6400e68 commit a2e6bee

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

netbox_acls/models/access_list_rules.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,3 +297,28 @@ class Meta(ACLRule.Meta):
297297

298298
verbose_name = "ACL Extended Rule"
299299
verbose_name_plural = "ACL Extended Rules"
300+
301+
constraints = [
302+
models.CheckConstraint(
303+
check=(
304+
(
305+
Q(source_prefix__isnull=True) & Q(source_iprange__isnull=True) & Q(source_ipaddress__isnull=True) & Q(source_aggregate__isnull=True) & Q(source_service__isnull=True)
306+
) |
307+
(
308+
Q(source_prefix__isnull=False) & Q(source_iprange__isnull=True) & Q(source_ipaddress__isnull=True) & Q(source_aggregate__isnull=True) & Q(source_service__isnull=True)
309+
) |
310+
(
311+
Q(source_prefix__isnull=True) & Q(source_iprange__isnull=False) & Q(source_ipaddress__isnull=True) & Q(source_aggregate__isnull=True) & Q(source_service__isnull=True)
312+
) |
313+
(
314+
Q(source_prefix__isnull=True) & Q(source_iprange__isnull=True) & Q(source_ipaddress__isnull=False) & Q(source_aggregate__isnull=True) & Q(source_service__isnull=True)
315+
) |
316+
(
317+
Q(source_prefix__isnull=True) & Q(source_iprange__isnull=True) & Q(source_ipaddress__isnull=True) & Q(source_aggregate__isnull=False) & Q(source_service__isnull=True)
318+
) |
319+
(
320+
Q(source_prefix__isnull=True) & Q(source_iprange__isnull=True) & Q(source_ipaddress__isnull=True) & Q(source_aggregate__isnull=True) & Q(source_service__isnull=False)
321+
)
322+
),
323+
name='not_more_than_one_source_for_extended_rule'
324+
),

0 commit comments

Comments
 (0)