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

Closes #5950: Use TimeZoneSerializerField from django-timezone-field

Jeremy Stretch 5 лет назад
Родитель
Сommit
cb9478e0ea
3 измененных файлов с 4 добавлено и 20 удалено
  1. 3 3
      netbox/dcim/api/serializers.py
  2. 1 2
      netbox/netbox/api/__init__.py
  3. 0 15
      netbox/netbox/api/fields.py

+ 3 - 3
netbox/dcim/api/serializers.py

@@ -3,6 +3,7 @@ from django.contrib.contenttypes.models import ContentType
 from drf_yasg.utils import swagger_serializer_method
 from rest_framework import serializers
 from rest_framework.validators import UniqueTogetherValidator
+from timezone_field.rest_framework import TimeZoneSerializerField
 
 from dcim.choices import *
 from dcim.constants import *
@@ -13,13 +14,12 @@ from dcim.models import (
     PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site,
     VirtualChassis,
 )
-from dcim.utils import decompile_path_node
 from extras.api.customfields import CustomFieldModelSerializer
 from extras.api.serializers import TaggedObjectSerializer
 from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer
 from ipam.models import VLAN
 from netbox.api import (
-    ChoiceField, ContentTypeField, SerializedPKRelatedField, TimeZoneField, ValidatedModelSerializer,
+    ChoiceField, ContentTypeField, SerializedPKRelatedField, ValidatedModelSerializer,
     WritableNestedSerializer,
 )
 from tenancy.api.nested_serializers import NestedTenantSerializer
@@ -98,7 +98,7 @@ class SiteSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
     status = ChoiceField(choices=SiteStatusChoices, required=False)
     region = NestedRegionSerializer(required=False, allow_null=True)
     tenant = NestedTenantSerializer(required=False, allow_null=True)
-    time_zone = TimeZoneField(required=False)
+    time_zone = TimeZoneSerializerField(required=False)
     circuit_count = serializers.IntegerField(read_only=True)
     device_count = serializers.IntegerField(read_only=True)
     prefix_count = serializers.IntegerField(read_only=True)

+ 1 - 2
netbox/netbox/api/__init__.py

@@ -1,4 +1,4 @@
-from .fields import ChoiceField, ContentTypeField, SerializedPKRelatedField, TimeZoneField
+from .fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
 from .routers import OrderedDefaultRouter
 from .serializers import BulkOperationSerializer, ValidatedModelSerializer, WritableNestedSerializer
 
@@ -9,7 +9,6 @@ __all__ = (
     'ContentTypeField',
     'OrderedDefaultRouter',
     'SerializedPKRelatedField',
-    'TimeZoneField',
     'ValidatedModelSerializer',
     'WritableNestedSerializer',
 )

+ 0 - 15
netbox/netbox/api/fields.py

@@ -104,21 +104,6 @@ class ContentTypeField(RelatedField):
         return f"{obj.app_label}.{obj.model}"
 
 
-class TimeZoneField(serializers.Field):
-    """
-    Represent a pytz time zone.
-    """
-    def to_representation(self, obj):
-        return obj.zone if obj else None
-
-    def to_internal_value(self, data):
-        if not data:
-            return ""
-        if data not in pytz.common_timezones:
-            raise ValidationError('Unknown time zone "{}" (see pytz.common_timezones for all options)'.format(data))
-        return pytz.timezone(data)
-
-
 class SerializedPKRelatedField(PrimaryKeyRelatedField):
     """
     Extends PrimaryKeyRelatedField to return a serialized object on read. This is useful for representing related