Allow clearing matches

This commit is contained in:
Mark Veidemanis 2023-01-15 18:39:57 +00:00
parent 6bfa0aa73b
commit 46c7d96310
Signed by: m
GPG Key ID: 5ACFCEED46C0904F
2 changed files with 28 additions and 0 deletions

View File

@ -306,4 +306,9 @@ urlpatterns = [
notifications.RuleDelete.as_view(),
name="rule_delete",
),
path(
"rule/<str:type>/clear/<str:pk>/",
notifications.RuleClear.as_view(),
name="rule_clear",
),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

View File

@ -1,4 +1,6 @@
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.shortcuts import render
from rest_framework.views import APIView
from core.forms import NotificationRuleForm, NotificationSettingsForm
from core.models import NotificationRule, NotificationSettings
@ -61,3 +63,24 @@ class RuleUpdate(LoginRequiredMixin, PermissionRequiredMixin, ObjectUpdate):
class RuleDelete(LoginRequiredMixin, PermissionRequiredMixin, ObjectDelete):
permission_required = "use_rules"
model = NotificationRule
class RuleClear(LoginRequiredMixin, PermissionRequiredMixin, APIView):
permission_required = "use_rules"
def post(self, request, type, pk):
template_name = "partials/notify.html"
rule = NotificationRule.objects.get(pk=pk, user=request.user)
if isinstance(rule.match, dict):
for index in rule.match:
rule.match[index] = False
rule.save()
cleared_indices = ", ".join(rule.match)
context = {
"message": f"Cleared match status for indices: {cleared_indices}",
"class": "success",
}
response = render(request, template_name, context)
response["HX-Trigger"] = "notificationruleEvent"
return response