devicetype.html 11 KB

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