devicetype.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. {% extends 'generic/object.html' %}
  2. {% load buttons %}
  3. {% load helpers %}
  4. {% load plugins %}
  5. {% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %}
  6. {% block breadcrumbs %}
  7. <li class="breadcrumb-item"><a href="{% url 'dcim:devicetype_list' %}">Device Types</a></li>
  8. <li class="breadcrumb-item"><a href="{% url 'dcim:devicetype_list' %}?manufacturer_id={{ object.manufacturer.pk }}">{{ object.manufacturer }}</a></li>
  9. <li class="breadcrumb-item">{{ object.model }}</li>
  10. {% endblock %}
  11. {% block controls %}
  12. {% if perms.dcim.change_devicetype %}
  13. <div class="dropdown m-1">
  14. <button type="button" class="btn btn-primary btn-sm dropdown-toggle"data-bs-toggle="dropdown" aria-expanded="false">
  15. <i class="bi bi-plus" aria-hidden="true"></i> Add Components
  16. </button>
  17. <ul class="dropdown-menu">
  18. {% if perms.dcim.add_consoleporttemplate %}
  19. <li><a class="dropdown-item" href="{% url 'dcim:consoleporttemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_consoleports">Console Ports</a></li>
  20. {% endif %}
  21. {% if perms.dcim.add_consoleserverporttemplate %}
  22. <li><a class="dropdown-item" href="{% url 'dcim:consoleserverporttemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_consoleserverports">Console Server Ports</a></li>
  23. {% endif %}
  24. {% if perms.dcim.add_powerporttemplate %}
  25. <li><a class="dropdown-item" href="{% url 'dcim:powerporttemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_powerports">Power Ports</a></li>
  26. {% endif %}
  27. {% if perms.dcim.add_poweroutlettemplate %}
  28. <li><a class="dropdown-item" href="{% url 'dcim:poweroutlettemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_poweroutlets">Power Outlets</a></li>
  29. {% endif %}
  30. {% if perms.dcim.add_interfacetemplate %}
  31. <li><a class="dropdown-item" href="{% url 'dcim:interfacetemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_interfaces">Interfaces</a></li>
  32. {% endif %}
  33. {% if perms.dcim.add_frontporttemplate %}
  34. <li><a class="dropdown-item" href="{% url 'dcim:frontporttemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_frontports">Front Ports</a></li>
  35. {% endif %}
  36. {% if perms.dcim.add_rearporttemplate %}
  37. <li><a class="dropdown-item" href="{% url 'dcim:rearporttemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_rearports">Rear Ports</a></li>
  38. {% endif %}
  39. {% if perms.dcim.add_devicebaytemplate %}
  40. <li><a class="dropdown-item" href="{% url 'dcim:devicebaytemplate_add' %}?device_type={{ object.pk }}&return_url={{ object.get_absolute_url }}%23tab_devicebays">Device Bays</a></li>
  41. {% endif %}
  42. </ul>
  43. </div>
  44. {% endif %}
  45. {% if perms.dcim.add_devicetype %}
  46. {% clone_button object %}
  47. {% endif %}
  48. {% if perms.dcim.change_devicetype %}
  49. {% edit_button object %}
  50. {% endif %}
  51. {% if perms.dcim.delete_devicetype %}
  52. {% delete_button object %}
  53. {% endif %}
  54. {% endblock %}
  55. {% block content %}
  56. <div class="row">
  57. <div class="col-md-6">
  58. <div class="card">
  59. <h5 class="card-header">
  60. Chassis
  61. </h5>
  62. <div class="card-body">
  63. <table class="table table-hover attr-table">
  64. <tr>
  65. <td>Manufacturer</td>
  66. <td><a href="{{ object.manufacturer.get_absolute_url }}">{{ object.manufacturer }}</a></td>
  67. </tr>
  68. <tr>
  69. <td>Model Name</td>
  70. <td>
  71. {{ object.model }}<br/>
  72. <small class="text-muted">{{ object.slug }}</small>
  73. </td>
  74. </tr>
  75. <tr>
  76. <td>Part Number</td>
  77. <td>{{ object.part_number|placeholder }}</td>
  78. </tr>
  79. <tr>
  80. <td>Height (U)</td>
  81. <td>{{ object.u_height }}</td>
  82. </tr>
  83. <tr>
  84. <td>Full Depth</td>
  85. <td>
  86. {% if object.is_full_depth %}
  87. <i class="mdi mdi-check-bold text-success" title="Yes"></i>
  88. {% else %}
  89. <i class="mdi mdi-close-thick text-danger" title="No"></i>
  90. {% endif %}
  91. </td>
  92. </tr>
  93. <tr>
  94. <td>Parent/Child</td>
  95. <td>
  96. {{ object.get_subdevice_role_display|placeholder }}
  97. </td>
  98. </tr>
  99. <tr>
  100. <td>Front Image</td>
  101. <td>
  102. {% if object.front_image %}
  103. <a href="{{ object.front_image.url }}">
  104. <img src="{{ object.front_image.url }}" alt="{{ object.front_image.name }}" class="img-responsive" />
  105. </a>
  106. {% else %}
  107. <span class="text-muted">&mdash;</span>
  108. {% endif %}
  109. </td>
  110. </tr>
  111. <tr>
  112. <td>Rear Image</td>
  113. <td>
  114. {% if object.rear_image %}
  115. <a href="{{ object.rear_image.url }}">
  116. <img src="{{ object.rear_image.url }}" alt="{{ object.rear_image.name }}" class="img-responsive" />
  117. </a>
  118. {% else %}
  119. <span class="text-muted">&mdash;</span>
  120. {% endif %}
  121. </td>
  122. </tr>
  123. <tr>
  124. <td>Instances</td>
  125. <td><a href="{% url 'dcim:device_list' %}?device_type_id={{ object.pk }}">{{ instance_count }}</a></td>
  126. </tr>
  127. </table>
  128. </div>
  129. </div>
  130. {% plugin_left_page object %}
  131. </div>
  132. <div class="col-md-6">
  133. {% include 'inc/custom_fields_panel.html' %}
  134. {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:devicetype_list' %}
  135. <div class="card">
  136. <h5 class="card-header">
  137. Comments
  138. </h5>
  139. <div class="card-body rendered-markdown">
  140. {% if object.comments %}
  141. {{ object.comments|render_markdown }}
  142. {% else %}
  143. <span class="text-muted">None</span>
  144. {% endif %}
  145. </div>
  146. </div>
  147. {% plugin_right_page object %}
  148. </div>
  149. </div>
  150. <div class="row">
  151. <div class="col-md-12">
  152. {% plugin_full_width_page object %}
  153. </div>
  154. </div>
  155. <div class="row my-3">
  156. <div class="col-md-12">
  157. <ul class="nav nav-tabs" role="tablist">
  158. <li class="nav-item" role="presentation">
  159. <button class="nav-link active" data-bs-target="#interfaces" role="tab" data-bs-toggle="tab">
  160. Interfaces {% badge interface_table.rows|length %}
  161. </button>
  162. </li>
  163. <li class="nav-item" role="presentation">
  164. <button class="nav-link" data-bs-target="#frontports" role="tab" data-bs-toggle="tab">
  165. Front Ports {% badge front_port_table.rows|length %}
  166. </button>
  167. </li>
  168. <li class="nav-item" role="presentation">
  169. <button class="nav-link" data-bs-target="#rearports" role="tab" data-bs-toggle="tab">
  170. Rear Ports {% badge rear_port_table.rows|length %}
  171. </button>
  172. </li>
  173. <li class="nav-item" role="presentation">
  174. <button class="nav-link" data-bs-target="#consoleports" role="tab" data-bs-toggle="tab">
  175. Console Ports {% badge consoleport_table.rows|length %}
  176. </button>
  177. </li>
  178. <li class="nav-item" role="presentation">
  179. <button class="nav-link" data-bs-target="#consoleserverports" role="tab" data-bs-toggle="tab">
  180. Console Server Ports {% badge consoleserverport_table.rows|length %}
  181. </button>
  182. </li>
  183. <li class="nav-item" role="presentation">
  184. <button class="nav-link" data-bs-target="#powerports" role="tab" data-bs-toggle="tab">
  185. Power Ports {% badge powerport_table.rows|length %}
  186. </button>
  187. </li>
  188. <li class="nav-item" role="presentation">
  189. <button class="nav-link" data-bs-target="#poweroutlets" role="tab" data-bs-toggle="tab">
  190. Power Outlets {% badge poweroutlet_table.rows|length %}
  191. </button>
  192. </li>
  193. <li class="nav-item" role="presentation">
  194. <button class="nav-link" data-bs-target="#devicebays" role="tab" data-bs-toggle="tab">
  195. Device Bays {% badge devicebay_table.rows|length %}
  196. </button>
  197. </li>
  198. </ul>
  199. <div class="tab-content my-3">
  200. <div role="tabpanel" class="tab-pane active" id="interfaces">
  201. {% include 'dcim/inc/devicetype_component_table.html' with table=interface_table title='Interfaces' tab='interfaces' %}
  202. </div>
  203. <div role="tabpanel" class="tab-pane" id="frontports">
  204. {% include 'dcim/inc/devicetype_component_table.html' with table=front_port_table title='Front Ports' tab='frontports' %}
  205. </div>
  206. <div role="tabpanel" class="tab-pane" id="rearports">
  207. {% include 'dcim/inc/devicetype_component_table.html' with table=rear_port_table title='Rear Ports' tab='rearports' %}
  208. </div>
  209. <div role="tabpanel" class="tab-pane" id="consoleports">
  210. {% include 'dcim/inc/devicetype_component_table.html' with table=consoleport_table title='Console Ports' tab='consoleports' %}
  211. </div>
  212. <div role="tabpanel" class="tab-pane" id="consoleserverports">
  213. {% include 'dcim/inc/devicetype_component_table.html' with table=consoleserverport_table title='Console Server Ports' tab='consoleserverports' %}
  214. </div>
  215. <div role="tabpanel" class="tab-pane" id="powerports">
  216. {% include 'dcim/inc/devicetype_component_table.html' with table=powerport_table title='Power Ports' tab='powerports' %}
  217. </div>
  218. <div role="tabpanel" class="tab-pane" id="poweroutlets">
  219. {% include 'dcim/inc/devicetype_component_table.html' with table=poweroutlet_table title='Power Outlets' tab='poweroutlets' %}
  220. </div>
  221. <div role="tabpanel" class="tab-pane" id="devicebays">
  222. {% include 'dcim/inc/devicetype_component_table.html' with table=devicebay_table title='Device Bays' tab='devicebays' %}
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. {% endblock %}