{% comment %} Shared "Move to winner" button cell for the device-merge migration tables (interface + IP). The ``{% url ... as %}`` form does NOT raise NoReverseMatch: the move-to-winner routes are registered by the device-merge feature further up the stack, so on branches without them ``move_url`` is '' and the live button degrades to read-only instead of 500ing the whole tab. Params (passed via {% include ... with %}): move_url_name - the move-to-winner URL name (string) obj_id - pk of the row object obj_label - display value for the confirm text (interface.name / ip.address) entity_word - "interface" or "IP" (drives confirm/title wording) winner - the migrated_to_winner device server_key - resolved server_key for the hx-vals scope (may be empty) obj_interface_name - (IP only) the interface the IP is assigned to, for the title detail ``has_write_permission`` and ``csrf_token`` come from the parent context. {% endcomment %} {% url move_url_name pk=obj_id as move_url %} {% if has_write_permission and winner and move_url %} {% elif winner %} read-only {% else %} winner missing {% endif %}