From 5493ad8d551247abe8aaaaf687de599eaba8307c Mon Sep 17 00:00:00 2001 From: CasVT Date: Sun, 20 Aug 2023 22:52:37 +0200 Subject: [PATCH] Fixed adding NS when regex for field used named groups (#60) --- backend/notification_service.py | 15 ++++++++++++--- frontend/static/js/notification.js | 8 ++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/backend/notification_service.py b/backend/notification_service.py index c4d7ca1..713cf09 100644 --- a/backend/notification_service.py +++ b/backend/notification_service.py @@ -1,6 +1,7 @@ #-*- coding: utf-8 -*- import logging +from re import compile from typing import Dict, List, Union from apprise import Apprise @@ -9,6 +10,14 @@ from backend.custom_exceptions import (NotificationServiceInUse, NotificationServiceNotFound) from backend.db import get_db +remove_named_groups = compile(r'(?<=\()\?P<\w+>') + +def process_regex(regex: Union[List[str], None]): + return ( + [remove_named_groups.sub('', regex[0]), regex[1]] + if regex is not None else + None + ) def _sort_tokens(t: dict) -> int: result = [ @@ -63,7 +72,7 @@ def get_apprise_services() -> List[Dict[str, Union[str, Dict[str, list]]]]: 'required': content['required'], 'type': content['type'], 'prefix': content.get('prefix'), - 'regex': content.get('regex') + 'regex': process_regex(content.get('regex')) } for content, _ in ((entry['details']['tokens'][e], handled_tokens.add(e)) for e in v['group']) ] @@ -94,7 +103,7 @@ def get_apprise_services() -> List[Dict[str, Union[str, Dict[str, list]]]]: 'prefix': v.get('prefix'), 'min': v.get('min'), 'max': v.get('max'), - 'regex': v.get('regex') + 'regex': process_regex(v.get('regex')) }) } for k, v in @@ -123,7 +132,7 @@ def get_apprise_services() -> List[Dict[str, Union[str, Dict[str, list]]]]: } if v['type'] == 'bool' else { 'min': v.get('min'), 'max': v.get('max'), - 'regex': v.get('regex') + 'regex': process_regex(v.get('regex')) }) } for k, v in diff --git a/frontend/static/js/notification.js b/frontend/static/js/notification.js index 318a8bf..c73ef30 100644 --- a/frontend/static/js/notification.js +++ b/frontend/static/js/notification.js @@ -196,8 +196,8 @@ function testService() { [...document.querySelectorAll('#add-service-window > input:not([data-regex=""])[data-regex]')] .filter(el => !new RegExp ( - el.dataset.regex.split('').reverse().join('').split(',').slice(1).join(',').split('').reverse().join(''), - el.dataset.regex.split('').reverse().join('').split(',')[0] + el.dataset.regex.split(',').slice(0, el.dataset.regex.split(',').length-1).join(','), + el.dataset.regex.split(',')[el.dataset.regex.split(',').length-1] ).test(el.value) ); if (faulty_inputs.length > 0) { @@ -594,8 +594,8 @@ function addService() { [...document.querySelectorAll('#add-service-window > input:not([data-regex=""])[data-regex]')] .filter(el => !new RegExp ( - el.dataset.regex.split('').reverse().join('').split(',').slice(1).join(',').split('').reverse().join(''), - el.dataset.regex.split('').reverse().join('').split(',')[0] + el.dataset.regex.split(',').slice(0, el.dataset.regex.split(',').length-1).join(','), + el.dataset.regex.split(',')[el.dataset.regex.split(',').length-1] ).test(el.value) ); if (faulty_inputs.length > 0) {