Merge pull request #1495 from modoboa/feature/refresh_dkim_key

Added button to refresh (regenerate) a DKIM key.
This commit is contained in:
Antoine Nguyen
2018-05-25 08:56:07 +02:00
committed by GitHub
4 changed files with 34 additions and 3 deletions
-1
View File
@@ -31,7 +31,6 @@ class DomainViewSet(viewsets.ModelViewSet):
permission_classes = [IsAuthenticated, DjangoModelPermissions, ]
serializer_class = serializers.DomainSerializer
http_method_names = ["get", "post", "put", "delete"]
def get_queryset(self):
"""Filter queryset based on current user."""
+2 -2
View File
@@ -34,9 +34,9 @@ class DomainSerializer(serializers.ModelSerializer):
fields = (
"pk", "name", "quota", "default_mailbox_quota", "enabled", "type",
"enable_dkim", "dkim_key_selector", "dkim_key_length",
"dkim_public_key"
"dkim_public_key", "dkim_private_key_path"
)
read_only_fields = ("pk", "dkim_public_key", )
read_only_fields = ("pk", )
def validate_name(self, value):
"""Check name constraints."""
@@ -106,6 +106,7 @@
<button type="button" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#domain_dkim_key">
{% trans "Show key" %}
</button>
<a id="refresh_dkim_key" class="btn btn-default btn-xs" href="#" title="{% trans 'Generate new key' %}"><span class="fa fa-refresh"></span></a>
{% else %}
{% trans "Not generated" %}
{% endif %}
@@ -148,3 +149,25 @@
</div>
{% endif %}
{% endblock %}
{% block extra_js %}
{{ block.super }}
<script type="text/javascript">
$(document).ready(function () {
$('#refresh_dkim_key').click(function (evt) {
evt.preventDefault();
var $this = $(this);
$.ajax({
url: '/api/v1/domains/{{ domain.pk }}/',
method: 'PATCH',
data: {
dkim_public_key: '',
dkim_private_key_path: ''
}
}).done(function (response) {
window.location.reload();
});
});
});
</script>
{% endblock %}
+9
View File
@@ -130,6 +130,15 @@ class DomainAPITestCase(ModoAPITestCase):
models.Mailbox.objects.filter(
address="user", domain__name="test42.com").exists())
def test_patch_domain(self):
"""Check domain partial update."""
domain = models.Domain.objects.get(name="test.com")
url = reverse("api:domain-detail", args=[domain.pk])
response = self.client.put(url, {"name": "toto.test"})
self.assertEqual(response.status_code, 200)
domain.refresh_from_db()
self.assertEqual(domain.name, "toto.test")
def test_delete_domain(self):
"""Try to delete a domain."""
domain = models.Domain.objects.get(name="test.com")