Update django to 1.11.14
Update django to 1.11.14 LTS and related packages to latest
versions.
For the new version, the following changes had to be done:
- timezone.UTC() was replaced by timezone.utc
- rest_framework.filters.FilterSet was replaced by
django_filters.rest_framework.FilterSet
(http://www.django-rest-framework.org/topics/3.6-announcement/#djangofilterbackend)
- rest_framework.filters.DjangoFilterBackend was replaced by
django_filters.rest_framework.DjangoFilterBackend
(http://www.django-rest-framework.org/topics/3.6-announcement/#djangofilterbackend)
- django_filters.rest_framework.DateFilter which is now used
has a 'field_name' parameter instead of a 'name' parameter
which was used in django_filters.DateFilter
- ModelSerializers need an explicit call for fields = '__all__'
(http://www.django-rest-framework.org/api-guide/serializers/#specifying-which-fields-to-include)
Further, the affected code has been cleaned up and documented to
match the expectations of the linters.
Issue: HIC-164
Change-Id: Icf10d211860f7f055a63b9b8e680832753a0e149
diff --git a/crashreports/serializers.py b/crashreports/serializers.py
index 4d88163..732e595 100644
--- a/crashreports/serializers.py
+++ b/crashreports/serializers.py
@@ -1,19 +1,25 @@
+"""Serializers for Crashreport-related models."""
from django.utils import timezone
+from django.core.exceptions import ObjectDoesNotExist
from rest_framework import serializers
from rest_framework.exceptions import NotFound
-from crashreports.models import Crashreport
-from crashreports.models import Device
-from crashreports.models import HeartBeat
-from crashreports.models import LogFile
-
from rest_framework import permissions
+
+from crashreports.models import (
+ Crashreport, Device, HeartBeat, LogFile
+)
from crashreports.permissions import user_is_hiccup_staff
class PrivateField(serializers.ReadOnlyField):
+ """Class for making a field private.
+
+ The private attribute can then only be read by Hiccup staff members
+ """
def get_attribute(self, instance):
- """
+ """Get the private attribute.
+
Given the *outgoing* object instance, return the primitive value
that should be used for this field.
"""
@@ -23,6 +29,8 @@
class CrashReportSerializer(serializers.ModelSerializer):
+ """Serializer for CrashReport instances."""
+
permission_classes = (permissions.AllowAny,)
logfiles = serializers.HyperlinkedRelatedField(
read_only=True,
@@ -32,16 +40,24 @@
uuid = serializers.CharField(max_length=64)
id = PrivateField()
device_local_id = serializers.IntegerField(required=False)
- date = serializers.DateTimeField(default_timezone=timezone.UTC())
+ date = serializers.DateTimeField(default_timezone=timezone.utc)
- class Meta:
+ class Meta: # noqa: D106
model = Crashreport
exclude = ('device',)
def create(self, validated_data):
+ """Create a crashreport.
+
+ Args:
+ validated_data: Data of the crashreport, excluding the device
+
+ Returns: The created report
+
+ """
try:
device = Device.objects.get(uuid=validated_data['uuid'])
- except:
+ except ObjectDoesNotExist:
raise NotFound(detail="uuid does not exist")
validated_data.pop('uuid', None)
report = Crashreport(**validated_data)
@@ -51,20 +67,30 @@
class HeartBeatSerializer(serializers.ModelSerializer):
+ """Serializer for HeartBeat instances."""
+
permission_classes = (permissions.IsAuthenticated,)
uuid = serializers.CharField(max_length=64)
id = PrivateField()
device_local_id = serializers.IntegerField(required=False)
- date = serializers.DateTimeField(default_timezone=timezone.UTC())
+ date = serializers.DateTimeField(default_timezone=timezone.utc)
- class Meta:
+ class Meta: # noqa: D106
model = HeartBeat
exclude = ('device',)
def create(self, validated_data):
+ """Create a heartbeat report.
+
+ Args:
+ validated_data: Data of the heartbeat, excluding the device
+
+ Returns: The created heartbeat
+
+ """
try:
device = Device.objects.get(uuid=validated_data['uuid'])
- except:
+ except ObjectDoesNotExist:
raise NotFound(detail="uuid does not exist")
validated_data.pop('uuid', None)
heartbeat = HeartBeat(**validated_data)
@@ -74,24 +100,31 @@
class LogFileSerializer(serializers.ModelSerializer):
+ """Serializer for LogFile instances."""
+
permission_classes = (permissions.IsAdminUser,)
- class Meta:
+ class Meta: # noqa: D106
model = LogFile
+ fields = '__all__'
class DeviceSerializer(serializers.ModelSerializer):
- permission_classes = (permissions.IsAdminUser,)
- board_date = serializers.DateTimeField(default_timezone=timezone.UTC())
- last_heartbeat = serializers.DateTimeField(default_timezone=timezone.UTC())
+ """Serializer for Device instances."""
- class Meta:
+ permission_classes = (permissions.IsAdminUser,)
+ board_date = serializers.DateTimeField(default_timezone=timezone.utc)
+ last_heartbeat = serializers.DateTimeField(default_timezone=timezone.utc)
+
+ class Meta: # noqa: D106
model = Device
+ fields = '__all__'
class DeviceCreateSerializer(DeviceSerializer):
+ """Serializer for creating Device instances."""
- class Meta:
+ class Meta: # noqa: D106
model = Device
fields = ('board_date', 'chipset')
extra_kwargs = {