template_code.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. CABLETERMINATION = """
  2. {% if value %}
  3. <a href="{{ value.parent.get_absolute_url }}">{{ value.parent }}</a>
  4. <i class="mdi mdi-chevron-right"></i>
  5. <a href="{{ value.get_absolute_url }}">{{ value }}</a>
  6. {% else %}
  7. &mdash;
  8. {% endif %}
  9. """
  10. CABLE_LENGTH = """
  11. {% if record.length %}{{ record.length }} {{ record.get_length_unit_display }}{% else %}&mdash;{% endif %}
  12. """
  13. CABLE_TERMINATION_PARENT = """
  14. {% if value.device %}
  15. <a href="{{ value.device.get_absolute_url }}">{{ value.device }}</a>
  16. {% elif value.circuit %}
  17. <a href="{{ value.circuit.get_absolute_url }}">{{ value.circuit }}</a>
  18. {% elif value.power_panel %}
  19. <a href="{{ value.power_panel.get_absolute_url }}">{{ value.power_panel }}</a>
  20. {% endif %}
  21. """
  22. DEVICE_LINK = """
  23. <a href="{% url 'dcim:device' pk=record.pk %}">
  24. {{ record.name|default:'<span class="label label-info">Unnamed device</span>' }}
  25. </a>
  26. """
  27. DEVICEBAY_STATUS = """
  28. {% if record.installed_device_id %}
  29. <span class="label label-{{ record.installed_device.get_status_class }}">
  30. {{ record.installed_device.get_status_display }}
  31. </span>
  32. {% else %}
  33. <span class="label label-default">Vacant</span>
  34. {% endif %}
  35. """
  36. INTERFACE_IPADDRESSES = """
  37. {% for ip in record.ip_addresses.all %}
  38. <a href="{{ ip.get_absolute_url }}">{{ ip }}</a><br />
  39. {% endfor %}
  40. """
  41. INTERFACE_TAGGED_VLANS = """
  42. {% for vlan in record.tagged_vlans.unrestricted %}
  43. <a href="{{ vlan.get_absolute_url }}">{{ vlan }}</a><br />
  44. {% endfor %}
  45. """
  46. MPTT_LINK = """
  47. {% if record.get_children %}
  48. <span style="padding-left: {{ record.get_ancestors|length }}0px "><i class="mdi mdi-chevron-right"></i>
  49. {% else %}
  50. <span style="padding-left: {{ record.get_ancestors|length }}9px">
  51. {% endif %}
  52. <a href="{{ record.get_absolute_url }}">{{ record.name }}</a>
  53. </span>
  54. """
  55. POWERFEED_CABLE = """
  56. <a href="{{ value.get_absolute_url }}">{{ value }}</a>
  57. <a href="{% url 'dcim:powerfeed_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace">
  58. <i class="mdi mdi-transit-connection-variant" aria-hidden="true"></i>
  59. </a>
  60. """
  61. POWERFEED_CABLETERMINATION = """
  62. <a href="{{ value.parent.get_absolute_url }}">{{ value.parent }}</a>
  63. <i class="mdi mdi-chevron-right"></i>
  64. <a href="{{ value.get_absolute_url }}">{{ value }}</a>
  65. """
  66. RACKGROUP_ELEVATIONS = """
  67. <a href="{% url 'dcim:rack_elevation_list' %}?site={{ record.site.slug }}&group_id={{ record.pk }}" class="btn btn-xs btn-primary" title="View elevations">
  68. <i class="mdi mdi-server"></i>
  69. </a>
  70. """
  71. UTILIZATION_GRAPH = """
  72. {% load helpers %}
  73. {% utilization_graph value %}
  74. """
  75. #
  76. # Device component buttons
  77. #
  78. CONSOLEPORT_BUTTONS = """
  79. {% if record.cable %}
  80. <a href="{% url 'dcim:consoleport_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  81. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  82. {% elif perms.dcim.add_cable %}
  83. <span class="dropdown">
  84. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  85. <span class="mdi mdi-lan-connect" aria-hidden="true"></span>
  86. </button>
  87. <ul class="dropdown-menu dropdown-menu-right">
  88. <li><a href="{% url 'dcim:consoleport_connect' termination_a_id=record.pk termination_b_type='console-server-port' %}?return_url={% url 'dcim:device_consoleports' pk=device.pk %}">Console Server Port</a></li>
  89. <li><a href="{% url 'dcim:consoleport_connect' termination_a_id=record.pk termination_b_type='front-port' %}?return_url={% url 'dcim:device_consoleports' pk=device.pk %}">Front Port</a></li>
  90. <li><a href="{% url 'dcim:consoleport_connect' termination_a_id=record.pk termination_b_type='rear-port' %}?return_url={% url 'dcim:device_consoleports' pk=device.pk %}">Rear Port</a></li>
  91. </ul>
  92. </span>
  93. {% endif %}
  94. """
  95. CONSOLESERVERPORT_BUTTONS = """
  96. {% if record.cable %}
  97. <a href="{% url 'dcim:consoleserverport_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  98. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  99. {% elif perms.dcim.add_cable %}
  100. <span class="dropdown">
  101. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  102. <span class="mdi mdi-lan-connect" aria-hidden="true"></span>
  103. </button>
  104. <ul class="dropdown-menu dropdown-menu-right">
  105. <li><a href="{% url 'dcim:consoleserverport_connect' termination_a_id=record.pk termination_b_type='console-port' %}?return_url={% url 'dcim:device_consoleserverports' pk=device.pk %}">Console Port</a></li>
  106. <li><a href="{% url 'dcim:consoleserverport_connect' termination_a_id=record.pk termination_b_type='front-port' %}?return_url={% url 'dcim:device_consoleserverports' pk=device.pk %}">Front Port</a></li>
  107. <li><a href="{% url 'dcim:consoleserverport_connect' termination_a_id=record.pk termination_b_type='rear-port' %}?return_url={% url 'dcim:device_consoleserverports' pk=device.pk %}">Rear Port</a></li>
  108. </ul>
  109. </span>
  110. {% endif %}
  111. """
  112. POWERPORT_BUTTONS = """
  113. {% if record.cable %}
  114. <a href="{% url 'dcim:powerport_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  115. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  116. {% elif perms.dcim.add_cable %}
  117. <span class="dropdown">
  118. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  119. <span class="mdi mdi-lan-connect" aria-hidden="true"></span>
  120. </button>
  121. <ul class="dropdown-menu dropdown-menu-right">
  122. <li><a href="{% url 'dcim:powerport_connect' termination_a_id=record.pk termination_b_type='power-outlet' %}?return_url={% url 'dcim:device_powerports' pk=device.pk %}">Power Outlet</a></li>
  123. <li><a href="{% url 'dcim:powerport_connect' termination_a_id=record.pk termination_b_type='power-feed' %}?return_url={% url 'dcim:device_powerports' pk=device.pk %}">Power Feed</a></li>
  124. </ul>
  125. </span>
  126. {% endif %}
  127. """
  128. POWEROUTLET_BUTTONS = """
  129. {% if record.cable %}
  130. <a href="{% url 'dcim:poweroutlet_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  131. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  132. {% elif perms.dcim.add_cable %}
  133. <a href="{% url 'dcim:poweroutlet_connect' termination_a_id=record.pk termination_b_type='power-port' %}?return_url={% url 'dcim:device_poweroutlets' pk=device.pk %}" title="Connect" class="btn btn-success btn-xs">
  134. <i class="mdi mdi-lan-connect" aria-hidden="true"></i>
  135. </a>
  136. {% endif %}
  137. """
  138. INTERFACE_BUTTONS = """
  139. {% if perms.ipam.add_ipaddress %}
  140. <a href="{% url 'ipam:ipaddress_add' %}?interface={{ record.pk }}&return_url={% url 'dcim:device_interfaces' pk=device.pk %}" class="btn btn-xs btn-success" title="Add IP address">
  141. <i class="mdi mdi-plus-thick" aria-hidden="true"></i>
  142. </a>
  143. {% endif %}
  144. {% if record.cable %}
  145. <a href="{% url 'dcim:interface_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  146. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  147. {% elif record.is_connectable and perms.dcim.add_cable %}
  148. <span class="dropdown">
  149. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  150. <span class="mdi mdi-ethernet-cable" aria-hidden="true"></span>
  151. </button>
  152. <ul class="dropdown-menu dropdown-menu-right">
  153. <li><a href="{% url 'dcim:interface_connect' termination_a_id=record.pk termination_b_type='interface' %}?return_url={% url 'dcim:device_interfaces' pk=device.pk %}">Interface</a></li>
  154. <li><a href="{% url 'dcim:interface_connect' termination_a_id=record.pk termination_b_type='front-port' %}?return_url={% url 'dcim:device_interfaces' pk=device.pk %}">Front Port</a></li>
  155. <li><a href="{% url 'dcim:interface_connect' termination_a_id=record.pk termination_b_type='rear-port' %}?return_url={% url 'dcim:device_interfaces' pk=device.pk %}">Rear Port</a></li>
  156. <li><a href="{% url 'dcim:interface_connect' termination_a_id=record.pk termination_b_type='circuit-termination' %}?return_url={% url 'dcim:device_interfaces' pk=device.pk %}">Circuit Termination</a></li>
  157. </ul>
  158. </span>
  159. {% endif %}
  160. """
  161. FRONTPORT_BUTTONS = """
  162. {% if record.cable %}
  163. <a href="{% url 'dcim:frontport_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  164. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  165. {% elif perms.dcim.add_cable %}
  166. <span class="dropdown">
  167. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  168. <span class="mdi mdi-lan-connect" aria-hidden="true"></span>
  169. </button>
  170. <ul class="dropdown-menu dropdown-menu-right">
  171. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='interface' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Interface</a></li>
  172. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='console-server-port' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Console Server Port</a></li>
  173. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='console-port' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Console Port</a></li>
  174. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='front-port' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Front Port</a></li>
  175. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='rear-port' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Rear Port</a></li>
  176. <li><a href="{% url 'dcim:frontport_connect' termination_a_id=record.pk termination_b_type='circuit-termination' %}?return_url={% url 'dcim:device_frontports' pk=device.pk %}">Circuit Termination</a></li>
  177. </ul>
  178. </span>
  179. {% endif %}
  180. """
  181. REARPORT_BUTTONS = """
  182. {% if record.cable %}
  183. <a href="{% url 'dcim:rearport_trace' pk=record.pk %}" class="btn btn-primary btn-xs" title="Trace"><i class="mdi mdi-transit-connection-variant"></i></a>
  184. {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %}
  185. {% elif perms.dcim.add_cable %}
  186. <span class="dropdown">
  187. <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  188. <span class="mdi mdi-lan-connect" aria-hidden="true"></span>
  189. </button>
  190. <ul class="dropdown-menu dropdown-menu-right">
  191. <li><a href="{% url 'dcim:rearport_connect' termination_a_id=record.pk termination_b_type='interface' %}?return_url={% url 'dcim:device_rearports' pk=device.pk %}">Interface</a></li>
  192. <li><a href="{% url 'dcim:rearport_connect' termination_a_id=record.pk termination_b_type='front-port' %}?return_url={% url 'dcim:device_rearports' pk=device.pk %}">Front Port</a></li>
  193. <li><a href="{% url 'dcim:rearport_connect' termination_a_id=record.pk termination_b_type='rear-port' %}?return_url={% url 'dcim:device_rearports' pk=device.pk %}">Rear Port</a></li>
  194. <li><a href="{% url 'dcim:rearport_connect' termination_a_id=record.pk termination_b_type='circuit-termination' %}?return_url={% url 'dcim:device_rearports' pk=device.pk %}">Circuit Termination</a></li>
  195. </ul>
  196. </span>
  197. {% endif %}
  198. """
  199. DEVICEBAY_BUTTONS = """
  200. {% if perms.dcim.change_devicebay %}
  201. {% if record.installed_device %}
  202. <a href="{% url 'dcim:devicebay_depopulate' pk=record.pk %}?return_url={% url 'dcim:device_devicebays' pk=device.pk %}" class="btn btn-danger btn-xs">
  203. <i class="mdi mdi-close-thick" aria-hidden="true" title="Remove device"></i>
  204. </a>
  205. {% else %}
  206. <a href="{% url 'dcim:devicebay_populate' pk=record.pk %}?return_url={% url 'dcim:device_devicebays' pk=device.pk %}" class="btn btn-success btn-xs">
  207. <i class="mdi mdi-plus-thick" aria-hidden="true" title="Install device"></i>
  208. </a>
  209. {% endif %}
  210. {% endif %}
  211. """