urls.py 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. from django.urls import path
  2. from extras.views import ObjectChangeLogView, ObjectJournalView
  3. from . import views
  4. from .models import *
  5. app_name = 'dcim'
  6. urlpatterns = [
  7. # Regions
  8. path('regions/', views.RegionListView.as_view(), name='region_list'),
  9. path('regions/add/', views.RegionEditView.as_view(), name='region_add'),
  10. path('regions/import/', views.RegionBulkImportView.as_view(), name='region_import'),
  11. path('regions/edit/', views.RegionBulkEditView.as_view(), name='region_bulk_edit'),
  12. path('regions/delete/', views.RegionBulkDeleteView.as_view(), name='region_bulk_delete'),
  13. path('regions/<int:pk>/', views.RegionView.as_view(), name='region'),
  14. path('regions/<int:pk>/edit/', views.RegionEditView.as_view(), name='region_edit'),
  15. path('regions/<int:pk>/delete/', views.RegionDeleteView.as_view(), name='region_delete'),
  16. path('regions/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='region_changelog', kwargs={'model': Region}),
  17. # Site groups
  18. path('site-groups/', views.SiteGroupListView.as_view(), name='sitegroup_list'),
  19. path('site-groups/add/', views.SiteGroupEditView.as_view(), name='sitegroup_add'),
  20. path('site-groups/import/', views.SiteGroupBulkImportView.as_view(), name='sitegroup_import'),
  21. path('site-groups/edit/', views.SiteGroupBulkEditView.as_view(), name='sitegroup_bulk_edit'),
  22. path('site-groups/delete/', views.SiteGroupBulkDeleteView.as_view(), name='sitegroup_bulk_delete'),
  23. path('site-groups/<int:pk>/', views.SiteGroupView.as_view(), name='sitegroup'),
  24. path('site-groups/<int:pk>/edit/', views.SiteGroupEditView.as_view(), name='sitegroup_edit'),
  25. path('site-groups/<int:pk>/delete/', views.SiteGroupDeleteView.as_view(), name='sitegroup_delete'),
  26. path('site-groups/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='sitegroup_changelog', kwargs={'model': SiteGroup}),
  27. # Sites
  28. path('sites/', views.SiteListView.as_view(), name='site_list'),
  29. path('sites/add/', views.SiteEditView.as_view(), name='site_add'),
  30. path('sites/import/', views.SiteBulkImportView.as_view(), name='site_import'),
  31. path('sites/edit/', views.SiteBulkEditView.as_view(), name='site_bulk_edit'),
  32. path('sites/delete/', views.SiteBulkDeleteView.as_view(), name='site_bulk_delete'),
  33. path('sites/<int:pk>/', views.SiteView.as_view(), name='site'),
  34. path('sites/<int:pk>/edit/', views.SiteEditView.as_view(), name='site_edit'),
  35. path('sites/<int:pk>/delete/', views.SiteDeleteView.as_view(), name='site_delete'),
  36. path('sites/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='site_changelog', kwargs={'model': Site}),
  37. path('sites/<int:pk>/journal/', ObjectJournalView.as_view(), name='site_journal', kwargs={'model': Site}),
  38. # Locations
  39. path('locations/', views.LocationListView.as_view(), name='location_list'),
  40. path('locations/add/', views.LocationEditView.as_view(), name='location_add'),
  41. path('locations/import/', views.LocationBulkImportView.as_view(), name='location_import'),
  42. path('locations/edit/', views.LocationBulkEditView.as_view(), name='location_bulk_edit'),
  43. path('locations/delete/', views.LocationBulkDeleteView.as_view(), name='location_bulk_delete'),
  44. path('locations/<int:pk>/', views.LocationView.as_view(), name='location'),
  45. path('locations/<int:pk>/edit/', views.LocationEditView.as_view(), name='location_edit'),
  46. path('locations/<int:pk>/delete/', views.LocationDeleteView.as_view(), name='location_delete'),
  47. path('locations/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='location_changelog', kwargs={'model': Location}),
  48. # Rack roles
  49. path('rack-roles/', views.RackRoleListView.as_view(), name='rackrole_list'),
  50. path('rack-roles/add/', views.RackRoleEditView.as_view(), name='rackrole_add'),
  51. path('rack-roles/import/', views.RackRoleBulkImportView.as_view(), name='rackrole_import'),
  52. path('rack-roles/edit/', views.RackRoleBulkEditView.as_view(), name='rackrole_bulk_edit'),
  53. path('rack-roles/delete/', views.RackRoleBulkDeleteView.as_view(), name='rackrole_bulk_delete'),
  54. path('rack-roles/<int:pk>/', views.RackRoleView.as_view(), name='rackrole'),
  55. path('rack-roles/<int:pk>/edit/', views.RackRoleEditView.as_view(), name='rackrole_edit'),
  56. path('rack-roles/<int:pk>/delete/', views.RackRoleDeleteView.as_view(), name='rackrole_delete'),
  57. path('rack-roles/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rackrole_changelog', kwargs={'model': RackRole}),
  58. # Rack reservations
  59. path('rack-reservations/', views.RackReservationListView.as_view(), name='rackreservation_list'),
  60. path('rack-reservations/add/', views.RackReservationEditView.as_view(), name='rackreservation_add'),
  61. path('rack-reservations/import/', views.RackReservationImportView.as_view(), name='rackreservation_import'),
  62. path('rack-reservations/edit/', views.RackReservationBulkEditView.as_view(), name='rackreservation_bulk_edit'),
  63. path('rack-reservations/delete/', views.RackReservationBulkDeleteView.as_view(), name='rackreservation_bulk_delete'),
  64. path('rack-reservations/<int:pk>/', views.RackReservationView.as_view(), name='rackreservation'),
  65. path('rack-reservations/<int:pk>/edit/', views.RackReservationEditView.as_view(), name='rackreservation_edit'),
  66. path('rack-reservations/<int:pk>/delete/', views.RackReservationDeleteView.as_view(), name='rackreservation_delete'),
  67. path('rack-reservations/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rackreservation_changelog', kwargs={'model': RackReservation}),
  68. path('rack-reservations/<int:pk>/journal/', ObjectJournalView.as_view(), name='rackreservation_journal', kwargs={'model': RackReservation}),
  69. # Racks
  70. path('racks/', views.RackListView.as_view(), name='rack_list'),
  71. path('rack-elevations/', views.RackElevationListView.as_view(), name='rack_elevation_list'),
  72. path('racks/add/', views.RackEditView.as_view(), name='rack_add'),
  73. path('racks/import/', views.RackBulkImportView.as_view(), name='rack_import'),
  74. path('racks/edit/', views.RackBulkEditView.as_view(), name='rack_bulk_edit'),
  75. path('racks/delete/', views.RackBulkDeleteView.as_view(), name='rack_bulk_delete'),
  76. path('racks/<int:pk>/', views.RackView.as_view(), name='rack'),
  77. path('racks/<int:pk>/edit/', views.RackEditView.as_view(), name='rack_edit'),
  78. path('racks/<int:pk>/delete/', views.RackDeleteView.as_view(), name='rack_delete'),
  79. path('racks/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rack_changelog', kwargs={'model': Rack}),
  80. path('racks/<int:pk>/journal/', ObjectJournalView.as_view(), name='rack_journal', kwargs={'model': Rack}),
  81. # Manufacturers
  82. path('manufacturers/', views.ManufacturerListView.as_view(), name='manufacturer_list'),
  83. path('manufacturers/add/', views.ManufacturerEditView.as_view(), name='manufacturer_add'),
  84. path('manufacturers/import/', views.ManufacturerBulkImportView.as_view(), name='manufacturer_import'),
  85. path('manufacturers/edit/', views.ManufacturerBulkEditView.as_view(), name='manufacturer_bulk_edit'),
  86. path('manufacturers/delete/', views.ManufacturerBulkDeleteView.as_view(), name='manufacturer_bulk_delete'),
  87. path('manufacturers/<int:pk>/', views.ManufacturerView.as_view(), name='manufacturer'),
  88. path('manufacturers/<int:pk>/edit/', views.ManufacturerEditView.as_view(), name='manufacturer_edit'),
  89. path('manufacturers/<int:pk>/delete/', views.ManufacturerDeleteView.as_view(), name='manufacturer_delete'),
  90. path('manufacturers/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='manufacturer_changelog', kwargs={'model': Manufacturer}),
  91. # Device types
  92. path('device-types/', views.DeviceTypeListView.as_view(), name='devicetype_list'),
  93. path('device-types/add/', views.DeviceTypeEditView.as_view(), name='devicetype_add'),
  94. path('device-types/import/', views.DeviceTypeImportView.as_view(), name='devicetype_import'),
  95. path('device-types/edit/', views.DeviceTypeBulkEditView.as_view(), name='devicetype_bulk_edit'),
  96. path('device-types/delete/', views.DeviceTypeBulkDeleteView.as_view(), name='devicetype_bulk_delete'),
  97. path('device-types/<int:pk>/', views.DeviceTypeView.as_view(), name='devicetype'),
  98. path('device-types/<int:pk>/console-ports/', views.DeviceTypeConsolePortsView.as_view(), name='devicetype_consoleports'),
  99. path('device-types/<int:pk>/console-server-ports/', views.DeviceTypeConsoleServerPortsView.as_view(), name='devicetype_consoleserverports'),
  100. path('device-types/<int:pk>/power-ports/', views.DeviceTypePowerPortsView.as_view(), name='devicetype_powerports'),
  101. path('device-types/<int:pk>/power-outlets/', views.DeviceTypePowerOutletsView.as_view(), name='devicetype_poweroutlets'),
  102. path('device-types/<int:pk>/interfaces/', views.DeviceTypeInterfacesView.as_view(), name='devicetype_interfaces'),
  103. path('device-types/<int:pk>/front-ports/', views.DeviceTypeFrontPortsView.as_view(), name='devicetype_frontports'),
  104. path('device-types/<int:pk>/rear-ports/', views.DeviceTypeRearPortsView.as_view(), name='devicetype_rearports'),
  105. path('device-types/<int:pk>/module-bays/', views.DeviceTypeModuleBaysView.as_view(), name='devicetype_modulebays'),
  106. path('device-types/<int:pk>/device-bays/', views.DeviceTypeDeviceBaysView.as_view(), name='devicetype_devicebays'),
  107. path('device-types/<int:pk>/edit/', views.DeviceTypeEditView.as_view(), name='devicetype_edit'),
  108. path('device-types/<int:pk>/delete/', views.DeviceTypeDeleteView.as_view(), name='devicetype_delete'),
  109. path('device-types/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicetype_changelog', kwargs={'model': DeviceType}),
  110. path('device-types/<int:pk>/journal/', ObjectJournalView.as_view(), name='devicetype_journal', kwargs={'model': DeviceType}),
  111. # Console port templates
  112. path('console-port-templates/add/', views.ConsolePortTemplateCreateView.as_view(), name='consoleporttemplate_add'),
  113. path('console-port-templates/edit/', views.ConsolePortTemplateBulkEditView.as_view(), name='consoleporttemplate_bulk_edit'),
  114. path('console-port-templates/rename/', views.ConsolePortTemplateBulkRenameView.as_view(), name='consoleporttemplate_bulk_rename'),
  115. path('console-port-templates/delete/', views.ConsolePortTemplateBulkDeleteView.as_view(), name='consoleporttemplate_bulk_delete'),
  116. path('console-port-templates/<int:pk>/edit/', views.ConsolePortTemplateEditView.as_view(), name='consoleporttemplate_edit'),
  117. path('console-port-templates/<int:pk>/delete/', views.ConsolePortTemplateDeleteView.as_view(), name='consoleporttemplate_delete'),
  118. # Console server port templates
  119. path('console-server-port-templates/add/', views.ConsoleServerPortTemplateCreateView.as_view(), name='consoleserverporttemplate_add'),
  120. path('console-server-port-templates/edit/', views.ConsoleServerPortTemplateBulkEditView.as_view(), name='consoleserverporttemplate_bulk_edit'),
  121. path('console-server-port-templates/rename/', views.ConsoleServerPortTemplateBulkRenameView.as_view(), name='consoleserverporttemplate_bulk_rename'),
  122. path('console-server-port-templates/delete/', views.ConsoleServerPortTemplateBulkDeleteView.as_view(), name='consoleserverporttemplate_bulk_delete'),
  123. path('console-server-port-templates/<int:pk>/edit/', views.ConsoleServerPortTemplateEditView.as_view(), name='consoleserverporttemplate_edit'),
  124. path('console-server-port-templates/<int:pk>/delete/', views.ConsoleServerPortTemplateDeleteView.as_view(), name='consoleserverporttemplate_delete'),
  125. # Power port templates
  126. path('power-port-templates/add/', views.PowerPortTemplateCreateView.as_view(), name='powerporttemplate_add'),
  127. path('power-port-templates/edit/', views.PowerPortTemplateBulkEditView.as_view(), name='powerporttemplate_bulk_edit'),
  128. path('power-port-templates/rename/', views.PowerPortTemplateBulkRenameView.as_view(), name='powerporttemplate_bulk_rename'),
  129. path('power-port-templates/delete/', views.PowerPortTemplateBulkDeleteView.as_view(), name='powerporttemplate_bulk_delete'),
  130. path('power-port-templates/<int:pk>/edit/', views.PowerPortTemplateEditView.as_view(), name='powerporttemplate_edit'),
  131. path('power-port-templates/<int:pk>/delete/', views.PowerPortTemplateDeleteView.as_view(), name='powerporttemplate_delete'),
  132. # Power outlet templates
  133. path('power-outlet-templates/add/', views.PowerOutletTemplateCreateView.as_view(), name='poweroutlettemplate_add'),
  134. path('power-outlet-templates/edit/', views.PowerOutletTemplateBulkEditView.as_view(), name='poweroutlettemplate_bulk_edit'),
  135. path('power-outlet-templates/rename/', views.PowerOutletTemplateBulkRenameView.as_view(), name='poweroutlettemplate_bulk_rename'),
  136. path('power-outlet-templates/delete/', views.PowerOutletTemplateBulkDeleteView.as_view(), name='poweroutlettemplate_bulk_delete'),
  137. path('power-outlet-templates/<int:pk>/edit/', views.PowerOutletTemplateEditView.as_view(), name='poweroutlettemplate_edit'),
  138. path('power-outlet-templates/<int:pk>/delete/', views.PowerOutletTemplateDeleteView.as_view(), name='poweroutlettemplate_delete'),
  139. # Interface templates
  140. path('interface-templates/add/', views.InterfaceTemplateCreateView.as_view(), name='interfacetemplate_add'),
  141. path('interface-templates/edit/', views.InterfaceTemplateBulkEditView.as_view(), name='interfacetemplate_bulk_edit'),
  142. path('interface-templates/rename/', views.InterfaceTemplateBulkRenameView.as_view(), name='interfacetemplate_bulk_rename'),
  143. path('interface-templates/delete/', views.InterfaceTemplateBulkDeleteView.as_view(), name='interfacetemplate_bulk_delete'),
  144. path('interface-templates/<int:pk>/edit/', views.InterfaceTemplateEditView.as_view(), name='interfacetemplate_edit'),
  145. path('interface-templates/<int:pk>/delete/', views.InterfaceTemplateDeleteView.as_view(), name='interfacetemplate_delete'),
  146. # Front port templates
  147. path('front-port-templates/add/', views.FrontPortTemplateCreateView.as_view(), name='frontporttemplate_add'),
  148. path('front-port-templates/edit/', views.FrontPortTemplateBulkEditView.as_view(), name='frontporttemplate_bulk_edit'),
  149. path('front-port-templates/rename/', views.FrontPortTemplateBulkRenameView.as_view(), name='frontporttemplate_bulk_rename'),
  150. path('front-port-templates/delete/', views.FrontPortTemplateBulkDeleteView.as_view(), name='frontporttemplate_bulk_delete'),
  151. path('front-port-templates/<int:pk>/edit/', views.FrontPortTemplateEditView.as_view(), name='frontporttemplate_edit'),
  152. path('front-port-templates/<int:pk>/delete/', views.FrontPortTemplateDeleteView.as_view(), name='frontporttemplate_delete'),
  153. # Rear port templates
  154. path('rear-port-templates/add/', views.RearPortTemplateCreateView.as_view(), name='rearporttemplate_add'),
  155. path('rear-port-templates/edit/', views.RearPortTemplateBulkEditView.as_view(), name='rearporttemplate_bulk_edit'),
  156. path('rear-port-templates/rename/', views.RearPortTemplateBulkRenameView.as_view(), name='rearporttemplate_bulk_rename'),
  157. path('rear-port-templates/delete/', views.RearPortTemplateBulkDeleteView.as_view(), name='rearporttemplate_bulk_delete'),
  158. path('rear-port-templates/<int:pk>/edit/', views.RearPortTemplateEditView.as_view(), name='rearporttemplate_edit'),
  159. path('rear-port-templates/<int:pk>/delete/', views.RearPortTemplateDeleteView.as_view(), name='rearporttemplate_delete'),
  160. # Device bay templates
  161. path('device-bay-templates/add/', views.DeviceBayTemplateCreateView.as_view(), name='devicebaytemplate_add'),
  162. path('device-bay-templates/edit/', views.DeviceBayTemplateBulkEditView.as_view(), name='devicebaytemplate_bulk_edit'),
  163. path('device-bay-templates/rename/', views.DeviceBayTemplateBulkRenameView.as_view(), name='devicebaytemplate_bulk_rename'),
  164. path('device-bay-templates/delete/', views.DeviceBayTemplateBulkDeleteView.as_view(), name='devicebaytemplate_bulk_delete'),
  165. path('device-bay-templates/<int:pk>/edit/', views.DeviceBayTemplateEditView.as_view(), name='devicebaytemplate_edit'),
  166. path('device-bay-templates/<int:pk>/delete/', views.DeviceBayTemplateDeleteView.as_view(), name='devicebaytemplate_delete'),
  167. # Device bay templates
  168. path('module-bay-templates/add/', views.ModuleBayTemplateCreateView.as_view(), name='modulebaytemplate_add'),
  169. path('module-bay-templates/edit/', views.ModuleBayTemplateBulkEditView.as_view(), name='modulebaytemplate_bulk_edit'),
  170. path('module-bay-templates/rename/', views.ModuleBayTemplateBulkRenameView.as_view(), name='modulebaytemplate_bulk_rename'),
  171. path('module-bay-templates/delete/', views.ModuleBayTemplateBulkDeleteView.as_view(), name='modulebaytemplate_bulk_delete'),
  172. path('module-bay-templates/<int:pk>/edit/', views.ModuleBayTemplateEditView.as_view(), name='modulebaytemplate_edit'),
  173. path('module-bay-templates/<int:pk>/delete/', views.ModuleBayTemplateDeleteView.as_view(), name='modulebaytemplate_delete'),
  174. # Device roles
  175. path('device-roles/', views.DeviceRoleListView.as_view(), name='devicerole_list'),
  176. path('device-roles/add/', views.DeviceRoleEditView.as_view(), name='devicerole_add'),
  177. path('device-roles/import/', views.DeviceRoleBulkImportView.as_view(), name='devicerole_import'),
  178. path('device-roles/edit/', views.DeviceRoleBulkEditView.as_view(), name='devicerole_bulk_edit'),
  179. path('device-roles/delete/', views.DeviceRoleBulkDeleteView.as_view(), name='devicerole_bulk_delete'),
  180. path('device-roles/<int:pk>/', views.DeviceRoleView.as_view(), name='devicerole'),
  181. path('device-roles/<int:pk>/edit/', views.DeviceRoleEditView.as_view(), name='devicerole_edit'),
  182. path('device-roles/<int:pk>/delete/', views.DeviceRoleDeleteView.as_view(), name='devicerole_delete'),
  183. path('device-roles/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicerole_changelog', kwargs={'model': DeviceRole}),
  184. # Platforms
  185. path('platforms/', views.PlatformListView.as_view(), name='platform_list'),
  186. path('platforms/add/', views.PlatformEditView.as_view(), name='platform_add'),
  187. path('platforms/import/', views.PlatformBulkImportView.as_view(), name='platform_import'),
  188. path('platforms/edit/', views.PlatformBulkEditView.as_view(), name='platform_bulk_edit'),
  189. path('platforms/delete/', views.PlatformBulkDeleteView.as_view(), name='platform_bulk_delete'),
  190. path('platforms/<int:pk>/', views.PlatformView.as_view(), name='platform'),
  191. path('platforms/<int:pk>/edit/', views.PlatformEditView.as_view(), name='platform_edit'),
  192. path('platforms/<int:pk>/delete/', views.PlatformDeleteView.as_view(), name='platform_delete'),
  193. path('platforms/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='platform_changelog', kwargs={'model': Platform}),
  194. # Devices
  195. path('devices/', views.DeviceListView.as_view(), name='device_list'),
  196. path('devices/add/', views.DeviceEditView.as_view(), name='device_add'),
  197. path('devices/import/', views.DeviceBulkImportView.as_view(), name='device_import'),
  198. path('devices/import/child-devices/', views.ChildDeviceBulkImportView.as_view(), name='device_import_child'),
  199. path('devices/edit/', views.DeviceBulkEditView.as_view(), name='device_bulk_edit'),
  200. path('devices/delete/', views.DeviceBulkDeleteView.as_view(), name='device_bulk_delete'),
  201. path('devices/<int:pk>/', views.DeviceView.as_view(), name='device'),
  202. path('devices/<int:pk>/edit/', views.DeviceEditView.as_view(), name='device_edit'),
  203. path('devices/<int:pk>/delete/', views.DeviceDeleteView.as_view(), name='device_delete'),
  204. path('devices/<int:pk>/console-ports/', views.DeviceConsolePortsView.as_view(), name='device_consoleports'),
  205. path('devices/<int:pk>/console-server-ports/', views.DeviceConsoleServerPortsView.as_view(), name='device_consoleserverports'),
  206. path('devices/<int:pk>/power-ports/', views.DevicePowerPortsView.as_view(), name='device_powerports'),
  207. path('devices/<int:pk>/power-outlets/', views.DevicePowerOutletsView.as_view(), name='device_poweroutlets'),
  208. path('devices/<int:pk>/interfaces/', views.DeviceInterfacesView.as_view(), name='device_interfaces'),
  209. path('devices/<int:pk>/front-ports/', views.DeviceFrontPortsView.as_view(), name='device_frontports'),
  210. path('devices/<int:pk>/rear-ports/', views.DeviceRearPortsView.as_view(), name='device_rearports'),
  211. path('devices/<int:pk>/module-bays/', views.DeviceModuleBaysView.as_view(), name='device_modulebays'),
  212. path('devices/<int:pk>/device-bays/', views.DeviceDeviceBaysView.as_view(), name='device_devicebays'),
  213. path('devices/<int:pk>/inventory/', views.DeviceInventoryView.as_view(), name='device_inventory'),
  214. path('devices/<int:pk>/config-context/', views.DeviceConfigContextView.as_view(), name='device_configcontext'),
  215. path('devices/<int:pk>/changelog/', views.DeviceChangeLogView.as_view(), name='device_changelog', kwargs={'model': Device}),
  216. path('devices/<int:pk>/journal/', views.DeviceJournalView.as_view(), name='device_journal', kwargs={'model': Device}),
  217. path('devices/<int:pk>/status/', views.DeviceStatusView.as_view(), name='device_status'),
  218. path('devices/<int:pk>/lldp-neighbors/', views.DeviceLLDPNeighborsView.as_view(), name='device_lldp_neighbors'),
  219. path('devices/<int:pk>/config/', views.DeviceConfigView.as_view(), name='device_config'),
  220. # Console ports
  221. path('console-ports/', views.ConsolePortListView.as_view(), name='consoleport_list'),
  222. path('console-ports/add/', views.ConsolePortCreateView.as_view(), name='consoleport_add'),
  223. path('console-ports/import/', views.ConsolePortBulkImportView.as_view(), name='consoleport_import'),
  224. path('console-ports/edit/', views.ConsolePortBulkEditView.as_view(), name='consoleport_bulk_edit'),
  225. path('console-ports/rename/', views.ConsolePortBulkRenameView.as_view(), name='consoleport_bulk_rename'),
  226. path('console-ports/disconnect/', views.ConsolePortBulkDisconnectView.as_view(), name='consoleport_bulk_disconnect'),
  227. path('console-ports/delete/', views.ConsolePortBulkDeleteView.as_view(), name='consoleport_bulk_delete'),
  228. path('console-ports/<int:pk>/', views.ConsolePortView.as_view(), name='consoleport'),
  229. path('console-ports/<int:pk>/edit/', views.ConsolePortEditView.as_view(), name='consoleport_edit'),
  230. path('console-ports/<int:pk>/delete/', views.ConsolePortDeleteView.as_view(), name='consoleport_delete'),
  231. path('console-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='consoleport_changelog', kwargs={'model': ConsolePort}),
  232. path('console-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='consoleport_trace', kwargs={'model': ConsolePort}),
  233. path('console-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='consoleport_connect', kwargs={'termination_a_type': ConsolePort}),
  234. path('devices/console-ports/add/', views.DeviceBulkAddConsolePortView.as_view(), name='device_bulk_add_consoleport'),
  235. # Console server ports
  236. path('console-server-ports/', views.ConsoleServerPortListView.as_view(), name='consoleserverport_list'),
  237. path('console-server-ports/add/', views.ConsoleServerPortCreateView.as_view(), name='consoleserverport_add'),
  238. path('console-server-ports/import/', views.ConsoleServerPortBulkImportView.as_view(), name='consoleserverport_import'),
  239. path('console-server-ports/edit/', views.ConsoleServerPortBulkEditView.as_view(), name='consoleserverport_bulk_edit'),
  240. path('console-server-ports/rename/', views.ConsoleServerPortBulkRenameView.as_view(), name='consoleserverport_bulk_rename'),
  241. path('console-server-ports/disconnect/', views.ConsoleServerPortBulkDisconnectView.as_view(), name='consoleserverport_bulk_disconnect'),
  242. path('console-server-ports/delete/', views.ConsoleServerPortBulkDeleteView.as_view(), name='consoleserverport_bulk_delete'),
  243. path('console-server-ports/<int:pk>/', views.ConsoleServerPortView.as_view(), name='consoleserverport'),
  244. path('console-server-ports/<int:pk>/edit/', views.ConsoleServerPortEditView.as_view(), name='consoleserverport_edit'),
  245. path('console-server-ports/<int:pk>/delete/', views.ConsoleServerPortDeleteView.as_view(), name='consoleserverport_delete'),
  246. path('console-server-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='consoleserverport_changelog', kwargs={'model': ConsoleServerPort}),
  247. path('console-server-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='consoleserverport_trace', kwargs={'model': ConsoleServerPort}),
  248. path('console-server-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='consoleserverport_connect', kwargs={'termination_a_type': ConsoleServerPort}),
  249. path('devices/console-server-ports/add/', views.DeviceBulkAddConsoleServerPortView.as_view(), name='device_bulk_add_consoleserverport'),
  250. # Power ports
  251. path('power-ports/', views.PowerPortListView.as_view(), name='powerport_list'),
  252. path('power-ports/add/', views.PowerPortCreateView.as_view(), name='powerport_add'),
  253. path('power-ports/import/', views.PowerPortBulkImportView.as_view(), name='powerport_import'),
  254. path('power-ports/edit/', views.PowerPortBulkEditView.as_view(), name='powerport_bulk_edit'),
  255. path('power-ports/rename/', views.PowerPortBulkRenameView.as_view(), name='powerport_bulk_rename'),
  256. path('power-ports/disconnect/', views.PowerPortBulkDisconnectView.as_view(), name='powerport_bulk_disconnect'),
  257. path('power-ports/delete/', views.PowerPortBulkDeleteView.as_view(), name='powerport_bulk_delete'),
  258. path('power-ports/<int:pk>/', views.PowerPortView.as_view(), name='powerport'),
  259. path('power-ports/<int:pk>/edit/', views.PowerPortEditView.as_view(), name='powerport_edit'),
  260. path('power-ports/<int:pk>/delete/', views.PowerPortDeleteView.as_view(), name='powerport_delete'),
  261. path('power-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerport_changelog', kwargs={'model': PowerPort}),
  262. path('power-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='powerport_trace', kwargs={'model': PowerPort}),
  263. path('power-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='powerport_connect', kwargs={'termination_a_type': PowerPort}),
  264. path('devices/power-ports/add/', views.DeviceBulkAddPowerPortView.as_view(), name='device_bulk_add_powerport'),
  265. # Power outlets
  266. path('power-outlets/', views.PowerOutletListView.as_view(), name='poweroutlet_list'),
  267. path('power-outlets/add/', views.PowerOutletCreateView.as_view(), name='poweroutlet_add'),
  268. path('power-outlets/import/', views.PowerOutletBulkImportView.as_view(), name='poweroutlet_import'),
  269. path('power-outlets/edit/', views.PowerOutletBulkEditView.as_view(), name='poweroutlet_bulk_edit'),
  270. path('power-outlets/rename/', views.PowerOutletBulkRenameView.as_view(), name='poweroutlet_bulk_rename'),
  271. path('power-outlets/disconnect/', views.PowerOutletBulkDisconnectView.as_view(), name='poweroutlet_bulk_disconnect'),
  272. path('power-outlets/delete/', views.PowerOutletBulkDeleteView.as_view(), name='poweroutlet_bulk_delete'),
  273. path('power-outlets/<int:pk>/', views.PowerOutletView.as_view(), name='poweroutlet'),
  274. path('power-outlets/<int:pk>/edit/', views.PowerOutletEditView.as_view(), name='poweroutlet_edit'),
  275. path('power-outlets/<int:pk>/delete/', views.PowerOutletDeleteView.as_view(), name='poweroutlet_delete'),
  276. path('power-outlets/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='poweroutlet_changelog', kwargs={'model': PowerOutlet}),
  277. path('power-outlets/<int:pk>/trace/', views.PathTraceView.as_view(), name='poweroutlet_trace', kwargs={'model': PowerOutlet}),
  278. path('power-outlets/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='poweroutlet_connect', kwargs={'termination_a_type': PowerOutlet}),
  279. path('devices/power-outlets/add/', views.DeviceBulkAddPowerOutletView.as_view(), name='device_bulk_add_poweroutlet'),
  280. # Interfaces
  281. path('interfaces/', views.InterfaceListView.as_view(), name='interface_list'),
  282. path('interfaces/add/', views.InterfaceCreateView.as_view(), name='interface_add'),
  283. path('interfaces/import/', views.InterfaceBulkImportView.as_view(), name='interface_import'),
  284. path('interfaces/edit/', views.InterfaceBulkEditView.as_view(), name='interface_bulk_edit'),
  285. path('interfaces/rename/', views.InterfaceBulkRenameView.as_view(), name='interface_bulk_rename'),
  286. path('interfaces/disconnect/', views.InterfaceBulkDisconnectView.as_view(), name='interface_bulk_disconnect'),
  287. path('interfaces/delete/', views.InterfaceBulkDeleteView.as_view(), name='interface_bulk_delete'),
  288. path('interfaces/<int:pk>/', views.InterfaceView.as_view(), name='interface'),
  289. path('interfaces/<int:pk>/edit/', views.InterfaceEditView.as_view(), name='interface_edit'),
  290. path('interfaces/<int:pk>/delete/', views.InterfaceDeleteView.as_view(), name='interface_delete'),
  291. path('interfaces/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='interface_changelog', kwargs={'model': Interface}),
  292. path('interfaces/<int:pk>/trace/', views.PathTraceView.as_view(), name='interface_trace', kwargs={'model': Interface}),
  293. path('interfaces/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='interface_connect', kwargs={'termination_a_type': Interface}),
  294. path('devices/interfaces/add/', views.DeviceBulkAddInterfaceView.as_view(), name='device_bulk_add_interface'),
  295. # Front ports
  296. path('front-ports/', views.FrontPortListView.as_view(), name='frontport_list'),
  297. path('front-ports/add/', views.FrontPortCreateView.as_view(), name='frontport_add'),
  298. path('front-ports/import/', views.FrontPortBulkImportView.as_view(), name='frontport_import'),
  299. path('front-ports/edit/', views.FrontPortBulkEditView.as_view(), name='frontport_bulk_edit'),
  300. path('front-ports/rename/', views.FrontPortBulkRenameView.as_view(), name='frontport_bulk_rename'),
  301. path('front-ports/disconnect/', views.FrontPortBulkDisconnectView.as_view(), name='frontport_bulk_disconnect'),
  302. path('front-ports/delete/', views.FrontPortBulkDeleteView.as_view(), name='frontport_bulk_delete'),
  303. path('front-ports/<int:pk>/', views.FrontPortView.as_view(), name='frontport'),
  304. path('front-ports/<int:pk>/edit/', views.FrontPortEditView.as_view(), name='frontport_edit'),
  305. path('front-ports/<int:pk>/delete/', views.FrontPortDeleteView.as_view(), name='frontport_delete'),
  306. path('front-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='frontport_changelog', kwargs={'model': FrontPort}),
  307. path('front-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='frontport_trace', kwargs={'model': FrontPort}),
  308. path('front-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='frontport_connect', kwargs={'termination_a_type': FrontPort}),
  309. # path('devices/front-ports/add/', views.DeviceBulkAddFrontPortView.as_view(), name='device_bulk_add_frontport'),
  310. # Rear ports
  311. path('rear-ports/', views.RearPortListView.as_view(), name='rearport_list'),
  312. path('rear-ports/add/', views.RearPortCreateView.as_view(), name='rearport_add'),
  313. path('rear-ports/import/', views.RearPortBulkImportView.as_view(), name='rearport_import'),
  314. path('rear-ports/edit/', views.RearPortBulkEditView.as_view(), name='rearport_bulk_edit'),
  315. path('rear-ports/rename/', views.RearPortBulkRenameView.as_view(), name='rearport_bulk_rename'),
  316. path('rear-ports/disconnect/', views.RearPortBulkDisconnectView.as_view(), name='rearport_bulk_disconnect'),
  317. path('rear-ports/delete/', views.RearPortBulkDeleteView.as_view(), name='rearport_bulk_delete'),
  318. path('rear-ports/<int:pk>/', views.RearPortView.as_view(), name='rearport'),
  319. path('rear-ports/<int:pk>/edit/', views.RearPortEditView.as_view(), name='rearport_edit'),
  320. path('rear-ports/<int:pk>/delete/', views.RearPortDeleteView.as_view(), name='rearport_delete'),
  321. path('rear-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rearport_changelog', kwargs={'model': RearPort}),
  322. path('rear-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='rearport_trace', kwargs={'model': RearPort}),
  323. path('rear-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='rearport_connect', kwargs={'termination_a_type': RearPort}),
  324. path('devices/rear-ports/add/', views.DeviceBulkAddRearPortView.as_view(), name='device_bulk_add_rearport'),
  325. # Module bays
  326. path('module-bays/', views.ModuleBayListView.as_view(), name='modulebay_list'),
  327. path('module-bays/add/', views.ModuleBayCreateView.as_view(), name='modulebay_add'),
  328. path('module-bays/import/', views.ModuleBayBulkImportView.as_view(), name='modulebay_import'),
  329. path('module-bays/edit/', views.ModuleBayBulkEditView.as_view(), name='modulebay_bulk_edit'),
  330. path('module-bays/rename/', views.ModuleBayBulkRenameView.as_view(), name='modulebay_bulk_rename'),
  331. path('module-bays/delete/', views.ModuleBayBulkDeleteView.as_view(), name='modulebay_bulk_delete'),
  332. path('module-bays/<int:pk>/', views.ModuleBayView.as_view(), name='modulebay'),
  333. path('module-bays/<int:pk>/edit/', views.ModuleBayEditView.as_view(), name='modulebay_edit'),
  334. path('module-bays/<int:pk>/delete/', views.ModuleBayDeleteView.as_view(), name='modulebay_delete'),
  335. path('module-bays/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='modulebay_changelog', kwargs={'model': ModuleBay}),
  336. path('devices/module-bays/add/', views.DeviceBulkAddModuleBayView.as_view(), name='device_bulk_add_modulebay'),
  337. # Device bays
  338. path('device-bays/', views.DeviceBayListView.as_view(), name='devicebay_list'),
  339. path('device-bays/add/', views.DeviceBayCreateView.as_view(), name='devicebay_add'),
  340. path('device-bays/import/', views.DeviceBayBulkImportView.as_view(), name='devicebay_import'),
  341. path('device-bays/edit/', views.DeviceBayBulkEditView.as_view(), name='devicebay_bulk_edit'),
  342. path('device-bays/rename/', views.DeviceBayBulkRenameView.as_view(), name='devicebay_bulk_rename'),
  343. path('device-bays/delete/', views.DeviceBayBulkDeleteView.as_view(), name='devicebay_bulk_delete'),
  344. path('device-bays/<int:pk>/', views.DeviceBayView.as_view(), name='devicebay'),
  345. path('device-bays/<int:pk>/edit/', views.DeviceBayEditView.as_view(), name='devicebay_edit'),
  346. path('device-bays/<int:pk>/delete/', views.DeviceBayDeleteView.as_view(), name='devicebay_delete'),
  347. path('device-bays/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicebay_changelog', kwargs={'model': DeviceBay}),
  348. path('device-bays/<int:pk>/populate/', views.DeviceBayPopulateView.as_view(), name='devicebay_populate'),
  349. path('device-bays/<int:pk>/depopulate/', views.DeviceBayDepopulateView.as_view(), name='devicebay_depopulate'),
  350. path('devices/device-bays/add/', views.DeviceBulkAddDeviceBayView.as_view(), name='device_bulk_add_devicebay'),
  351. # Inventory items
  352. path('inventory-items/', views.InventoryItemListView.as_view(), name='inventoryitem_list'),
  353. path('inventory-items/add/', views.InventoryItemCreateView.as_view(), name='inventoryitem_add'),
  354. path('inventory-items/import/', views.InventoryItemBulkImportView.as_view(), name='inventoryitem_import'),
  355. path('inventory-items/edit/', views.InventoryItemBulkEditView.as_view(), name='inventoryitem_bulk_edit'),
  356. path('inventory-items/rename/', views.InventoryItemBulkRenameView.as_view(), name='inventoryitem_bulk_rename'),
  357. path('inventory-items/delete/', views.InventoryItemBulkDeleteView.as_view(), name='inventoryitem_bulk_delete'),
  358. path('inventory-items/<int:pk>/', views.InventoryItemView.as_view(), name='inventoryitem'),
  359. path('inventory-items/<int:pk>/edit/', views.InventoryItemEditView.as_view(), name='inventoryitem_edit'),
  360. path('inventory-items/<int:pk>/delete/', views.InventoryItemDeleteView.as_view(), name='inventoryitem_delete'),
  361. path('inventory-items/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='inventoryitem_changelog', kwargs={'model': InventoryItem}),
  362. path('devices/inventory-items/add/', views.DeviceBulkAddInventoryItemView.as_view(), name='device_bulk_add_inventoryitem'),
  363. # Cables
  364. path('cables/', views.CableListView.as_view(), name='cable_list'),
  365. path('cables/import/', views.CableBulkImportView.as_view(), name='cable_import'),
  366. path('cables/edit/', views.CableBulkEditView.as_view(), name='cable_bulk_edit'),
  367. path('cables/delete/', views.CableBulkDeleteView.as_view(), name='cable_bulk_delete'),
  368. path('cables/<int:pk>/', views.CableView.as_view(), name='cable'),
  369. path('cables/<int:pk>/edit/', views.CableEditView.as_view(), name='cable_edit'),
  370. path('cables/<int:pk>/delete/', views.CableDeleteView.as_view(), name='cable_delete'),
  371. path('cables/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='cable_changelog', kwargs={'model': Cable}),
  372. path('cables/<int:pk>/journal/', ObjectJournalView.as_view(), name='cable_journal', kwargs={'model': Cable}),
  373. # Console/power/interface connections (read-only)
  374. path('console-connections/', views.ConsoleConnectionsListView.as_view(), name='console_connections_list'),
  375. path('power-connections/', views.PowerConnectionsListView.as_view(), name='power_connections_list'),
  376. path('interface-connections/', views.InterfaceConnectionsListView.as_view(), name='interface_connections_list'),
  377. # Virtual chassis
  378. path('virtual-chassis/', views.VirtualChassisListView.as_view(), name='virtualchassis_list'),
  379. path('virtual-chassis/add/', views.VirtualChassisCreateView.as_view(), name='virtualchassis_add'),
  380. path('virtual-chassis/import/', views.VirtualChassisBulkImportView.as_view(), name='virtualchassis_import'),
  381. path('virtual-chassis/edit/', views.VirtualChassisBulkEditView.as_view(), name='virtualchassis_bulk_edit'),
  382. path('virtual-chassis/delete/', views.VirtualChassisBulkDeleteView.as_view(), name='virtualchassis_bulk_delete'),
  383. path('virtual-chassis/<int:pk>/', views.VirtualChassisView.as_view(), name='virtualchassis'),
  384. path('virtual-chassis/<int:pk>/edit/', views.VirtualChassisEditView.as_view(), name='virtualchassis_edit'),
  385. path('virtual-chassis/<int:pk>/delete/', views.VirtualChassisDeleteView.as_view(), name='virtualchassis_delete'),
  386. path('virtual-chassis/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='virtualchassis_changelog', kwargs={'model': VirtualChassis}),
  387. path('virtual-chassis/<int:pk>/journal/', ObjectJournalView.as_view(), name='virtualchassis_journal', kwargs={'model': VirtualChassis}),
  388. path('virtual-chassis/<int:pk>/add-member/', views.VirtualChassisAddMemberView.as_view(), name='virtualchassis_add_member'),
  389. path('virtual-chassis-members/<int:pk>/delete/', views.VirtualChassisRemoveMemberView.as_view(), name='virtualchassis_remove_member'),
  390. # Power panels
  391. path('power-panels/', views.PowerPanelListView.as_view(), name='powerpanel_list'),
  392. path('power-panels/add/', views.PowerPanelEditView.as_view(), name='powerpanel_add'),
  393. path('power-panels/import/', views.PowerPanelBulkImportView.as_view(), name='powerpanel_import'),
  394. path('power-panels/edit/', views.PowerPanelBulkEditView.as_view(), name='powerpanel_bulk_edit'),
  395. path('power-panels/delete/', views.PowerPanelBulkDeleteView.as_view(), name='powerpanel_bulk_delete'),
  396. path('power-panels/<int:pk>/', views.PowerPanelView.as_view(), name='powerpanel'),
  397. path('power-panels/<int:pk>/edit/', views.PowerPanelEditView.as_view(), name='powerpanel_edit'),
  398. path('power-panels/<int:pk>/delete/', views.PowerPanelDeleteView.as_view(), name='powerpanel_delete'),
  399. path('power-panels/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerpanel_changelog', kwargs={'model': PowerPanel}),
  400. path('power-panels/<int:pk>/journal/', ObjectJournalView.as_view(), name='powerpanel_journal', kwargs={'model': PowerPanel}),
  401. # Power feeds
  402. path('power-feeds/', views.PowerFeedListView.as_view(), name='powerfeed_list'),
  403. path('power-feeds/add/', views.PowerFeedEditView.as_view(), name='powerfeed_add'),
  404. path('power-feeds/import/', views.PowerFeedBulkImportView.as_view(), name='powerfeed_import'),
  405. path('power-feeds/edit/', views.PowerFeedBulkEditView.as_view(), name='powerfeed_bulk_edit'),
  406. path('power-feeds/disconnect/', views.PowerFeedBulkDisconnectView.as_view(), name='powerfeed_bulk_disconnect'),
  407. path('power-feeds/delete/', views.PowerFeedBulkDeleteView.as_view(), name='powerfeed_bulk_delete'),
  408. path('power-feeds/<int:pk>/', views.PowerFeedView.as_view(), name='powerfeed'),
  409. path('power-feeds/<int:pk>/edit/', views.PowerFeedEditView.as_view(), name='powerfeed_edit'),
  410. path('power-feeds/<int:pk>/delete/', views.PowerFeedDeleteView.as_view(), name='powerfeed_delete'),
  411. path('power-feeds/<int:pk>/trace/', views.PathTraceView.as_view(), name='powerfeed_trace', kwargs={'model': PowerFeed}),
  412. path('power-feeds/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerfeed_changelog', kwargs={'model': PowerFeed}),
  413. path('power-feeds/<int:pk>/journal/', ObjectJournalView.as_view(), name='powerfeed_journal', kwargs={'model': PowerFeed}),
  414. path('power-feeds/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='powerfeed_connect', kwargs={'termination_a_type': PowerFeed}),
  415. ]