Implement deleting networks

This commit is contained in:
Mark Veidemanis 2022-08-02 09:04:23 +01:00
parent 62ef524ac7
commit ad153cdefa
Signed by: m
GPG Key ID: 5ACFCEED46C0904F
7 changed files with 86 additions and 33 deletions

View File

@ -33,6 +33,7 @@ from core.views.manage.threshold.irc import (
ThresholdIRCNetworkActionsList,
ThresholdIRCNetworkActionsRelay,
ThresholdIRCNetworkChannels,
ThresholdIRCNetworkDel,
ThresholdIRCNetworkInfo,
ThresholdIRCNetworkInfoEdit,
ThresholdIRCNetworkRelayDel,
@ -119,6 +120,11 @@ urlpatterns = [
ThresholdIRCNetwork.as_view(),
name="threshold_irc_network",
),
path(
"manage/threshold/irc/overview/network/<str:net>/delete/",
ThresholdIRCNetworkDel.as_view(),
name="threshold_irc_network_del",
),
path(
"manage/threshold/irc/network/<str:net>/info/",
ThresholdIRCNetworkInfo.as_view(),

View File

@ -132,3 +132,10 @@ def create_network(data):
payload = data
ran = threshold_request(url, payload, method="PUT")
return ran
def del_network(net):
url = f"irc/network/{net}"
payload = {}
deleted = threshold_request(url, payload, method="DELETE")
return deleted

View File

@ -55,40 +55,40 @@
</td>
<td>
<div class="buttons">
{% if relay.enabled %}
{% if relay.enabled %}
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 0 %}"
hx-target="#relays"
hx-swap="outerHTML"
class="button is-danger is-small">
<span class="icon" data-tooltip="Disable">
<i class="fa-solid fa-wifi-slash" aria-hidden="true"></i>
</span>
</button>
{% else %}
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 1 %}"
hx-target="#relays"
hx-swap="outerHTML"
class="button is-success is-small">
<span class="icon" data-tooltip="Enable">
<i class="fa-solid fa-wifi" aria-hidden="true"></i>
</span>
</button>
{% endif %}
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 0 %}"
hx-delete="{% url 'threshold_irc_network_relay_del' relay|index:'net' relay|index:'id' %}"
hx-target="#relays"
hx-swap="outerHTML"
class="button is-danger is-small">
<span class="icon" data-tooltip="Disable">
<i class="fa-solid fa-wifi-slash" aria-hidden="true"></i>
<span class="icon" data-tooltip="Delete">
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
</span>
</button>
{% else %}
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 1 %}"
hx-target="#relays"
hx-swap="outerHTML"
class="button is-success is-small">
<span class="icon" data-tooltip="Enable">
<i class="fa-solid fa-wifi" aria-hidden="true"></i>
</span>
</button>
{% endif %}
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-delete="{% url 'threshold_irc_network_relay_del' relay|index:'net' relay|index:'id' %}"
hx-target="#relays"
hx-swap="outerHTML"
class="button is-danger is-small">
<span class="icon" data-tooltip="Delete">
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
</span>
</button>
</div>
</div>
</td>
</tr>
{% endfor %}

View File

@ -12,7 +12,6 @@
hx-put="{% url 'threshold_irc_actions_add-network' %}"
hx-target="#networks"
hx-swap="outerHTML">
<div class="content">
<div class="field">
<label class="label">Network name</label>
@ -60,7 +59,7 @@
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<button

View File

@ -5,13 +5,23 @@
<thead>
<th>net</th>
<th>relays</th>
<th>channels</th>
<th>
<span class="icon">
<i class="fa-solid fa-hashtag"></i>
</span>
</th>
<th>records</th>
<th>
<span class="icon">
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
</span>
</th>
</thead>
{% for key, net in networks.items %}
<tr>
<th><a href="{% url 'threshold_irc_network' key %}">{{ key }}</a></th>
<td>
<span class="icon">
<i class="fa-brands fa-unity"></i>
</span>
@ -29,6 +39,18 @@
</span>
{{ net.records }}
</td>
<td>
<button
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
hx-delete="{% url 'threshold_irc_network_del' key %}"
hx-target="#networks"
hx-swap="outerHTML"
class="button is-danger is-small">
<span class="icon" data-tooltip="Delete">
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
</span>
</button>
</td>
</tr>
{% endfor %}
</table>

View File

@ -1,5 +1,5 @@
{% if message is not None %}
<div class="notification is-{{ class }}" hx-ext="remove-me" remove-me="3s">
{{ message }}
</div>
<div class="notification is-{{ class }}" hx-ext="remove-me" remove-me="3s">
{{ message }}
</div>
{% endif %}

View File

@ -25,6 +25,25 @@ class ThresholdIRCNetworks(SuperUserRequiredMixin, View):
return render(request, self.template_name, context)
class ThresholdIRCNetworkDel(SuperUserRequiredMixin, View):
template_name = "manage/threshold/irc/overview/networks.html"
def delete(self, request, net):
deleted = threshold.del_network(net)
message = f"Deleted network {net}"
message_class = "success"
if not deleted["success"]:
message = deleted["reason"]
message_class = "danger"
networks = threshold.get_irc_networks()
context = {
"networks": networks,
"message": message,
"class": message_class,
}
return render(request, self.template_name, context)
class ThresholdIRCNetworkInfo(SuperUserRequiredMixin, View):
template_name = "manage/threshold/irc/network/info.html"