1# SPDX-License-Identifier: Apache-2.0
2# Copyright (C) 2025 Marcin Zieba <marcinpsk@gmail.com>
3from django.urls import path
4
5from . import views
6from .models import InterfaceNameRule
7
8app_name = "netbox_interface_name_rules"
9
10urlpatterns = [
11 # List / CRUD
12 path("rules/", views.InterfaceNameRuleListView.as_view(), name="interfacenamerule_list"),
13 path("rules/add/", views.InterfaceNameRuleCreateView.as_view(), name="interfacenamerule_add"),
14 path("rules/import/", views.InterfaceNameRuleBulkImportView.as_view(), name="interfacenamerule_bulk_import"),
15 path("rules/edit/", views.InterfaceNameRuleBulkEditView.as_view(), name="interfacenamerule_bulk_edit"),
16 path("rules/bulk_delete/", views.InterfaceNameRuleBulkDeleteView.as_view(), name="interfacenamerule_bulk_delete"),
17 # Rule tester (Build Rule)
18 path("rules/test/", views.RuleTestView.as_view(), name="interfacenamerule_test"),
19 # Apply rules to existing interfaces
20 path("rules/apply/", views.RuleApplyListView.as_view(), name="interfacenamerule_apply"),
21 # Per-rule parameterised routes
22 path("rules/<int:pk>/", views.InterfaceNameRuleView.as_view(), name="interfacenamerule_detail"),
23 path(
24 "rules/<int:pk>/duplicate/", views.InterfaceNameRuleDuplicateView.as_view(), name="interfacenamerule_duplicate"
25 ),
26 path("rules/<int:pk>/edit/", views.InterfaceNameRuleEditView.as_view(), name="interfacenamerule_edit"),
27 path("rules/<int:pk>/delete/", views.InterfaceNameRuleDeleteView.as_view(), name="interfacenamerule_delete"),
28 path(
29 "rules/<int:pk>/changelog/",
30 views.InterfaceNameRuleChangeLogView.as_view(),
31 name="interfacenamerule_changelog",
32 # ObjectChangeLogView.get() takes the model as a URL kwarg; without it the tab 500s.
33 kwargs={"model": InterfaceNameRule},
34 ),
35 path("rules/<int:pk>/apply/", views.RuleApplyDetailView.as_view(), name="interfacenamerule_apply_detail"),
36 path("rules/<int:pk>/applicable/", views.RuleApplicableView.as_view(), name="interfacenamerule_applicable"),
37 path("rules/<int:pk>/toggle/", views.RuleToggleView.as_view(), name="interfacenamerule_toggle"),
38]