diff --git a/requirements_test.txt b/requirements_test.txt index 98a6b1b..58262af 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -1,5 +1,6 @@ pytest selenium +blinker<1.8.0 selenium-wire chromedriver-autoinstaller requests diff --git a/src/ansibleguy-webui/aw/api_endpoints/alert.py b/src/ansibleguy-webui/aw/api_endpoints/alert.py index 7502b7c..19207ec 100644 --- a/src/ansibleguy-webui/aw/api_endpoints/alert.py +++ b/src/ansibleguy-webui/aw/api_endpoints/alert.py @@ -14,8 +14,8 @@ class BaseAlertWriteRequest(BaseResponse): # NOTE: not using modelserializer because issues with DRF and PUT unique constraints name = serializers.CharField(required=True) - alert_type = serializers.IntegerField() - condition = serializers.IntegerField() + alert_type = serializers.IntegerField(required=False) + condition = serializers.IntegerField(required=False) jobs = serializers.ListSerializer(child=serializers.IntegerField(), required=False) jobs_all = serializers.BooleanField() # todo: require alert to be provided if alert-type is plugin @@ -181,8 +181,10 @@ class Meta: condition_name = serializers.CharField() -class AlertUserWriteRequest(BaseAlertWriteRequest): - user = serializers.IntegerField(required=True) +class AlertUserCreateRequest(serializers.ModelSerializer): + class Meta: + model = AlertUser + fields = AlertUser.api_fields_write class APIAlertUser(GenericAPIView): @@ -204,14 +206,14 @@ def get(request): ) @extend_schema( - request=AlertUserWriteRequest, + request=AlertUserCreateRequest, responses=api_docs_post('Alert'), summary='Create a new Alert.', operation_id='alert_user_create', ) def post(self, request): user = get_api_user(request) - serializer = AlertUserWriteRequest(data=request.data) + serializer = AlertUserCreateRequest(data=request.data) if not serializer.is_valid(): return Response( @@ -264,14 +266,14 @@ def get(request, alert_id: int): ) @extend_schema( - request=AlertUserWriteRequest, + request=BaseAlertWriteRequest, responses=api_docs_put('Alert'), summary='Modify an Alert.', operation_id='alert_user_edit', ) def put(self, request, alert_id: int): user = get_api_user(request) - serializer = AlertUserWriteRequest(data=request.data) + serializer = BaseAlertWriteRequest(data=request.data) if not serializer.is_valid(): return Response( @@ -333,6 +335,12 @@ class Meta: condition_name = serializers.CharField() +class AlertGlobalCreateRequest(serializers.ModelSerializer): + class Meta: + model = AlertGlobal + fields = AlertGlobal.api_fields_write + + class APIAlertGlobal(GenericAPIView): http_method_names = ['get', 'post'] serializer_class = AlertGlobalReadResponse @@ -350,7 +358,7 @@ def get(request): return Response([AlertGlobalReadResponse(instance=alert).data for alert in AlertGlobal.objects.all()]) @extend_schema( - request=AlertGlobalReadResponse, + request=AlertGlobalCreateRequest, responses=api_docs_post('Alert'), summary='Create a new Alert.', operation_id='alert_global_create', @@ -363,7 +371,7 @@ def post(self, request): status=403, ) - serializer = BaseAlertWriteRequest(data=request.data) + serializer = AlertGlobalCreateRequest(data=request.data) if not serializer.is_valid(): return Response( @@ -487,10 +495,16 @@ class Meta: group_name = serializers.CharField() -class AlertGroupWriteRequest(BaseAlertWriteRequest): +class AlertGrouUpdateRequest(BaseAlertWriteRequest): group = serializers.IntegerField(required=True) +class AlertGroupCreateRequest(serializers.ModelSerializer): + class Meta: + model = AlertGroup + fields = AlertGroup.api_fields_write + + class APIAlertGroup(GenericAPIView): http_method_names = ['get', 'post'] serializer_class = AlertGroupReadResponse @@ -510,7 +524,7 @@ def get(request): ) @extend_schema( - request=AlertGroupWriteRequest, + request=AlertGroupCreateRequest, responses=api_docs_post('Alert'), summary='Create a new Alert.', operation_id='alert_group_create', @@ -523,7 +537,7 @@ def post(self, request): status=403, ) - serializer = AlertGroupWriteRequest(data=request.data) + serializer = AlertGroupCreateRequest(data=request.data) if not serializer.is_valid(): return Response( @@ -575,7 +589,7 @@ def get(request, alert_id: int): ) @extend_schema( - request=AlertGroupWriteRequest, + request=AlertGrouUpdateRequest, responses=api_docs_put('Alert'), summary='Modify an Alert.', operation_id='alert_group_edit', @@ -588,7 +602,7 @@ def put(self, request, alert_id: int): status=403, ) - serializer = AlertGroupWriteRequest(data=request.data) + serializer = AlertGrouUpdateRequest(data=request.data) if not serializer.is_valid(): return Response( diff --git a/src/ansibleguy-webui/aw/config/navigation.py b/src/ansibleguy-webui/aw/config/navigation.py index dc014bd..3bf14aa 100644 --- a/src/ansibleguy-webui/aw/config/navigation.py +++ b/src/ansibleguy-webui/aw/config/navigation.py @@ -29,7 +29,7 @@ 'login': False, }, 'DON': { - 'element': '', + 'element': '', 'url': 'https://ko-fi.com/ansible0guy', 'login': False, }, diff --git a/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_email.py b/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_email.py index 59da52e..3fff73d 100644 --- a/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_email.py +++ b/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_email.py @@ -78,7 +78,6 @@ def alert_plugin_email(user: USERS, stats: list[dict], execution: JobExecution): port = 25 try: - print(f"Alert user {user.username} via email ({server}:{port} => {user.email})") ssl_context = ssl.create_default_context() if config['mail_ssl_verify']: ssl_context.check_hostname = True diff --git a/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_wrapper.py b/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_wrapper.py index 921ffb0..422ff57 100644 --- a/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_wrapper.py +++ b/src/ansibleguy-webui/aw/execute/alert_plugin/plugin_wrapper.py @@ -5,4 +5,4 @@ def alert_plugin_wrapper(alert: BaseAlert, user: USERS, stats: [JobExecutionResultHost], execution: JobExecution): # implement plugin interface - print(f"Alert user {user.username} via plugin {alert.plugin.executable}") + pass diff --git a/src/ansibleguy-webui/aw/templates/body.html b/src/ansibleguy-webui/aw/templates/body.html index ae5c40b..98664e2 100644 --- a/src/ansibleguy-webui/aw/templates/body.html +++ b/src/ansibleguy-webui/aw/templates/body.html @@ -28,7 +28,7 @@