Browse Source

ref: properly genericize AlertRuleSerializer (#72887)

<!-- Describe your PR here. -->
anthony sottile 8 months ago
parent
commit
263aaefc69

+ 5 - 1
src/sentry/api/serializers/rest_framework/base.py

@@ -2,6 +2,7 @@ from __future__ import annotations
 
 from typing import TypeVar
 
+from django.db.models import Model
 from django.utils.text import re_camel_case
 from rest_framework.fields import empty
 from rest_framework.serializers import ModelSerializer, Serializer
@@ -61,7 +62,10 @@ class CamelSnakeSerializer(Serializer[T]):
         return convert_dict_key_case(errors, snake_to_camel_case)
 
 
-class CamelSnakeModelSerializer(ModelSerializer):
+M = TypeVar("M", bound=Model)
+
+
+class CamelSnakeModelSerializer(ModelSerializer[M]):
     """
     Allows parameters to be defined in snake case, but passed as camel case.
 

+ 1 - 1
src/sentry/incidents/serializers/alert_rule.py

@@ -53,7 +53,7 @@ from .alert_rule_trigger import AlertRuleTriggerSerializer
 logger = logging.getLogger(__name__)
 
 
-class AlertRuleSerializer(CamelSnakeModelSerializer):
+class AlertRuleSerializer(CamelSnakeModelSerializer[AlertRule]):
     """
     Serializer for creating/updating an alert rule. Required context:
      - `organization`: The organization related to this alert rule.