-
-
Notifications
You must be signed in to change notification settings - Fork 195
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[fix] Allowed deleting device with "deactivating" config status #949
Fixes #949 --------- Co-authored-by: Federico Capoano <[email protected]>
- Loading branch information
1 parent
a4c7df7
commit 2e5e0dc
Showing
12 changed files
with
332 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
openwisp_controller/config/static/config/css/device-delete-confirmation.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#deactivating-warning .warning p { | ||
margin-top: 0px; | ||
} | ||
#main ul.messagelist li.warning ul li { | ||
display: list-item; | ||
padding: 0px; | ||
background: inherit; | ||
} | ||
ul.messagelist li { | ||
font-size: unset; | ||
} |
12 changes: 12 additions & 0 deletions
12
openwisp_controller/config/static/config/js/device-delete-confirmation.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
"use strict"; | ||
|
||
(function ($) { | ||
$(document).ready(function () { | ||
$("#warning-ack").click(function (event) { | ||
event.preventDefault(); | ||
$("#deactivating-warning").slideUp("fast"); | ||
$("#delete-confirm-container").slideDown("fast"); | ||
$('input[name="force_delete"]').val("true"); | ||
}); | ||
}); | ||
})(django.jQuery); |
81 changes: 81 additions & 0 deletions
81
openwisp_controller/config/templates/admin/config/device/delete_confirmation.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
{% extends "admin/delete_confirmation.html" %} | ||
{% load i18n static %} | ||
|
||
{% block extrastyle %} | ||
{{ block.super }} | ||
<link rel="stylesheet" type="text/css" href="{% static 'config/css/device-delete-confirmation.css' %}" /> | ||
{% endblock extrastyle %} | ||
|
||
{% block content %} | ||
{% if perms_lacking %} | ||
<p>{% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}</p> | ||
<ul> | ||
{% for obj in perms_lacking %} | ||
<li>{{ obj }}</li> | ||
{% endfor %} | ||
</ul> | ||
{% elif protected %} | ||
<p>{% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktranslate %}</p> | ||
<ul> | ||
{% for obj in protected %} | ||
<li>{{ obj }}</li> | ||
{% endfor %} | ||
</ul> | ||
{% else %} | ||
{% if deactivating_warning %} | ||
<div id="deactivating-warning"> | ||
<ul class="messagelist"> | ||
<li class="warning"> | ||
<p> | ||
<strong> | ||
{% translate 'Warning: Device is not fully deactivated.' %} | ||
</strong> | ||
</p> | ||
<p> | ||
{% blocktranslate %} | ||
This device is still in the process of being deactivated, | ||
meaning its configuration is still present on the device. | ||
{% endblocktranslate %} | ||
</p> | ||
<p> | ||
{% blocktranslate %} | ||
To ensure its configuration is removed, please | ||
wait until its status changes to | ||
<strong>"deactivated"</strong>.<br> | ||
If you proceed now, the device will be deleted, | ||
but its configuration will remain active. | ||
{% endblocktranslate %} | ||
</p> | ||
<form> | ||
<input type="submit" class="button danger-btn" id="warning-ack" | ||
value="{% translate 'I understand the risks, delete the device' %}"> | ||
<a class="button cancel-link">{% translate 'No, take me back' %}</a> | ||
</form> | ||
</li> | ||
</ul> | ||
</div> | ||
{% endif %} | ||
<div id="delete-confirm-container" {% if deactivating_warning %}style="display:none;"{% endif %}> | ||
<p>{% blocktranslate with escaped_object=object %}Are you sure you want to delete the {{ object_name }} | ||
"{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktranslate %}</p> | ||
{% include "admin/includes/object_delete_summary.html" %} | ||
<h2>{% translate "Objects" %}</h2> | ||
<ul id="deleted-objects">{{ deleted_objects|unordered_list }}</ul> | ||
<form method="post">{% csrf_token %} | ||
<div> | ||
<input type="hidden" name="post" value="yes"> | ||
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %} | ||
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">{% endif %} | ||
<input type="submit" value="{% translate 'Yes, I’m sure' %}"> | ||
{% if deactivating_warning %}<input type="hidden" name="force_delete" value="false">{% endif %} | ||
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a> | ||
</div> | ||
</form> | ||
</div> | ||
{% endif %} | ||
{% endblock %} | ||
|
||
{% block footer %} | ||
{{ block.super }} | ||
<script type="text/javascript" src="{% static 'config/js/device-delete-confirmation.js' %}"></script> | ||
{% endblock %} |
99 changes: 75 additions & 24 deletions
99
openwisp_controller/config/templates/admin/config/device/delete_selected_confirmation.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,87 @@ | ||
{% extends "admin/delete_selected_confirmation.html" %} | ||
{% load i18n l10n admin_urls static %} | ||
|
||
{% block extrastyle %} | ||
{{ block.super }} | ||
<link rel="stylesheet" type="text/css" href="{% static 'config/css/device-delete-confirmation.css' %}" /> | ||
{% endblock extrastyle %} | ||
|
||
{% block content %} | ||
{% if perms_lacking %} | ||
{% if perms_lacking|first == 'active_devices' %} | ||
<p>{% blocktranslate %}You have selected the following active device{{ model_count | pluralize }} to delete:{% endblocktranslate %}</p> | ||
<ul>{{ deletable_objects|first|unordered_list }}</ul> | ||
<p>{% blocktrans %}It is required to flag the device as deactivated before deleting the device. If the device has configuration, then wait till the configuration status changes to "deactivated" before deleting the device.{% endblocktrans %}</p> | ||
{% else %} | ||
<p>{% blocktranslate %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}</p> | ||
<ul>{{ perms_lacking|unordered_list }}</ul> | ||
{% endif %} | ||
<p>{% blocktranslate %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}</p> | ||
<ul>{{ perms_lacking|unordered_list }}</ul> | ||
{% elif protected %} | ||
<p>{% blocktranslate %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktranslate %}</p> | ||
<ul>{{ protected|unordered_list }}</ul> | ||
{% else %} | ||
<p>{% blocktranslate %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktranslate %}</p> | ||
{% include "admin/includes/object_delete_summary.html" %} | ||
<h2>{% translate "Objects" %}</h2> | ||
{% for deletable_object in deletable_objects %} | ||
<ul>{{ deletable_object|unordered_list }}</ul> | ||
{% endfor %} | ||
<form method="post">{% csrf_token %} | ||
<div> | ||
{% for obj in queryset %} | ||
<input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}"> | ||
{% endfor %} | ||
<input type="hidden" name="action" value="delete_selected"> | ||
<input type="hidden" name="post" value="yes"> | ||
<input type="submit" value="{% translate 'Yes, I’m sure' %}"> | ||
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a> | ||
{% if active_devices %} | ||
<div id="deactivating-warning"> | ||
<ul class="messagelist"> | ||
<li class="warning"> | ||
<p> | ||
<strong> | ||
{% blocktranslate count counter=active_devices|length %} | ||
Warning: Device is not fully deactivated. | ||
{% plural %} | ||
Warning: Some devices are not fully deactivated. | ||
{% endblocktranslate %} | ||
</strong> | ||
</p> | ||
<p> | ||
{% blocktranslate count counter=active_devices|length %} | ||
The device below is either still active or | ||
in the process of being deactivated: | ||
{% plural %} | ||
The devices listed below are either still active | ||
or in the process of being deactivated: | ||
{% endblocktranslate %} | ||
</p> | ||
<ul>{{ active_devices|unordered_list }}</ul> | ||
<p> | ||
{% blocktranslate count counter=active_devices|length %} | ||
To ensure its configuration is removed, please | ||
wait until its status changes to <strong>"deactivated"</strong>.<br> | ||
If you proceed now, the device will be deleted, | ||
but its configuration will remain active. | ||
{% plural %} | ||
To ensure their configurations are removed, please | ||
wait until their status changes to <strong>"deactivated"</strong>.<br> | ||
If you proceed now, the devices will be deleted, | ||
but their configurations will remain active. | ||
{% endblocktranslate %} | ||
</p> | ||
<form> | ||
<input type="submit" class="button danger-btn" id="warning-ack" | ||
value="{% blocktranslate count counter=active_devices|length %}I understand the risks, delete the device{% plural %}I understand the risks, delete the devices{% endblocktranslate %}"> | ||
<a class="button cancel-link">{% translate 'No, take me back' %}</a> | ||
</form> | ||
</li> | ||
</ul> | ||
</div> | ||
{% endif %} | ||
<div id="delete-confirm-container" {% if active_devices %}style="display:none;"{% endif %}> | ||
<p>{% blocktranslate %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktranslate %}</p> | ||
{% include "admin/includes/object_delete_summary.html" %} | ||
<h2>{% translate "Objects" %}</h2> | ||
{% for deletable_object in deletable_objects %} | ||
<ul>{{ deletable_object|unordered_list }}</ul> | ||
{% endfor %} | ||
<form method="post">{% csrf_token %} | ||
<div> | ||
{% for obj in queryset %} | ||
<input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}"> | ||
{% endfor %} | ||
<input type="hidden" name="action" value="delete_selected"> | ||
<input type="hidden" name="post" value="yes"> | ||
<input type="submit" value="{% translate 'Yes, I’m sure' %}"> | ||
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a> | ||
</div> | ||
</form> | ||
</div> | ||
</form> | ||
{% endif %} | ||
{% endblock %} | ||
|
||
{% block footer %} | ||
{{ block.super }} | ||
<script type="text/javascript" src="{% static 'config/js/device-delete-confirmation.js' %}"></script> | ||
{% endblock %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.