Просмотр исходного кода

refactor(api): properly use NON_FIELD_ERRORS_KEY

Peter Thomassen 2 лет назад
Родитель
Сommit
7b010ba2f4
2 измененных файлов с 9 добавлено и 4 удалено
  1. 5 3
      api/desecapi/serializers/records.py
  2. 4 1
      api/desecapi/views/dyndns.py

+ 5 - 3
api/desecapi/serializers/records.py

@@ -170,7 +170,9 @@ class RRsetListSerializer(serializers.ListSerializer):
             # Validate data types before using anything from it
             if not isinstance(item, dict):
                 errors[idx].update(
-                    non_field_errors=f"Expected a dictionary, but got {type(item).__name__}."
+                    {
+                        api_settings.NON_FIELD_ERRORS_KEY: f"Expected a dictionary, but got {type(item).__name__}."
+                    }
                 )
                 continue
             s, t = self._key(item)  # subname, type
@@ -216,7 +218,7 @@ class RRsetListSerializer(serializers.ListSerializer):
                 if len(data_indices) > 1:
                     raise serializers.ValidationError(
                         {
-                            "non_field_errors": [
+                            api_settings.NON_FIELD_ERRORS_KEY: [
                                 "Same subname and type as in position(s) %s, but must be unique."
                                 % ", ".join(map(str, data_indices - {idx}))
                             ]
@@ -236,7 +238,7 @@ class RRsetListSerializer(serializers.ListSerializer):
                         )
                         raise serializers.ValidationError(
                             {
-                                "non_field_errors": [
+                                api_settings.NON_FIELD_ERRORS_KEY: [
                                     f"RRset with conflicting type present: {types_by_position}."
                                     " (No other RRsets are allowed alongside CNAME.)"
                                 ]

+ 4 - 1
api/desecapi/views/dyndns.py

@@ -6,6 +6,7 @@ from rest_framework import generics
 from rest_framework.authentication import get_authorization_header
 from rest_framework.exceptions import NotFound, ValidationError
 from rest_framework.response import Response
+from rest_framework.settings import api_settings
 
 from desecapi import metrics
 from desecapi.authentication import (
@@ -168,7 +169,9 @@ class DynDNS12UpdateView(generics.GenericAPIView):
             if any(
                 any(
                     getattr(non_field_error, "code", "") == "unique"
-                    for non_field_error in err.get("non_field_errors", [])
+                    for non_field_error in err.get(
+                        api_settings.NON_FIELD_ERRORS_KEY, []
+                    )
                 )
                 for err in e.detail
             ):